说明
imagePullSecret资源将Secret提供的密码传递给kubelet从而在拉取镜像前完成必要的认证过程,简单说就是你的镜像仓库是私有的,每次拉取是需要认证的。
配置说明
创建docker-registry类型的Secret对象,并在定义pod资源时明确通过”imagePullSecrets”字段来申明使用哪个私钥去认证;
创建docker-registry类型的Secret对象,然后把它添加到某个ServiceAccount对象中,使用了这个ServiceAccount对象创建出来的pod就自然而然通过认证获取到镜像;
第一种方式较为常见,简单记录一下。
配置过程
这里创建Secret对象有两种方式,各有千秋。
方式一:通过命令行直接创建Secret
kubectl create secret docker-registry <name> --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL
例子:
kubectl create secret docker-registry video-docker-redistry-key \
--docker-server=10.3.9.107:5000 \
--docker-username='gsafety' \
--docker-password='123456'
查看key
kubectl get secret
NAME TYPE DATA AGE
default-token-d9phm kubernetes.io/service-account-token 3 19h
video-docker-redistry-key kubernetes.io/dockerconfigjson 1 2s
最后在yaml文件中使用这个创建出来的Secret:
apiVersion: v1
kind: Pod
metadata:
name: foo
namespace: awesomeapps
spec:
containers:
- name: foo
image: janedoe/awesomeapp:v1
imagePullSecrets:
- name: xxx-key
方式二:通过现存的docker认证文件来创建Secret
kubectl create secret generic xxx-key \
--from-file=.dockerconfigjson=/root/.docker/config.json> \
--type=kubernetes.io/dockerconfigjson
注意:config.json文件需要在主机上通过docker login 的方式登录后,才会生成。这种方式有一个好处,就是如果有多个镜像仓库,都先存在于一个config.json文件中,然后通过命令打入Secret。
版权声明:本文为qq_44912603原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。