Argocd Image Updater未更新AKS中Deployment的问题排查
在AKS环境中使用Argo CD Image Updater时遇到异常:初始部署使用镜像v1.0.0,推送v1.0.1新版本后,Image Updater日志显示更新成功,但Deployment仍在使用v1.0.0版本镜像。
应用配置文件
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: develop-argo namespace: argocd finalizers: - resources-finalizer.argocd.argoproj.io annotations: argocd-image-updater.argoproj.io/image-list: sessionservice=acr.azurecr.io/session_micro argocd-image-updater.argoproj.io/sessionservice.update-strategy: semver argocd-image-updater.argoproj.io/sessionservice.pull-secret: pullsecret:argocd/acr argocd-image-updater.argoproj.io/write-back-method: argocd spec: project: default source: repo: abc/deployment.git targetRevision: development path: helm-charts/ helm: valueFiles: - values.yaml destination: server: 'https://kubernetes.default.svc' namespace: dev syncPolicy: automated: prune: false selfHeal: true
Argo CD Image Updater日志
level=info msg="Successfully updated image 'acr.azurecr.io/session_micro:v1.0.0' to 'acr.azurecr.io/session_micro:v1.0.1', but pending spec update (dry run=false)" alias=sessionservice application=develop-argo image_name=session_micro image_tag=v1.0.0 registry=acr.azurecr.io time="2024-10-08T16:37:56Z" level=debug msg="Using commit message: " time="2024-10-08T16:37:56Z" level=info msg="Committing 1 parameter update(s) for application develop-argo" application=develop-argo time="2024-10-08T16:37:56Z" level=info msg="Successfully updated the live application spec" application=develop-argo time="2024-10-08T16:37:56Z" level=info msg="Processing results: applications=1 images_considered=1 images_skipped=0 images_updated=1 errors=0"
检查Argo CD应用同步状态
执行argocd app get develop-argo或登录Argo CD UI,确认应用是否处于OutOfSync状态。即使配置了selfHeal: true,如果同步触发延迟或Git仓库配置未正确更新,也可能导致资源未同步。验证Live Spec是否真的更新
执行argocd app get develop-argo --show-manifest查看应用的实时清单,检查镜像版本是否已变为v1.0.1。如果实时清单已更新但Deployment仍用旧版本,说明Argo CD同步机制未生效。补充Helm字段映射注解
当前配置未指定Image Updater需要更新的Helm values字段,导致工具无法正确定位镜像配置。假设你的values.yaml中镜像配置如下:image: repository: acr.azurecr.io/session_micro tag: v1.0.0需要给Application添加以下注解:
argocd-image-updater.argoproj.io/sessionservice.helm.image-name: image.repository argocd-image-updater.argoproj.io/sessionservice.helm.image-tag: image.tag检查Argo CD同步权限与日志
执行argocd app logs develop-argo查看同步日志,确认是否有权限更新Deployment资源。selfHeal生效的前提是Argo CD服务账号具备目标命名空间的资源修改权限。验证镜像拉取有效性
在AKS节点执行crictl pull acr.azurecr.io/session_micro:v1.0.1测试镜像拉取,或查看Pod事件日志kubectl describe pod <pod-name> -n dev,确认是否因拉取权限问题导致Pod无法使用新镜像。
内容的提问来源于stack exchange,提问作者Karikaaalan

