我在Kubernetes集群内创建了秘密,用于从私有仓库中拉取镜像,并将其添加到 helm values.yml中。
部署启动后(helm install chart /chart
)我看到舵机部署一直超时崩溃。
"kubectl describe pod "给我显示了一个错误: "imagePullBackoff "和 "wrong credentials"。"imagePullBackoff" 和 "wrong credentials".
同时,如果要部署相同的应用程序与 kubectl apply -f deployment.yml
文件,这个秘密的工作与预期的一样,图像下载没有任何问题,部署成功。
问题是如何强制这个秘密与舵机图一起工作?
试着用这个命令创建秘密。
kubectl create secret docker-registry mysecret --docker-server=<docker-repo> --docker-username=<docker-username> --docker-password=<docker-password> --docker-email=<email>
(在上面的命令中提供你各自的输入)
来自舵机文件
首先,假设凭证在values.yaml文件中是这样定义的。
imageCredentials:
registry: quay.io
username: someone
password: sillyness
然后,我们定义我们的帮助模板如下。
{{- define "imagePullSecret" }}
{{- printf "{\"auths\": {\"%s\": {\"auth\": \"%s\"}}}" .Values.imageCredentials.registry (printf "%s:%s" .Values.imageCredentials.username .Values.imageCredentials.password | b64enc) | b64enc }}
{{- end }}
最后,我们在一个更大的模板中使用帮助模板来创建Secret清单。
apiVersion: v1
kind: Secret
metadata:
name: myregistrykey
type: kubernetes.io/dockerconfigjson
data:
.dockerconfigjson: {{ template "imagePullSecret" . }}
在部署中
containers:
- name: private-reg-container
image: <your-private-image>
imagePullSecrets:
- name: myregistrykey