赞
踩
官方文档: Secret | Kubernetes
ImagePullSecrets的设置是kubernetes机制的另一亮点,习惯于直接使用Docker Pull来拉取公共镜像,但非所有容器镜像都是公开的。此外,并不是所有的镜像仓库都允许匿名拉取,也就是说需要身份认证;
kubernetes有一个secret记录类型,可用于配置镜像登陆凭证,secret的一个特定的类型:kubernetes.io/dockercfg 或者 kubernetes.io/dockerconfigjson。与所有kubernetes记录一样,Secrets通过名称被其他资源引用。此处是通过ImagePullSecrets来引用Secret的。
- # Docker Config 创建 Secret
-
- kubectl create secret docker-registry \
- harbor-secret \
- --docker-server=harbor.codemiracle.com \
- --docker-username=admin \
- --docker-password=Harbor12345
-
- kubectl create secret docker-registry <secret名字> \
- --docker-server=<镜像仓库服务器> \
- --docker-username=<用户名> \
- --docker-password=<密码> \
- --docker-email=<邮箱地址>
-
- # 使用 kubernetes.io/dockerconfigjson 类型的 Secret 来通过镜像仓库的身份验证
-
- 服务器上我们 docker login 一个镜像仓库,会生成一个文件:~/.docker/config.json>
-
- kubectl create secret generic <secret名字> \
- --from-file=.dockerconfigjson=<path/to/.docker/config.json> \
- --type=kubernetes.io/dockerconfigjson
-
- kubectl create secret generic harbor-secret \
- --from-file=.dockerconfigjson=~/.docker/config.json \
- --type=kubernetes.io/dockerconfigjson
kubectl get secrets
- apiVersion: v1
- kind: Pod
- metadata:
- name: private-reg
- spec:
- containers:
- - name: private-reg-container
- image: <your-private-image>
- imagePullSecrets:
- - name: harbor-secret
注意:secret需要各自添加下namespace,只针对各自的命名空间生效
- apiVersion: v1
- kind: Secret
- metadata:
- name: harbor-secret
- namespace: public
- data:
- .dockerconfigjson: UmVhbGx5IHJlYWxseSByZWVlZWVlZWVlZWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGx5eXl5eXl5eXl5eXl5eXl5eXl5eSBsbGxsbGxsbGxsbGxsbG9vb29vb29vb29vb29vb29vb29vb29vb29vb25ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubmdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2cgYXV0aCBrZXlzCg==
- type: kubernetes.io/dockerconfigjson
参考资料:
1.https://kubernetes.io/zh-cn/docs/concepts/containers/images/
2.https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/pull-image-private-registry/#registry-secret-existing-credentials
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。