在使用Kubernetes部署应用程序时,大概率会使用私有docker仓库。其实使用私有仓库的逻辑还是比较简单的,只需要登录私有仓库并pull镜像即可。但是在操作上还是不那么直观的。
设置私有仓库登录信息的方式有两种,导入配置文件docker/config.json和使用命令生成登录信息。这些信息记录在secrets中。
导入配置文件的方式你需要使用docker login命令登录你的私有仓库,登录成功之后会在~/.docker/config.json找到登录成功的配置文件。使用命令行导入配置文件即可
1 | kubectl create secret generic regcred \ |
命令行生成登录信息的方式就比较简单了。直接执行命令,kubernetes会自动生成登录信息。
1 | kubectl create secret docker-registry regcred --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email> |
使用时在pod的yaml中指定imagePullSecrets。
1 | apiVersion: v1 |
这里有一个问题是以后每次新增pod的时候都要配置这个属性,而且这个属性可能会随着环境变化而变化。查看文档可知,在sa上也有一个imagePullSecrets,kubernetes在拉取镜像时会读取这里的值。这样就可以不在pod中配置imagePullSecrets。
1 | kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "regcred"}]}' |
在登录信息发生变更的时候只要删除并重新创建secrets,保持名称一致。sa中记录的imagePullSecrets不需要改变。
1 | kubectl delete secrets regcred |