AWS 中的带有 kops 的 Kubernetes - 如何将 IAM 策略附加到用于创建服务的 IAM 角色?

AWS 中的带有 kops 的 Kubernetes - 如何将 IAM 策略附加到用于创建服务的 IAM 角色?

学习在 AWS 中使用 Kops 进行 K8(我认为我在 AWS 区域没问题),我正在努力设置这篇中篇文章中描述的简单服务:部署服务后,我收到 IAM 权限错误(编辑过的帐号和域名):

 Warning  SyncLoadBalancerFailed  19m                  service-controller  Error syncing load balancer: failed to ensure load balancer: Error creating load balancer: "AccessDenied: User: arn:aws:sts::${AWS::Account}:assumed-role/masters.myfirstcluster.kops.${domain_name}/i-08a3ce916f7e03e55 is not authorized to perform: iam:CreateServiceLinkedRole on resource: arn:aws:iam::${AWS::Account}:role/aws-service-role/elasticloadbalancing.amazonaws.com/AWSServiceRoleForElasticLoadBalancing\n\tstatus code: 403, request id: c1a0598a-cd23-4e2a-9fd6-58904cbe76d5"

AWS IAM 角色由 kops 二进制文件 masters.myfirstcluster.kops 创建,已由 i-08a3ce916f7e03e55 接管,并且确实没有允许 API 请求的策略。该角色由 kops 二进制文件在安装时创建。

是否有 kops API 方法可以为角色设置所需的策略,或者是否需要通过 AWS API 执行此操作?

答案1

回答自己的问题:

有必要改变与主角色相关的策略(参见IAM 角色spec:),在密钥中添加以下部分kops edit cluster myfirstcluster.kops.${domain_name}

  additionalPolicies:
    master: |
      [
        {
          "Effect": "Allow",
          "Action": [ "iam:CreateServiceLinkedRole"],
          "Resource": ["*"]
        }
      ]

相关内容