首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spinnaker + ECR访问

Spinnaker + ECR访问
EN

Stack Overflow用户
提问于 2019-11-22 23:42:20
回答 2查看 787关注 0票数 0

我在给Spinnaker设置ECR权限时遇到了麻烦。

后台:我在EKS集群上使用helm安装了spinnaker,并确认该集群具有必要的ECR权限(通过在clouddriver吊舱中手动运行ECR命令)。我按照这里的说明设置Spinnaker+ECR:https://www.spinnaker.io/setup/install/providers/docker-registry/

发布:当我运行:

代码语言:javascript
复制
hal config provider docker-registry account add my-ecr-registry \
--address $ADDRESS \
--username AWS \
--password-command "aws --region us-west-2 ecr get-authorization-token --output text --query 'authorizationData[].authorizationToken' | base64 -d | sed 's/^AWS://'"

我得到以下输出:

代码语言:javascript
复制
+ Get current deployment
  Success
- Add the some-ecr-registry account
  Failure
Problems in default.provider.dockerRegistry.some-ecr-registry:
- WARNING Resolved Password was empty, missing dependencies for
  running password command?
- WARNING You have a supplied a username but no password.
! ERROR Unable to fetch tags from the docker repository: code, 400
  Bad Request
? Can the provided user access this repository?
- WARNING None of your supplied repositories contain any tags.
  Spinnaker will not be able to deploy any docker images.
? Push some images to your registry.
Problems in halconfig:
- WARNING There is a newer version of Halyard available (1.28.0),
  please update when possible
? Run 'sudo apt-get update && sudo apt-get install
  spinnaker-halyard -y' to upgrade
- Failed to add account some-ecr-registry for provider
  dockerRegistry.
  • 我已经确认aws安装在clouddriver吊舱上。我已经确认我可以直接从clouddriver吊舱中获得密码命令,并且它成功地返回了一个令牌。
  • 我还确认,如果手动生成ECR令牌和run hal config provider docker-registry account add my-ecr-registry --address $ADDRESS --username AWS --password-command "echo $MANUALLY_GENERATED_TOKEN",一切都可以正常工作。因此,密码命令有一些特定的错误,我不知道如何调试它。
  • 另一个奇怪的行为:如果我将密码命令简化为:hal config provider docker-registry account add some-ecr-registry --address $ADDRESS --username AWS --repositories code --password-command "aws --region us-west-2 ecr get-authorization-token",我会得到一个附加的输出,上面写着"- WARNING Password command returned non 0 return code stderr/stdout was:bash: aws: command not found"。此输出仅用于此简化命令。

任何关于如何调试这方面的建议都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2020-07-08 09:36:56

如果像我一样,您的ECR注册表位于另一个帐户中,则必须强制承担注册表所在的目标帐户的角色。

passwordCommand: read -r AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN <<< `aws sts assume-role --role-arn arn:aws:iam::<AWS_ACCOUNT>:role/<SPINNAKER ROLE_NAME> --query "[Credentials.AccessKeyId, Credentials.SecretAccessKey, Credentials.SessionToken]" --output text --role-session-name spinnakerManaged-w2`; export AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN; aws ecr get-authorization-token --region us-west-2 --output text --query 'authorizationData[].authorizationToken' --registry-ids <AWS_ACCOUNT> | base64 -d | sed 's/^AWS://'

https://github.com/spinnaker/spinnaker/issues/5374#issuecomment-607468678的学分

票数 1
EN

Stack Overflow用户

发布于 2020-03-04 03:37:56

我还在AKS上安装了Spinnaker,我所做的就是使用具有正确AWS IAM策略的AWS管理用户:*我可以直接访问ECR存储库。我认为基于java的hal不会在--password-command中执行Bash命令

  • 在spinnaker部署中设置AWS ECS提供者
  • 使用下面的AWS策略(SpinnakerManagingPolicy)附加到AWS MAnaging用户,以授予对MAnaging的访问权限。请根据您的需要更换AWS帐户。

{“版本”:"2012-10-17",“声明”:[{“效果”:“允许”,“行动”:"ec2:*","cloudformation:*","ecr:*“,“资源”:"*“},{”行动“:"sts:AssumeRole","Resource":"arn:aws:iam::123456789012:role/SpinnakerManagedRoleAccount1","arn:aws:iam::101121314157:role/SpinnakerManagedRoleAccount2","arn:aws:iam::202122232425:role/SpinnakerManagedRoleAccount3“,”效果“:”允许“}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59003176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档