kubernetes - 后退拉取镜像“XYZ/customer-management/dev/72-kubernetes-setup:XYZ”
问题描述
我正在尝试使用 gitlab CI 自动构建和部署。为此,我添加了一些步骤,例如构建、测试、质量检查、审查和部署。目前我在部署时遇到问题,我正在创建 docker 映像并将这些映像推送到 azure 容器注册表中,然后我尝试使用 helm 在 azure kubernetes 上进行部署。我也添加了相同的入口。但由于某些问题,docker image 无法在 kubernetes 上提取图像并抛出错误 - 我的 gitlab ci 管道获得成功。 这是我用 .gitlab-ci.yml 文件编写的部署功能-
解决方案
您需要授予 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
推荐阅读
- javascript - 如何设置 Atom 编辑器以仅使用 react-native-community eslint-config?
- angularjs - 将 Vue 应用程序集成到 Angular js 应用程序中
- javascript - 使用 Javascript 处理 HTML 和 Swift 之间的交互
- c# - 如何比较两个文本并识别哪些词被添加和哪些被删除
- html - 我想将页脚设置到窗口底部,但它与我的其他 div 重叠?
- mongodb - MongoDB,NodeJs。由于目标机器主动拒绝,无法建立连接。:
- sql - 我需要将 SQL 中的所有活动分配给一个 ID,但目前每个活动都有三个 ID
- php - 如何制作显示所选 ID 的视图?
- php - 如何从 Laravel 5.8 中的动态按钮传递正确的数据
- html - 通过将鼠标悬停在子元素上来影响父元素