K8s 实战(6) - 从私有 Registry 拉取镜像

在 docker 中, 从私有 Registry 拉取, 或者向 私有 Registry 推送镜像, 需要先使用 docker login 登录. 登录后授权信息会保存在 ~/.docker/config.json 中.

同样在 k8s 集群中拉取镜像, 也需要进行授权.

创建授权令牌

授权令牌(Secret) 本质上和 ConfigMap 没有区别, 都是存储数据, 只不过 Secret 专用于存储密码等数据, 是默认加密存储的, 而且 Secret 有特殊的加载方式.

创建名为 XXX 的登录授权令牌:

1
2
3
4
5
kubectl create secret docker-registry XXX \
--docker-server=DOMAIN:5000 \
--docker-username=USERNAME \
--docker-password=PASSWORD \
--docker-email=EMAIL

检查令牌

1
2
kubectl get secret XXX --output=yaml
kubectl get secret XXX --output="jsonpath={.data.\.dockerconfigjson}" | base64 --decode

其中的内容, 与本地 docker 的 ~/.docker/config.json 格式类似.

使用令牌给 pod 授权

无论是 pod 或者 deployment, 授权的方法非常简单

1
2
3
4
5
---
containers:
- ...
imagePullSecrets:
- name: XXX

containers 同级配置 imagePullSecrets, 给出用到的授权 secret 列表.

参考: 从私有仓库拉取镜像

Donate - Support to make this site better.
捐助 - 支持我让我做得更好.