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