我在给Spinnaker设置ECR权限时遇到了麻烦。
后台:我在EKS集群上使用helm安装了spinnaker,并确认该集群具有必要的ECR权限(通过在clouddriver吊舱中手动运行ECR命令)。我按照这里的说明设置Spinnaker+ECR:https://www.spinnaker.io/setup/install/providers/docker-registry/
发布:当我运行:
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://'"我得到以下输出:
+ 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.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"。此输出仅用于此简化命令。任何关于如何调试这方面的建议都将不胜感激。
发布于 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的学分
发布于 2020-03-04 03:37:56
我还在AKS上安装了Spinnaker,我所做的就是使用具有正确AWS IAM策略的AWS管理用户:*我可以直接访问ECR存储库。我认为基于java的hal不会在--password-command中执行Bash命令
{“版本”:"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“,”效果“:”允许“}
https://stackoverflow.com/questions/59003176
复制相似问题