4
1

More than 1 year has passed since last update.

Amazon EKSでIRSAを利用する

Last updated at Posted at 2022-11-01

はじめに

IRSA(IAM Roles for Service Accounts)とは、EKSクラスタ上で稼働するPodに対してIAMロールを割り当てる仕組みです。
Mac環境を想定しています。

実行環境の準備

  1. AWS CLIの設定
    AWS CloudFormationを動かすためのAWS CLIの設定を参考にしてください。

  2. EKSクラスタの構築
    Macでeksctlを利用してAmazon EKSのクラスターを構築するを参考にしてください。

  3. EKSのコンテキストの設定
    MacにてAmazon EKSの設定をするを参考にしてください。

IAM OIDC IDプロバイダの作成

クラスター用の IAM OIDC プロバイダーの作成を参考にしてください。

  1. クラスタ名を設定する

    CLUSTER_NAME=${クラスター名}
    
  2. IDプロバイダを作成する

    eksctl utils associate-iam-oidc-provider \
      --cluster ${CLUSTER_NAME} \
      --approve
    

IAMロールとサービスアカウントの作成

  1. IAMロールとサービスアカウントを作成する
    ※今回はロール名をakane-dev-irsa-service-accountにしています。
    ※今回はAmazonS3ReadOnlyAccessを設定する。

    NAMESPACE=akane
    eksctl create iamserviceaccount \
      --name akane-dev-irsa-service-account \
      --namespace ${NAMESPACE} \
      --cluster ${CLUSTER_NAME} \
      --attach-policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess \
      --approve
    

環境設定

※事前にKubernetesクラスターのコンテキストの設定をします。

  1. akane-namespace.yaml を作成する

    akane-namespace.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      namespace: akane
      name: akane-irsa
      labels:
        run: akane-irsa
    spec:
      replicas: 1
      selector:
        matchLabels:
          run: akane-irsa
      strategy: {}
      template:
        metadata:
          labels:
            run: akane-irsa
        spec:
          containers:
          - command:
            - /bin/sh
            - -c
            - sleep 500
            image: amazon/aws-cli
            name: akane-irsa
            resources: {}
          serviceAccountName: akane-dev-irsa-service-account
    
  2. クラスターに適用する

    kubectl apply -f akane-deployment.yaml
    
  3. Podにログインする

    kubectl -n akane exec -it $(kubectl get po -n akane -o=jsonpath='{.items[0].metadata.name}')  sh
    
  4. S3のアクセス権限を確認する

    aws s3 ls
    

クリーンアップ

  1. クラスターから削除する

    kubectl delete -f akane-deployment.yaml
    
  2. IAMロールとサービスアカウントを作成する

    NAMESPACE=akane
    eksctl delete iamserviceaccount \
      --name akane-dev-irsa-service-account \
      --namespace ${NAMESPACE} \
      --cluster ${CLUSTER_NAME}
    
  3. IAM OIDC IDを削除する
    eksctl delete clusterを実行するとクラスターと一緒に削除されます。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1