Create a kubeconfig(kube構成) for Amazon EKS - Amazon EKS

英語の翻訳が提供されている場合で、内容が矛盾する場合には、英語版がオリジナルとして取り扱われます。翻訳は機械翻訳により提供されています。

Create a kubeconfig(kube構成) for Amazon EKS

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

このセクションでは、kubeconfig を作成または更新する 2 つの手順を示します。AWS CLI を使用して AWS CLI update-kubeconfig コマンドで自動的にすばやく kubeconfig を作成または更新することも、AWS CLI または aws-iam-authenticator を使用して手動で 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 CLI』の「AWS Command Line Interface ユーザーガイド の設定」 を参照してください。

Create kubeconfig(kube構成) automatically

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

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

    注記

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

    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」を参照してください。

    注記

    以下のコマンドを実行するには、指定したクラスターで eks:DescribeCluster API アクションを使用するアクセス許可が必要です。詳細については、「Amazon EKS identity-based policy examples」を参照してください。

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

    kubectl get svc
    注記

    その他の認可またはリソースタイプのエラーが発生した場合は、トラブルシューティングセクションの「Unauthorized or access denied (クベクトル)」を参照してください。

    出力:

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

Create kubeconfig(kube構成) manually

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 に教えます。

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

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

      $ENV:KUBECONFIG="{0};{1}" -f $ENV:KUBECONFIG, "$ENV:userprofile\.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
    • Windows 上の PowerShell の場合:

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

    kubectl get svc
    注記

    その他の認可またはリソースタイプのエラーが発生した場合は、トラブルシューティングセクションの「Unauthorized or access denied (クベクトル)」を参照してください。

    出力:

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