如何利用Jfrog Artifactory的Helm Chart创建ACR仓库并更新AKS Pod
解决方案
1. 拉取并解析JFrog上的Helm Chart
先下载目标Helm包到本地:
curl -o abc-1.2-helm.tgz http://repository.test.com:8181/artifactory/compress-files/abc/abc-1.2-helm.tgz
解压后查看Chart内的镜像配置,确认当前使用的镜像地址:
tar zxf abc-1.2-helm.tgz && cd abc cat values.yaml
重点关注image.repository和image.tag字段,后续需要替换为ACR地址。
2. 创建ACR及目标镜像仓库
如果还没有ACR实例,先创建(替换my-resource-group和myacr为你的资源组和全局唯一的ACR名称):
az acr create --resource-group my-resource-group --name myacr --sku Basic --admin-enabled true
ACR会在推送镜像时自动创建abc-1.2仓库,若需提前创建执行:
az acr repository create --name myacr --repository abc-1.2
3. 迁移容器镜像到ACR
假设原Chart引用的镜像为old-registry/abc:1.2,执行以下步骤迁移:
# 拉取原镜像 docker pull old-registry/abc:1.2 # 打ACR标签 docker tag old-registry/abc:1.2 myacr.azurecr.io/abc-1.2:1.2 # 登录ACR并推送 az acr login --name myacr docker push myacr.azurecr.io/abc-1.2:1.2
验证镜像推送状态:
az acr repository show --name myacr --repository abc-1.2
4. 修改Helm Chart指向ACR镜像
编辑abc/values.yaml,替换镜像地址为ACR路径:
image: repository: myacr.azurecr.io/abc-1.2 tag: 1.2
可选:重新打包Chart(直接用解压目录部署也可以):
helm package abc
5. 配置AKS访问ACR权限
使用托管身份给AKS分配ACR拉取权限:
# 获取AKS节点资源组和身份ID AKS_NODE_RG=$(az aks show --name myaks --resource-group my-resource-group --query nodeResourceGroup -o tsv) AKS_PRINCIPAL_ID=$(az aks show --name myaks --resource-group my-resource-group --query identity.principalId -o tsv) # 分配AcrPull角色 az role assignment create --assignee $AKS_PRINCIPAL_ID --role AcrPull --scope $(az acr show --name myacr --resource-group my-resource-group --query id -o tsv)
6. 触发AKS滚动更新
若使用Helm部署:
直接升级现有Release,Helm会自动触发滚动更新:
helm upgrade abc-release ./abc --namespace your-namespace
若直接使用Deployment:
修改镜像地址触发更新:
kubectl set image deployment/abc-deployment abc-container=myacr.azurecr.io/abc-1.2:1.2 --namespace your-namespace
或编辑Deployment配置后保存:
kubectl edit deployment/abc-deployment --namespace your-namespace
7. 验证更新结果
确认新Pod正常运行并使用ACR镜像:
kubectl get pods -n your-namespace kubectl describe pod <target-pod-name> -n your-namespace | grep Image
内容的提问来源于stack exchange,提问作者Susheel Bhatt
相关产品推荐
相关产品推荐

