Azure Kubernetes 服务:即使在 CD 管道中添加了 ImagePullSecret,图像拉取错误(身份验证)
Azure Kubernetes Service: Image Pull Error (Authentication) even though ImagePullSecret was added in CD pipeline
在我的 Azure DevOps
中,我通过 "Other" 选项(用户名和密码)添加了一个 Docker Registry Service Connection
。
当通过 docker compose
推送图像时,此服务连接在我的 CI Pipeline
中有效。
但是在我的 CD Pipeline
(发布)管道中,当我在 Deploy to Kubernetes Task
.
的机密部分添加 Docker Registry Service Connection
时
在 Azure DevOps
中,Deploy to Kubernetes Task
已成功处理。但是在集群中,来自我的 Azure Container Registry
的图像的 pods 显示以下错误:
Failed to pull image "xxx.azurecr.io/service.api:latest": [rpc error:
code = Unknown desc = Error response from daemon: Get
https://xxx.azurecr.io/v2/service.api/manifests/latest: unauthorized:
authentication required, rpc error: code = Unknown desc = Error
response from daemon: Get
https://xxx.azurecr.io/v2/service.api/manifests/latest: unauthorized:
authentication required]
如何修复此错误?
您需要配置 kubernetes 以访问私有注册表(您将 Azure Devops 配置为这样做并不重要,它不会 'push' 图像到 kubernetes,它只是发出命令)。您可以按照 this link 进行操作。
简而言之,您需要这样做:
kubectl create secret docker-registry regcred --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>
然后将 ImagePullSecrets 添加到您的 pod 定义中:
apiVersion: v1
kind: Pod
metadata:
name: private-reg
spec:
containers:
- name: private-reg-container
image: <your-private-image>
imagePullSecrets:
- name: regcred
在我的 Azure DevOps
中,我通过 "Other" 选项(用户名和密码)添加了一个 Docker Registry Service Connection
。
当通过 docker compose
推送图像时,此服务连接在我的 CI Pipeline
中有效。
但是在我的 CD Pipeline
(发布)管道中,当我在 Deploy to Kubernetes Task
.
Docker Registry Service Connection
时
在 Azure DevOps
中,Deploy to Kubernetes Task
已成功处理。但是在集群中,来自我的 Azure Container Registry
的图像的 pods 显示以下错误:
Failed to pull image "xxx.azurecr.io/service.api:latest": [rpc error: code = Unknown desc = Error response from daemon: Get https://xxx.azurecr.io/v2/service.api/manifests/latest: unauthorized: authentication required, rpc error: code = Unknown desc = Error response from daemon: Get https://xxx.azurecr.io/v2/service.api/manifests/latest: unauthorized: authentication required]
如何修复此错误?
您需要配置 kubernetes 以访问私有注册表(您将 Azure Devops 配置为这样做并不重要,它不会 'push' 图像到 kubernetes,它只是发出命令)。您可以按照 this link 进行操作。
简而言之,您需要这样做:
kubectl create secret docker-registry regcred --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>
然后将 ImagePullSecrets 添加到您的 pod 定义中:
apiVersion: v1
kind: Pod
metadata:
name: private-reg
spec:
containers:
- name: private-reg-container
image: <your-private-image>
imagePullSecrets:
- name: regcred