Amazon EKS
ユーザーガイド

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

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

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

Amazon EKS では、クラスターの認証に、AWS CLI のバージョン 1.16.156 以上で使用可能な aws eks get-token コマンドを使用するか、または AWS IAM Authenticator for Kuberneteskubectl と共に使用します。システムに AWS CLI をインストール済みである場合、AWS IAM Authenticator for Kubernetes でデフォルトで使用される認証情報は、以下のコマンドで返されるものと同じです。

aws sts get-caller-identity

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

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

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

    注記

    システムの Python のバージョンは 2.7.9 以上であることが必要です。そうでない場合は、AWS CLI で Amazon EKS を呼び出すと hostname doesn't match エラーが発生します。詳細については、Python Requests FAQ の「What are "hostname doesn't match" errors?」 を参照してください。

    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 に設定されていません。詳細については、「aws-iam-authenticator のインストール」を参照してください。

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

    出力:

    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 コードブロックのいずれかをコピーします。

    • AWS CLI aws eks get-token コマンドを使用するには (AWS CLI のバージョン 1.16.156 以上が必要):

      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 args: - "eks" - "get-token" - "--cluster-name" - "<cluster-name>" # - "--role" # - "<role-arn>" # env: # - name: AWS_PROFILE # value: "<aws-profile>"
    • AWS IAM Authenticator for Kubernetes を使用するには:

      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 ロールを引き受けるには、-r または --role 行と、<role-arn> 行をコメント解除し、使用する IAM ロール ARN を実際のユーザーに置き換えます。

  7. (オプション) デフォルトの 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 に設定されていません。詳細については、「aws-iam-authenticator のインストール」を参照してください。

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

    出力:

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