kubeconfig ファイルを作成して kubectl を EKS クラスターに接続する
このトピックでは、クラスター用の kubeconfig
ファイルを作成します (または既存のファイルを更新します)。
kubectl
コマンドラインツールは、kubeconfig
ファイルの設定情報を使用して、クラスターの API サーバーと通信します。詳細については、Kubernetes ドキュメントの「kubeconfig ファイルを使用したクラスターアクセスの整理
Amazon EKS はクラスター認証に kubectl
で aws eks get-token
コマンドを使用します。デフォルトでは、AWS CLI は次のコマンドで返されるものと同じ認証情報を使用します。
aws sts get-caller-identity
-
既存の Amazon EKS クラスター。デプロイするには、「Amazon EKS の使用を開始する」を参照してください。
-
デバイスまたは AWS CloudShell に、
kubectl
コマンドラインツールがインストールされていること。バージョンは、ご使用のクラスターの Kubernetes バージョンと同じか、1 つ前のマイナーバージョン以前、あるいはそれより新しいバージョンが使用できます。例えば、クラスターのバージョンが1.29
である場合、kubectl
のバージョン1.28
、1.29
、または1.30
が使用できます。kubectl
をインストールまたはアップグレードする方法については、「kubectl と eksctl のセットアップ」を参照してください。 -
ご使用のデバイスまたは AWS CloudShell で、バージョン
2.12.3
以降、または AWS コマンドラインインターフェイス (AWS CLI) のバージョン1.27.160
以降がインストールおよび設定されていること。現在のバージョンを確認するには、「aws --version | cut -d / -f2 | cut -d ' ' -f1
」を参照してください。macOS のyum
、apt-get
、または Homebrew などのパッケージマネージャは、AWS CLI の最新バージョンより数バージョン遅れることがあります。最新バージョンをインストールするには、「AWS コマンドラインインターフェイスユーザーガイド」の「インストール」および「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 コマンドラインインターフェイス (AWS CLI) のバージョン1.27.160
以降がインストールおよび設定されていること。現在のバージョンを確認するには、「aws --version | cut -d / -f2 | cut -d ' ' -f1
」を参照してください。macOS のyum
、apt-get
、または Homebrew などのパッケージマネージャは、AWS CLI の最新バージョンより数バージョン遅れることがあります。最新バージョンをインストールするには、「AWS コマンドラインインターフェイスユーザーガイド」の「インストール」および「aws configure を使用したクイック設定」を参照してください。AWS CloudShell にインストールされている AWS CLI バージョンも最新バージョンより数バージョン遅れることがあります。更新するには、「AWS CloudShell ユーザーガイド」の「ホームディレクトリへの AWS CLI のインストール」を参照してください。 -
指定したクラスターに対して
eks:DescribeCluster
API アクションを使用するアクセス許可。詳細については、「Amazon EKS でのアイデンティティベースのポリシーの例」を参照してください。-
クラスター用の
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」を参照してください。 -
設定をテストします。
kubectl get svc
出力例は次のとおりです。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 1m
認可またはリソースタイプのエラーが発生した場合は、トラブルシューティングトピックの「許可されていないか、アクセスが拒否されました (kubectl)」を参照してください。
-