Amazon EKS
ユーザーガイド

kubeconfig を Amazon EKS 用に作成します。

このセクションでは、クラスター用の kubeconfig ファイルを作成し、また、既存のファイルを更新します。

このセクションでは、kubeconfig を作成または更新する 2 つの手順を示します。AWS CLI update-kubeconfig コマンドを使用すれば、1 番目の手順を使うか、2 番目の手順で手動で kubeconfig を作成することによって、すばやく kubeconfig を作成または更新できます。

Amazon EKS は、AWS IAM Authenticator for Kuberneteskubectl と一緒にクラスター認証のために使用します。これは、AWS CLI と AWS SDK と同じ デフォルトの AWS 認証情報プロバイダーチェーンを使用します。システムに AWS CLI をインストール済みである場合、AWS IAM Authenticator for Kubernetes でデフォルトで使用される認証情報は、次のコマンドで返されるものと同じです。

aws sts get-caller-identity

詳細については、AWS Command Line Interface ユーザーガイド の「 の設定AWS CLI」を参照してください。

kubeconfig ファイルを AWS CLI で作成するには

  1. 1.16.73 以上の AWS CLI がインストールされていることを確認します。AWS CLI をインストールまたはアップグレードするには、AWS Command Line Interface ユーザーガイドの「AWS コマンドラインインターフェイスのインストール」を参照してください。

    注記

    システムの Python のバージョンは Python 3、または Python 2.7.9 以降である必要があります。それ以外の場合は、AWS CLI で Amazon EKS を呼び出すと hostname doesn't match エラーが表示されます。詳細については、「『ホスト名の不一致』エラーとは」 (Python リクエストのよくある質問) を参照してください。

    AWS CLI のバージョンは、次のコマンドで確認できます。

    aws --version

    重要

    yumapt-get、または macOS の Homebrew は、AWS CLI より数バージョン遅れることがあります。最新バージョンを確実に入手するには、AWS Command Line Interface ユーザーガイド の 「AWS コマンドラインインターフェイスのインストール」を参照してください。

  2. クラスターの kubeconfig を作成または更新するには、AWS CLI update-kubeconfig コマンドを使用します。

    • デフォルトでは、最終的な設定ファイルは、ホームディレクトリのデフォルト kubeconfig パス (.kube/config) に作成されるか、その場所で既存 kubeconfig とマージされます。別のパスは --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 Command Referenceの「update-kubeconfig」を参照してください。

    aws eks --region region update-kubeconfig --name cluster_name
  3. 設定をテストします。

    kubectl get svc

    注記

    "aws-iam-authenticator": executable file not found in $PATH エラーが発生した場合、kubectl が Amazon EKS に設定されていません。詳細については、「」を参照してください。

    出力:

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

kubeconfig ファイルを手動で作成するには

  1. デフォルトの ~/.kube フォルダを作成します (まだない場合)。

    mkdir -p ~/.kube
  2. 任意のテキストエディタを開き、以下の kubeconfig コードブロックをエディタ内にコピーします。

    apiVersion: v1 clusters: - cluster: server: <endpoint-url> certificate-authority-data: <base64-encoded-ca-cert> name: kubernetes contexts: - context: cluster: kubernetes user: aws name: aws current-context: aws kind: Config preferences: {} users: - name: aws user: exec: apiVersion: client.authentication.k8s.io/v1alpha1 command: aws-iam-authenticator args: - "token" - "-i" - "<cluster-name>" # - "-r" # - "<role-arn>" # env: # - name: AWS_PROFILE # value: "<aws-profile>"
  3. <endpoint-url> をクラスターに作成された endpoint URL に置き換えます。

  4. <base64-encoded-ca-cert> を クラスターに作成された certificateAuthority.data に置き換えます。

  5. <cluster-name> をクラスター名に置き換えます。

  6. (オプション) AWS IAM Authenticator for Kubernetes で、デフォルトの AWS 認証情報プロバイダーチェーンではなく、クラスターオペレーションを実行するロールを引き受ける場合は、-r 行と <role-arn> 行のコメントを外し、使用する IAM ロール ARN をユーザーに置き換えます。

  7. (オプション) AWS IAM Authenticator for Kubernetes で、デフォルトの AWS 認証情報プロバイダーチェーンではなく、特定の名前付きの AWS 認証情報プロファイルを常に使用させるには、env 行のコメントを外し、<aws-profile> を使用するプロファイル名に置き換えます。

  8. ファイル名にクラスター名を入れて、ファイルをデフォルトの kubectl フォルダに保存します。たとえば、クラスター名が devel の場合、ファイルは ~/.kube/config-devel に保存します。

  9. そのファイルパスを KUBECONFIG 環境変数に追加し、クラスター設定をどこで探せばいいか、kubectl に教えます。

    export KUBECONFIG=$KUBECONFIG:~/.kube/config-devel
  10. (オプション) シェルを開くと設定されるように、シェルの初期化ファイルに設定を追加します。

    • macOS の場合、Bash シェル。

      echo 'export KUBECONFIG=$KUBECONFIG:~/.kube/config-devel' >> ~/.bash_profile
    • Linux の場合、Bash シェル。

      echo 'export KUBECONFIG=$KUBECONFIG:~/.kube/config-devel' >> ~/.bashrc
  11. 設定をテストします。

    kubectl get svc

    注記

    "aws-iam-authenticator": executable file not found in $PATH エラーが発生した場合、kubectl が Amazon EKS に設定されていません。詳細については、「」を参照してください。

    出力:

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