kubeconfig ファイルを作成して kubectl を EKS クラスターに接続する - Amazon EKS

このページの改善にご協力ください

本ユーザーガイドの改善にご協力いただけませんか? このページの下部までスクロールし、[GitHub でこのページの編集] を選択します。皆さまにご協力いただくことで、あらゆる人々に使いやすいユーザーガイドになります。

kubeconfig ファイルを作成して kubectl を EKS クラスターに接続する

このトピックでは、クラスター用の kubeconfig ファイルを作成します (または既存のファイルを更新します)。

kubectl コマンドラインツールは、kubeconfig ファイルの設定情報を使用して、クラスターの API サーバーと通信します。詳細については、Kubernetes ドキュメントの「kubeconfig ファイルを使用したクラスターアクセスの整理」を参照してください。

Amazon EKS はクラスター認証に kubectlaws eks get-token コマンドを使用します。デフォルトでは、AWS CLI は次のコマンドで返されるものと同じ認証情報を使用します。

aws sts get-caller-identity
前提条件
  • 既存の Amazon EKS クラスター。デプロイするには、「Amazon EKS の使用を開始する」を参照してください。

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

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

  • 指定したクラスターに対して eks:DescribeCluster API アクションを使用するアクセス許可を持つ IAM ユーザーまたはロール。詳細については、「Amazon EKS でのアイデンティティベースのポリシーの例」を参照してください。独自の OpenID Connect プロバイダーの ID を使用してクラスターにアクセスする場合は、Kubernetes ドキュメントの「kubectl の使用」を参照して、kube config ファイルを作成または更新してください。

kubeconfig ファイルを自動で作成する

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

  • 指定したクラスターに対して eks:DescribeCluster API アクションを使用するアクセス許可。詳細については、「Amazon EKS でのアイデンティティベースのポリシーの例」を参照してください。

kubeconfig ファイルを AWS CLI で作成するには
  1. クラスター用の kubeconfig ファイルを作成もしくは更新します。region-code をお客様のクラスターが存在する AWS リージョン に置き換え、my-cluster をお客様のクラスターの名前に置き換えます。

    aws eks update-kubeconfig --region region-code --name my-cluster

    デフォルトでは、最終的な設定ファイルは、ホームディレクトリのデフォルト kubeconfig パス (.kube) に作成されるか、その場所で既存 config ファイルとマージされます。別のパスは --kubeconfig オプションを使用して指定できます。

    kubectl コマンドを発行する場合、認証に使用する --role-arn オプションで IAM ロール ARN を指定できます。それ以外の場合は、デフォルトの AWS CLI または SDK の認証情報チェーンの中の IAM プリンシパルが使用されます。デフォルトの AWS CLI または SDK の ID を表示するには、 aws sts get-caller-identity コマンドを実行します。

    使用可能なすべてのオプションについては、aws eks update-kubeconfig help コマンドを実行するか、「AWS CLI コマンドリファレンス」の「update-kubeconfig」を参照してください。

  2. 設定をテストします。

    kubectl get svc

    出力例は次のとおりです。

    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 1m

    認証またはリソースタイプのエラーが発生した場合は、トラブルシューティングトピックの「許可されていないか、アクセスが拒否されました (kubectl)」を参照してください。