AWS EKS私有子网Argo Workflow镜像拉取问题及ECR配置咨询
解决方案:将argosay镜像迁移至私有ECR并配置Argo全局引用
当然可以把argoproj/argosay:v2镜像上传到你的AWS私有ECR,再通过修改Argo Workflows的install.yaml配置全局引用这个私有镜像,彻底解决无公网环境下的镜像拉取失败问题。
1. 把argosay镜像推送到私有ECR
找一台能连公网的机器,执行以下命令:
- 拉取公网的argosay镜像:
docker pull argoproj/argosay:v2 - 给镜像打上私有ECR的标签(把
<ECR账户ID>和<AWS区域>换成你自己的信息):docker tag argoproj/argosay:v2 <ECR账户ID>.dkr.ecr.<AWS区域>.amazonaws.com/argosay:v2 - 登录你的私有ECR仓库:
aws ecr get-login-password --region <AWS区域> | docker login --username AWS --password-stdin <ECR账户ID>.dkr.ecr.<AWS区域>.amazonaws.com - 把镜像推送到ECR:
docker push <ECR账户ID>.dkr.ecr.<AWS区域>.amazonaws.com/argosay:v2
2. 修改Argo配置文件引用私有镜像
打开你的install.yaml,找到workflow-controller-configmap这个ConfigMap,在data.config里添加默认镜像配置,替换成你的私有ECR镜像地址:
apiVersion: v1 kind: ConfigMap metadata: name: workflow-controller-configmap namespace: argo data: config: | containerRuntimeExecutor: emissary # 替换成你的私有ECR argosay镜像地址 defaultImage: <ECR账户ID>.dkr.ecr.<AWS区域>.amazonaws.com/argosay:v2
另外,如果你的工作流定义里直接写了argoproj/argosay:v2,也要把这些地方的镜像地址改成私有ECR的地址。
3. 重新部署Argo Workflows
用修改后的配置更新Argo部署:
kubectl apply -f install.yaml -n argo
做完这些操作后,Argo运行需要argosay镜像的步骤时,就会从你的私有ECR拉取镜像,不会再出现ImagePullBackOff错误了。
内容的提问来源于stack exchange,提问作者ashutosh patil
相关产品推荐
相关产品推荐

