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

「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」

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

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

このセクションでは、kubeconfig を作成または更新する 2 つの手順を示します。を使用して、自動的にAWS CLIupdate-kubeconfigコマンドで kubeconfig AWS CLI を作成または更新することも、 AWS CLIまたは を使用して手動で kubeconfig を作成することもできますaws-iam-authenticator

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

aws sts get-caller-identity

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

kubeconfig を自動で作成する

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

  1. AWS CLI のバージョン 1.16.156 以降がインストールされていることを確認します。AWS CLI をインストールまたはアップグレードするには、https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html の「AWS Command Line Interface ユーザーガイドAWS コマンドラインインターフェイスのインストール」を参照してください。

    注記

    システムの Python のバージョンは 2.7.9 以降であることが必要です。そうでない場合は、AWS CLI で Amazon EKS を呼び出すと hostname doesn't match エラーが発生します。

    AWS CLI のバージョンは、以下のコマンドを使用して確認できます。

    aws --version
    重要

    yum、 、Homebrew などのパッケージマネージャは、多くの場合、 の複数のバージョンより後にありますapt-get。macOSAWS CLI最新バージョンであることを確認するには、 の「AWS コマンドラインインターフェイスのインストール」を参照してくださいAWS Command Line Interface ユーザーガイド。

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

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

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

    • 詳細については、aws eks update-kubeconfig helpコマンドのヘルプページを参照するか、 update-kubeconfig を参照してくださいAWS CLI Command Reference

    注記

    以下のコマンドを実行するには、指定したクラスターで eks:DescribeCluster API アクションを使用するアクセス許可が必要です。詳細については、を参照してください Amazon EKS アイデンティティベースのポリシーの例

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

    kubectl get svc
    注記

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

    出力:

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

kubeconfig を手動で作成する

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

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

    mkdir -p ~/.kube
  2. テキストエディタを開き、優先するクライアントトークン方式に応じて、以下の kubeconfig コードブロックのいずれかをコピーします。

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

      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. をクラスター向けに作成したエンドポイント 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伝えます。

    • macOSまたは Linux 上の Bash シェルの場合:

      export KUBECONFIG=$KUBECONFIG:~/.kube/config-<devel>
    • Windows の場合:PowerShell

      $ENV:KUBECONFIG="{0};{1}" -f $ENV:KUBECONFIG, "$ENV:userprofile\.kube\config-<devel>"
  10. (オプション) シェルを開くと設定されるように、シェルの初期化ファイルに設定を追加します。

    • の Bash シェルの場合macOS:

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

      echo 'export KUBECONFIG=$KUBECONFIG:~/.kube/config-<devel>' >> ~/.bashrc
    • Windows の場合:PowerShell

      [System.Environment]::SetEnvironmentVariable('KUBECONFIG', $ENV:KUBECONFIG, 'Machine')
  11. 設定をテストします。

    kubectl get svc
    注記

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

    出力:

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