クラスターの IAM OIDC プロバイダーを作成する - Amazon EKS

クラスターの IAM OIDC プロバイダーを作成する

クラスターには、OpenID Connect (OIDC) 発行者の URL が関連付けられています。サービスアカウントで AWS Identity and Access Management (IAM) ロールを使用するには、クラスターの OIDC 発行者 URL に対して IAM OIDC プロバイダーが存在している必要があります。

  • 既存の Amazon EKS クラスター。デプロイするには、「Amazon EKS の使用を開始する」を参照してください。

  • ご使用のデバイスまたは AWS CloudShell で、バージョン 2.12.3 以降、または AWS コマンドラインインターフェイス (AWS CLI) のバージョン 1.27.160 以降がインストールおよび設定されていること。現在のバージョンを確認するには、「aws --version | cut -d / -f2 | cut -d ' ' -f1」を参照してください。macOS の yumapt-get、または Homebrew などのパッケージマネージャは、AWS CLI の最新バージョンより数バージョン遅れることがあります。最新バージョンをインストールするには、「AWS コマンドラインインターフェイスユーザーガイド」の「インストール」および「aws configure を使用したクイック設定」を参照してください。AWS CloudShell にインストールされている AWS CLI バージョンも最新バージョンより数バージョン遅れることがあります。更新するには、「AWS CloudShell ユーザーガイド」の「ホームディレクトリへの AWS CLI のインストール」を参照してください。

  • デバイスまたは AWS CloudShell に、kubectl コマンドラインツールがインストールされていること。バージョンは、ご使用のクラスターの Kubernetes バージョンと同じか、1 つ前のマイナーバージョン以前、あるいはそれより新しいバージョンが使用できます。例えば、クラスターのバージョンが 1.29 である場合、kubectl のバージョン 1.281.29、または 1.30 が使用できます。kubectl をインストールまたはアップグレードする方法については、「kubectl と eksctl のセットアップ」を参照してください。

  • クラスター構成を含む既存の kubectl config ファイル。kubectl config ファイルの作成については、「kubeconfig ファイルを作成して kubectl を EKS クラスターに接続する」を参照してください。

eksctl または AWS Management Console を使用して、クラスターの IAM OIDC プロバイダーを作成できます。

OIDC プロバイダーの作成 (eksctl)

  1. デバイスまたは AWS CloudShell にインストールされている eksctl コマンドラインツールのバージョン 0.190.0 以降。eksctl をインストールまたはアップグレードするには、eksctl ドキュメントの「インストール」を参照してください。

  2. クラスターの OIDC 発行者 ID を決定します。

    クラスターの OIDC 発行者 ID を取得し、変数に格納します。my-cluster を独自の値に置き換えます。

    cluster_name=my-cluster
oidc_id=$(aws eks describe-cluster --name $cluster_name --query "cluster.identity.oidc.issuer" --output text | cut -d '/' -f 5)
echo $oidc_id
  1. クラスターの発行者 ID を持つ IAM OIDC プロバイダーが既にアカウントにあるかどうかを確認します。

    aws iam list-open-id-connect-providers | grep $oidc_id | cut -d "/" -f4

    出力が返された場合は、既にクラスター用の IAM OIDC プロバイダーが存在するため、次の手順をスキップできます。出力が返されない場合は、クラスター用の IAM OIDC プロバイダーを作成する必要があります。

  2. 次のコマンドを使用して、クラスターの IAM OIDC ID プロバイダーを作成します。

    eksctl utils associate-iam-oidc-provider --cluster $cluster_name --approve
    注記

    EKS VPC エンドポイントを有効にすると、その VPC 内から EKS OIDC サービスエンドポイントにアクセスできなくなります。そのため、VPC で eksctl を使用して OIDC プロバイダーを作成するなどの操作は機能せず、 https://oidc.eks.region.amazonaws.com をリクエストしようとするとタイムアウトになります。エラーメッセージの例は次のとおりです。

** server cant find oidc.eks.region.amazonaws.com: NXDOMAIN

このステップを完了するには、VPC の外部、たとえばインターネットに接続された AWS CloudShell 内またはコンピューター上でコマンドを実行します。または、Route 53 Resolver などのスプリットホライズン条件付きリゾルバーを VPC に作成して、OIDC 発行者 URL のために別のリゾルバーを使用し、VPC DNS は使用しないようにすることもできます。CoreDNS での条件付き転送の例については、GitHub の「Amazon EKS feature request」を参照してください。

OIDC プロバイダーの作成 (AWS コンソール)

  1. Amazon EKS コンソールを開きます。

  2. 左側ペインで、[クラスター] を選択し、[クラスター] ページでご自身のクラスターの名前を選択します。

  3. [概要] タブの [詳細] セクションで、[OpenID Connect プロバイダーの URL] の値を書き留めます。

  4. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  5. 左のナビゲーションペインの [アクセス管理][ID プロバイダー] を選択します。[プロバイダー] がクラスターの URL と一致するリストに表示されている場合は、クラスターのプロバイダーがすでに存在します。クラスターの URL に一致するプロバイダーがリストにない場合、プロバイダーを作成する必要があります。

  6. プロバイダーを作成するには、[プロバイダーを追加] を選択します。

  7. [プロバイダーのタイプ] には [OpenID Connect] を選択します。

  8. [プロバイダー URL] に、クラスター用の OIDC プロバイダー URL 入力します。

  9. [対象者] には sts.amazonaws.com を入力します。

  10. (オプション) 任意のタグ、例えば、このプロバイダーのクラスターを特定するためのタグを追加します。

  11. [プロバイダーを追加] をクリックします。

次のステップ: Kubernetes サービスアカウントへの IAM ロールの割り当て