使用私有Harbor镜像创建Kubernetes Deployment:如何指定镜像拉取密钥
部署私有Harbor镜像到Kubernetes的单命令方案
方案1:一键创建密钥+部署应用
不用单独创建密钥再写YAML,直接用一条组合命令搞定:
kubectl create secret docker-registry harbor-regcred \ --docker-server=<你的Harbor仓库地址> \ --docker-username=<Harbor用户名> \ --docker-password=<Harbor密码> \ --docker-email=<邮箱(可选)> \ && kubectl create deployment <部署名称> \ --image=<Harbor镜像完整路径>:<标签> \ --image-pull-secrets=harbor-regcred
这条命令会先创建名为harbor-regcred的镜像拉取密钥,紧接着创建Deployment并指定用这个密钥拉取私有镜像,全程不用碰YAML文件。
方案2:临时注入密钥(无需持久化保留密钥)
如果不想在集群里留下持久化的密钥,可以用dry-run生成Deployment的临时YAML,再通过工具修改后直接应用,同时创建临时密钥:
kubectl create deployment <部署名称> \ --image=<Harbor镜像完整路径>:<标签> \ --dry-run=client -o yaml | \ yq e '.spec.template.spec.imagePullSecrets += [{"name": "temp-harbor-regcred"}]' - | \ kubectl apply -f - \ && kubectl create secret docker-registry temp-harbor-regcred \ --docker-server=<你的Harbor仓库地址> \ --docker-username=<Harbor用户名> \ --docker-password=<Harbor密码> \ --docker-email=<邮箱(可选)>
注:这个方案需要提前安装yq工具来修改YAML内容。执行后K8s会先尝试拉取镜像,等临时密钥创建完成后自动重试成功。
额外注意
如果你的Harbor用的是自签名证书,还得让集群信任这个证书:要么把证书放到每个节点的/etc/docker/certs.d/<Harbor地址>目录,要么创建ConfigMap挂载到Pod的证书目录里,不然会出现证书验证失败的问题。
内容的提问来源于stack exchange,提问作者Mac
相关产品推荐
相关产品推荐

