私は、特定のポリシーでサービスロールを作成するように指示するEKSクラスターを起動するためのドキュメントに従いました。
https://docs.aws.Amazon.com/eks/latest/userguide/eks-ug.pdf
To create your Amazon EKS service role
1. Open the IAM console at https://console.aws.Amazon.com/iam/.
2. Choose Roles, then Create role.
3. Choose EKS from the list of services, then Allows Amazon EKS to manage your clusters on your behalf for your use case, then Next: Permissions.
4. Choose Next: Review.
5. For Role name, enter a unique name for your role, such as eksServiceRole, then choose Create role.
基本的なHello Worldアプリを作成すると、AccessDeniedエラーがスローされます。
Error creating load balancer (will retry): failed to ensure load balancer for service default/nginx:
AccessDenied: User: arn:aws:sts::*************:assumed-role/eks-service-role/************* is not authorized to perform: iam:CreateServiceLinkedRole on resource: arn:aws:iam::*************:role/aws-service-role/elasticloadbalancing.amazonaws.com/AWSServiceRoleForElasticLoadBalancing
追加された2つのポリシー(AmazonEKSClusterPolicy、AmazonEKSServicePolicy)には、iam:CreateServiceLinkedRoleアクションが許可されていません。ガイドで定義されているポリシーの外にこれを追加することになっていますか?それとも、EKSポリシーに含める必要があるのでしょうか?
EKSユーザーガイドでは、EKSクラスターを作成する前にAWSアカウントにロードバランサーを作成しているため、既存のAWSServiceRoleForElasticLoadBalancingサービスロールがAWS IAM。
You don't need to manually create the AWSServiceRoleForElasticLoadBalancing role. Elastic Load Balancing creates this role for you when you create a load balancer.
EKSがこれを試みているため、デフォルトのポリシーを使用してアクセス拒否の例外が発生します。
EKSクラスターの作成前にサービスにリンクされたロールを明示的に作成するその他のオプションには、次のものがあります。
AWS CLI
aws iam create-service-linked-role --aws-service-name "elasticloadbalancing.amazonaws.com"
テラフォーム
resource "aws_iam_service_linked_role" "elasticloadbalancing" {
aws_service_name = "elasticloadbalancing.amazonaws.com"
}
または、UIコンソールからロードバランサーを手動で作成します。
プロビジョニングオプションに関係なく、AWS IAMで次のロールが表示されたときに機能することを知っておく必要があります
arn:aws:iam::<ACCOUNT_ID>:role/aws-service-role/elasticloadbalancing.amazonaws.com/AWSServiceRoleForElasticLoadBalancing
このポリシーをEKSロールに追加することで機能しました。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "iam:CreateServiceLinkedRole",
"Resource": "arn:aws:iam::*:role/aws-service-role/*"
},
{
"Effect": "Allow",
"Action": [
"ec2:DescribeAccountAttributes"
],
"Resource": "*"
}
]
}