この章では、ALB Ingress Controllerを作成する前準備として、IAM Role for service account の設定を行います。 これより、Amazon EKS 上で起動する Pod に IAM Role をアタッチできるようになります。
具体的には、以下を行います
以下のコマンドを実行し、OIDC ID プロバイダーを作成し、クラスターに関連付けます。本ハンズオンでは、eksctl を利用します。
eksctl utils associate-iam-oidc-provider \
--cluster eksworkshop-eksctl \
--region=$AWS_REGION \
--approve
ALB Ingress Controller 用の IAM ポリシーを作成します。
aws iam create-policy \
--policy-name ALBIngressControllerIAMPolicy \
--policy-document https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.8/docs/examples/iam-policy.json
作成した IAM Policy 情報が出力されます
Output:
作成した IAM Policy は後ほど使用するため、環境変数に設定します
export FARGATE_POLICY_ARN=$(aws iam list-policies --query 'Policies[?PolicyName==`ALBIngressControllerIAMPolicy`].Arn' --output text)
echo ${FARGATE_POLICY_ARN}
以下のコマンドを実行して Kubernetes サービスアカウントを作成します。
eksctl create iamserviceaccount \
--name alb-ingress-controller \
--namespace 2048-game \
--cluster eksworkshop-eksctl \
--attach-policy-arn ${FARGATE_POLICY_ARN} \
--approve \
--override-existing-serviceaccounts
上記のコマンドでは、以下を行っています
作成された service account の詳細は以下のコマンドで確認できます。
kubectl get sa alb-ingress-controller -n 2048-game -o yaml
Output:
先ほど作成した service account(alb-ingress-controller) に必要な権限を付与する Cluster Role と ClusterRoleBinding を作成します
curl -sS https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/${ALB_INGRESS_VERSION}/docs/examples/rbac-role.yaml \
| sed 's/namespace: kube-system/namespace: 2048-game/g' \
| kubectl apply -f -
作成した RBAC は以下のコマンドで確認できます。
kubectl get clusterrole alb-ingress-controller -o yaml
kubectl get clusterrolebinding alb-ingress-controller -o yaml