如何配置Azure/k8s-deploy Action自动修改deployment.yml的镜像URL
解决方案
核心原因
azure/k8s-deploy Action的镜像自动替换依赖镜像名称前缀匹配规则,只有部署清单里的镜像名称和你传入images参数的镜像名称部分完全匹配时才会触发替换。同时你当前使用的v1是早期版本,存在镜像替换逻辑失效的已知问题。
操作步骤
- 调整deployment.yml配置
确保k8s/deployment.yml中对应容器的image字段,镜像名称部分和你传入的镜像名称保持一致。
举个例子,如果你传入的镜像为${{ env.REGISTRY_NAME }}.azurecr.io/${{ env.APP_NAME }}:${{ github.sha }},其中${{ env.APP_NAME }}为demo-app,那么deployment中image字段可以写为以下任意形式:
demo-app:latestcustom-registry.com/demo-app:v1.0.0
只要镜像名称部分为demo-app即可完成匹配替换。
如果你的deployment中存在多个容器,要么保证每个容器的镜像名称唯一,要么images参数传入的镜像顺序和deployment中containers数组的顺序一一对应。
- 升级Action版本
将你当前使用的v1版本升级为v4(当前最新稳定版),修改后的配置如下:
- uses: azure/k8s-deploy@v4 with: manifests: | k8s/deployment.yml k8s/service.yml images: | ${{ env.REGISTRY_NAME }}.azurecr.io/${{ env.APP_NAME }}:${{ github.sha }} imagepullsecrets: | ${{ env.SECRET }} namespace: ${{ env.NAMESPACE }}
结果验证
部署完成后执行命令kubectl get deployment <你的deployment名称> -n ${{ env.NAMESPACE }} -o jsonpath='{.spec.template.spec.containers[*].image}',即可确认镜像是否已经更新为预期版本。
内容的提问来源于stack exchange,提问作者Mabroor Ahmad
相关产品推荐
相关产品推荐

