

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

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「**GitHub でこのページを編集する**」リンクを選択してください。

# kubeconfig ファイルを作成して kubectl を EKS クラスターに接続する
<a name="create-kubeconfig"></a>

**ヒント**  
 今後開催予定の Amazon EKS ワークショップに[登録](https://aws-experience.com/emea/smb/events/series/get-hands-on-with-amazon-eks?trk=4a9b4147-2490-4c63-bc9f-f8a84b122c8c&sc_channel=el)してください。

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

`kubectl` コマンドラインツールは、`kubeconfig` ファイルの設定情報を使用して、クラスターの API サーバーと通信します。詳細については、Kubernetes ドキュメントの「[kubeconfig ファイルを使用してクラスターアクセスを組織する](https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/)」を参照してください。

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

```
aws sts get-caller-identity
```
+ 既存の Amazon EKS クラスター。デプロイするには、[Amazon EKS の使用を開始する](getting-started.md) を参照してください。
+ デバイスまたは AWS CloudShell に、`kubectl` コマンドラインツールがインストールされていること。バージョンはご使用のクラスターの Kubernetes バージョンと同じか、1 つ前のマイナーバージョン以前、あるいはそれより新しいバージョンが使用できます。例えば、クラスターのバージョンが `1.29` である場合、`kubectl` のバージョン `1.28`、`1.29`、または `1.30` が使用できます。`kubectl` をインストールまたはアップグレードする方法については、[`kubectl` および `eksctl` のセットアップ](install-kubectl.md) を参照してください。
+ ご使用のデバイスまたは AWS CloudShell で、バージョン `2.12.3` 以降、または AWS コマンドラインインターフェイス (AWS CLI) のバージョン `1.27.160` 以降がインストールおよび設定されていること。現在のバージョンを確認するには、`aws --version | cut -d / -f2 | cut -d ' ' -f1` を参照してください。`yum`、`apt-get`、macOS 用の Homebrew などのパッケージマネージャーは、多くの場合 AWS CLI の最新バージョンより数バージョン古くなっています。最新バージョンをインストールするには、「* AWS コマンドラインインターフェイスユーザーガイド*」の「[インストール](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html)」および「[aws configure を使用したクイック設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config)」を参照してください。AWS クラウドシェル にインストールされている AWS CLI バージョンも最新バージョンより数バージョン遅れることがあります。更新するには、*「AWS CloudShell ユーザーガイド*」の「[ホームディレクトリへの AWS CLI のインストール](https://docs.aws.amazon.com/cloudshell/latest/userguide/vm-specs.html#install-cli-software)」を参照してください。
+ 指定したクラスターに対して `eks:DescribeCluster` API アクションを使用するアクセス許可を持つ IAM ユーザーまたはロール。詳細については、[Amazon EKS でのアイデンティティベースのポリシーの例](security-iam-id-based-policy-examples.md) を参照してください。独自の OpenID Connect プロバイダーの ID を使用してクラスターにアクセスする場合は、Kubernetes ドキュメントの「[kubectl の使用](https://kubernetes.io/docs/reference/access-authn-authz/authentication/#using-kubectl)」を参照して、`kube config` ファイルを作成または更新してください。

## EKS コンソールを使用して接続する (CloudShell)
<a name="connect-cloudshell"></a>

AWS CloudShell を使用して、ローカルセットアップなしで AWS マネジメントコンソール からクラスターに直接接続できます。

1. [https://console.aws.amazon.com/eks/home\#/clusters](https://console.aws.amazon.com/eks/home#/clusters) で Amazon EKS コンソールを開きます。

1. 接続するクラスターの名前を選択します。

1. クラスターの詳細ページで、右上のアクションバーから **[接続]** を選択します。

1.  AWS CloudShell は、クラスター用に事前設定された `kubectl` で開きます。

接続したら、`kubectl` コマンドをすぐに実行できます。

```
kubectl get nodes
kubectl get pods -A
```

CloudShell セッションには、`kubectl`、AWS CLI、および標準の CloudShell ユーティリティが含まれます。この機能は、パブリック API サーバーエンドポイントとプライベート API サーバーエンドポイントの両方を持つクラスターをサポートします。プライベートエンドポイントを持つクラスターの場合、CloudShell は自動的に VPC 環境を起動してクラスターのプライベート API サーバーに到達し、環境の名前を入力するように求めます。

## AWS CLI を使用して `kubeconfig` ファイルを作成する
<a name="create-kubeconfig-automatically"></a>
+ ご使用のデバイスまたは AWS CloudShell で、バージョン `2.12.3` 以降、または AWS コマンドラインインターフェイス (AWS CLI) のバージョン `1.27.160` 以降がインストールおよび設定されていること。現在のバージョンを確認するには、`aws --version | cut -d / -f2 | cut -d ' ' -f1` を参照してください。`yum`、`apt-get`、macOS 用の Homebrew などのパッケージマネージャーは、多くの場合 AWS CLI の最新バージョンより数バージョン古くなっています。最新バージョンをインストールするには、「* AWS コマンドラインインターフェイスユーザーガイド*」の「[インストール](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html)」および「[aws configure を使用したクイック設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config)」を参照してください。AWS クラウドシェル にインストールされている AWS CLI バージョンも最新バージョンより数バージョン遅れることがあります。更新するには、*「AWS CloudShell ユーザーガイド*」の「[ホームディレクトリへの AWS CLI のインストール](https://docs.aws.amazon.com/cloudshell/latest/userguide/vm-specs.html#install-cli-software)」を参照してください。
+ 指定したクラスターに対して `eks:DescribeCluster` API アクションを使用するアクセス許可。詳細については、[Amazon EKS でのアイデンティティベースのポリシーの例](security-iam-id-based-policy-examples.md) を参照してください。

  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 プリンシパル](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal)が使用されます。デフォルトの AWS CLI または SDK の ID を表示するには、 `aws sts get-caller-identity` コマンドを実行します。

     使用可能なすべてのオプションについては、`aws eks update-kubeconfig help` コマンドを実行するか、*「AWS CLI コマンドリファレンス*」の「[update-kubeconfig](https://docs.aws.amazon.com/cli/latest/reference/eks/update-kubeconfig.html)」を参照してください。

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

     ```
     kubectl get svc
     ```

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

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

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