学习在 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": ["*"]
}
]