首页 > 解决方案 > 后退拉取镜像“XYZ/customer-management/dev/72-kubernetes-setup:XYZ”

问题描述

我正在尝试使用 gitlab CI 自动构建和部署。为此,我添加了一些步骤,例如构建、测试、质量检查、审查和部署。目前我在部署时遇到问题,我正在创建 docker 映像并将这些映像推送到 azure 容器注册表中,然后我尝试使用 helm 在 azure kubernetes 上进行部署。我也添加了相同的入口。但由于某些问题,docker image 无法在 kubernetes 上提取图像并抛出错误 在此处输入图像描述 - 我的 gitlab ci 管道获得成功。 在此处输入图像描述 这是我用 .gitlab-ci.yml 文件编写的部署功能- 在此处输入图像描述

标签: kubernetesgitlab-cigitlab-ci-runnerazure-aks

解决方案


您需要授予 AKS 服务主体ACRPull权限。这将允许它在您不做任何事情的情况下静默地对 ACR 进行身份验证(您甚至不需要在 kubernetes 中创建 docker secret)。

AKS_RESOURCE_GROUP=myAKSResourceGroup
AKS_CLUSTER_NAME=myAKSCluster
ACR_RESOURCE_GROUP=myACRResourceGroup
ACR_NAME=myACRRegistry

# Get the id of the service principal configured for AKS
CLIENT_ID=$(az aks show --resource-group $AKS_RESOURCE_GROUP --name $AKS_CLUSTER_NAME --query "servicePrincipalProfile.clientId" --output tsv)

# Get the ACR registry resource id
ACR_ID=$(az acr show --name $ACR_NAME --resource-group $ACR_RESOURCE_GROUP --query "id" --output tsv)

# Create role assignment
az role assignment create --assignee $CLIENT_ID --role acrpull --scope $ACR_ID

https://docs.microsoft.com/bs-latn-ba/azure/container-registry/container-registry-auth-aks


推荐阅读