You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ArgoCD Image Updater连接AWS ECR失败:凭证脚本输出无效求助

解决ArgoCD Image Updater读取ECR镜像更新的凭证错误问题

问题核心

日志反复报错 Could not set registry endpoint credentials: invalid script output, must be single line with syntax <username>:<password>,根源在于ECR登录脚本存在两个关键问题:

  • AWS命令被换行拆分,导致语法错误,无法正确获取凭证token
  • 脚本输出格式不符合ArgoCD Image Updater要求的单行<username>:<password>规范

解决方案

1. 修复ECR登录脚本

修改authScript ConfigMap中的ecr-login.sh,确保命令完整且输出格式合规:

ecr-login.sh: |
    #!/bin/sh
    aws ecr --region "XXXXXXXX" get-authorization-token --output text --query 'authorizationData[].authorizationToken' | base64 -d

说明:

  • 将AWS命令合并为一行,避免换行导致的语法解析错误
  • base64 -d解码ECR返回的授权token,解码后输出为AWS:<token-string>,完全匹配<username>:<password>的格式要求

2. 确保脚本具备执行权限

修改ArgoCD Image Updater的Deployment配置,挂载auth-scripts卷时设置默认可执行权限:

volumeMounts:
  - name: auth-scripts
    mountPath: /scripts
    defaultMode: 0755

或通过init容器主动设置权限:

initContainers:
  - name: set-script-permissions
    image: busybox:latest
    command: ['chmod', '+x', '/scripts/ecr-login.sh']
    volumeMounts:
      - name: auth-scripts
        mountPath: /scripts

3. 验证脚本输出

进入ArgoCD Image Updater的Pod,手动执行脚本检查输出格式:

kubectl exec -n argocd <argocd-image-updater-pod-name> -- /scripts/ecr-login.sh

正常输出应为单行的AWS:<long-token-string>格式。

4. 确认Pod具备AWS权限

确保ArgoCD Image Updater的Pod有权限调用ecr:GetAuthorizationToken API:

  • 推荐使用IAM角色绑定(IRSA),为Pod关联具备对应权限的IAM角色
  • 若使用AWS凭证文件,需将凭证挂载到Pod的~/.aws/目录,并配置AWS_REGION环境变量

5. 重启ArgoCD Image Updater

修改配置后,重启Pod使变更生效:

kubectl rollout restart deployment argocd-image-updater -n argocd

内容的提问来源于stack exchange,提问作者Gabe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 22:42:03