用于EKS部署的跨帐户CodePipeline



我想从帐户A中的CodePipeline部署Kubernetes服务/部署yaml文件,而EKS集群在帐户b中

我尝试了以下方法。

On Account A:

  • 创建假设角色策略,并将其附加到与代码管道相关联的codebuild角色。
  • 从account A传入角色名,该角色策略具有几周的完全访问权限。

On Account B:

  • 创建一个访问EKS集群的角色。
  • 将上述角色arn添加到Kubernetes配置中,并具有system:masters权限。

Buildspec file from Account A:

version: 0.2
run-as: root
phases:
install:
commands:
- echo Installing app dependencies...
- curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.18.9/2020-11-02/bin/darwin/amd64/kubectl
- chmod +x ./kubectl
- mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin
- echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc
- source ~/.bashrc
- echo 'Check kubectl version'
- kubectl version --short --client
#- chmod +x eks_cicd/prereqs.sh
#- sh eks_cicd/prereqs.sh
build:
commands:
- echo Logging in to Amazon EKS...
- aws sts get-caller-identity
- aws eks --region $AWS_DEFAULT_REGION update-kubeconfig --name $AWS_CLUSTER_NAME --role-arn $ASSUMEROLE_ARN
- echo check config
- kubectl config view --minify
- echo check kubectl access
- kubectl get svc
post_build:
commands:
- kubectl apply -f ingress.yml
#- kubectl rollout restart -f eks_cicd/deployment.yaml

但是我得到这个错误:

An error occurred (ResourceNotFoundException) when calling the DescribeCluster operation: No cluster found for name: DevCluster.

据我所知,你方仍在账户a上。

codebuild的角色(角色1)

需要在a账户

有权限运行' aws weeks '的角色(角色2)

要通过'——role-arn ' (role 3)传递给weeks的角色

两者都需要在账户b中

点(1

角色1需要有iam: presumerole权限才能承担角色2。

您需要通过代码构建构建规范中的脚本积极地假设它,并在您的环境中设置以下变量。

  • 法律访问键
  • 秘密访问密钥
  • 会话令牌

请参阅这里的假设角色脚本示例:

https://dannys.cloud/create-reusable-assume-role-script-cross-account-aws

2

角色2的presumerolepolicydocument需要允许角色1承担它。

AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Principal:
AWS:
- !Sub arn:aws:iam::${DeployMentsAccountId}:role/${CodeBuildRoleName}
Action:
- sts:AssumeRole

然后需要允许运行weeks等

还需要角色3上的iam:PassRole

3

您的集群角色(角色3)(参见https://docs.aws.amazon.com/eks/latest/userguide/service_IAM_role.html)

相关内容

  • 没有找到相关文章

最新更新