外部クラスターの接続 - Amazon EKS

外部クラスターの接続

以下のプロセスで複数のメソッドを使用して、外部の Kubernetes クラスターを Amazon EKS に接続できます。このプロセスには 2 つのステップがあります。Amazon EKS へのクラスターの登録と、クラスターへの eks-connector エージェントのインストールです。

重要

最初のステップを完了してから 3 日以内、つまり登録の有効期限が切れる前に 2 番目のステップを完了する必要があります。

コネクタメソッド

クラスターを登録する各メソッドの後で、エージェントをインストールするすべてのメソッドを使用できるわけではありません。次の表は、各登録メソッドと、使用できるエージェントのインストールメソッドのリストです。

[ステップ] 方法
クラスターの登録 AWS Management Console AWS Command Line Interface eksctl
エージェントのインストール Helm、YAML マニフェスト Helm、YAML マニフェスト YAML マニフェスト

前提条件

  • Amazon EKS Connector エージェントロールが作成されたことを確認します。「Amazon EKS コネクタエージェントロールの作成」の手順を実行します。

  • クラスターを登録するには、次のアクセス許可が必要です。

    • eks:RegisterCluster

    • ssm:CreateActivation

    • ssm:DeleteActivation

    • iam:PassRole

ステップ 1: クラスターの登録

AWS CLI
前提条件
  • AWS CLIがインストールされている必要があります。インストールまたはアップグレードするには、AWS CLI のインストールを参照してください。

クラスターを AWS CLI に登録するには
  • コネクタ設定には、Amazon EKS Connector エージェントの IAM ロールを指定します。詳細については、「Amazon EKS コネクターの必要な IAM ロール」を参照してください。

    aws eks register-cluster \ --name my-first-registered-cluster \ --connector-config roleArn=arn:aws:iam::111122223333:role/AmazonEKSConnectorAgentRole,provider="OTHER" \ --region aws-region

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

    { "cluster": { "name": "my-first-registered-cluster", "arn": "arn:aws:eks:region:111122223333:cluster/my-first-registered-cluster", "createdAt": 1627669203.531, "ConnectorConfig": { "activationId": "xxxxxxxxACTIVATION_IDxxxxxxxx", "activationCode": "xxxxxxxxACTIVATION_CODExxxxxxxx", "activationExpiry": 1627672543.0, "provider": "OTHER", "roleArn": "arn:aws:iam::111122223333:role/AmazonEKSConnectorAgentRole" }, "status": "CREATING" } }

    次のステップで aws-regionactivationIdactivationCode の値を使用します。

AWS Management Console
コンソールに Kubernetes クラスターを登録するには。
  1. https://console.aws.amazon.com/eks/home#/clusters で Amazon EKS コンソール を開きます。

  2. [Add cluster] (クラスターの追加) を選択し、[Register] (登録) を選択して設定ページを表示します。

  3. [Configure cluster (クラスターの設定)] セクションで、次のフィールドに入力します。

    • [Name (名前)] – クラスターの一意の名前。

    • プロバイダー - Kubernetes クラスタープロバイダーのドロップダウンリストを表示することを選択します。特定のプロバイダが不明な場合は、[その他] を選択します。

    • EKS Connector のロール — クラスターの接続に使用するロールを選択します。

  4. クラスターの登録を選択します。

  5. [Cluster] 概要ページが表示されます。Helm チャートを使用する場合は、helm install コマンドをコピーして次のステップに進みます。YAML マニフェストを使用する場合は、[YAML ファイルをダウンロード] を選択して、マニフェストファイルをローカルドライブにダウンロードします。

    重要
    • これは、helm install コマンドをコピーする、またはこのファイルをダウンロードする唯一の機会です。このページから移動しないでください。リンクにアクセスできないので、クラスターの登録を解除し、最初から手順を開始する必要があります。

    • コマンドまたはマニフェストファイルは、登録されたクラスターに対して一度だけ使用できます。Kubernetes クラスターからリソースを削除する場合は、クラスターを再登録し、新しいマニフェストファイルを取得する必要があります。

    次のステップに進み、Kubernetes クラスターにマニフェストファイルを適用します。

eksctl
前提条件
  • eksctl バージョン 0.68 以降がインストールされている必要があります。インストール、またはアップグレードをする場合は「Amazon EKS の開始方法 – eksctl」を参照してください。

クラスターを eksctl に登録するには
  1. 名前、プロバイダー、およびリージョンを指定して、クラスターを登録します。

    eksctl register cluster --name my-cluster --provider my-provider --region region-code

    出力例:

    2021-08-19 13:47:26 [ℹ]  creating IAM role "eksctl-20210819194112186040"
    2021-08-19 13:47:26 [ℹ]  registered cluster "<name>" successfully
    2021-08-19 13:47:26 [ℹ]  wrote file eks-connector.yaml to <current directory>
    2021-08-19 13:47:26 [ℹ]  wrote file eks-connector-clusterrole.yaml to <current directory>
    2021-08-19 13:47:26 [ℹ]  wrote file eks-connector-console-dashboard-full-access-group.yaml to <current directory>
    2021-08-19 13:47:26 [!]  note: "eks-connector-clusterrole.yaml" and "eks-connector-console-dashboard-full-access-group.yaml" give full EKS Console access to IAM identity "<aws-arn>", edit if required; read https://eksctl.io/usage/eks-connector for more info
    2021-08-19 13:47:26 [ℹ]  run `kubectl apply -f eks-connector.yaml,eks-connector-clusterrole.yaml,eks-connector-console-dashboard-full-access-group.yaml` before expiry> to connect the cluster
                                

    これにより、ローカルコンピュータ上にファイルが作成されます。これらのファイルは 3 日以内に外部クラスターに適用する必要があります。そうしないと登録の有効期限が切れます。

  2. クラスターにアクセスできるターミナルで、eks-connector-binding.yaml ファイルを適用します。

    kubectl apply -f eks-connector-binding.yaml

ステップ 2: eks-connector エージェントのインストール

Helm chart
  1. 前のステップで AWS CLI を使用した場合は、次のコマンドで ACTIVATION_CODE と ACTIVATION_ID をそれぞれ activationId と activationCode の値に置き換えます。aws-region を前のステップで使用した AWS リージョンに置き換えます。その後、次のコマンドを実行して、eks-connector エージェントを登録クラスターにインストールします。

    $ helm install eks-connector \ --namespace eks-connector \ oci://public.ecr.aws/eks-connector/eks-connector-chart \ --set eks.activationCode=ACTIVATION_CODE \ --set eks.activationId=ACTIVATION_ID \ --set eks.agentRegion=aws-region

    前のステップで AWS Management Consoleを使用した場合は、前のステップからコピーした、以下の値が入力されたコマンドを使用します。

  2. インストールされている eks-connector デプロイの正常性をチェックし、Amazon EKS に登録されたクラスターのステータスが ACTIVE になるのを待ちます。

YAML manifest

Kubernetes クラスターに Amazon EKS Connector のマニフェストファイルを適用して、接続を完了します。これを行うには、前述のメソッドを使用する必要があります。マニフェストが 3 日以内に適用されない場合、Amazon EKS Connector の登録の有効期限が切れます。クラスター接続が期限切れになった場合は、クラスターを再度接続する前にクラスターの登録を解除する必要があります。

  1. Amazon EKS コネクタ YAML ファイルをダウンロードします。

    curl -O https://amazon-eks.s3.us-west-2.amazonaws.com/eks-connector/manifests/eks-connector/latest/eks-connector.yaml
  2. Amazon EKS Connector の YAML ファイルを編集して、%AWS_REGION%%EKS_ACTIVATION_ID%%EKS_ACTIVATION_CODE% のすべてのリファレンスを、前のステップの出力から得られた aws-regionactivationIdactivationCode に置き換えます。

    次のコマンド例では、これらの値を置き換えることができます。

    sed -i "s~%AWS_REGION%~$aws-region~g; s~%EKS_ACTIVATION_ID%~$EKS_ACTIVATION_ID~g; s~%EKS_ACTIVATION_CODE%~$(echo -n $EKS_ACTIVATION_CODE | base64)~g" eks-connector.yaml
    重要

    アクティベーションコードが base64 形式であることを確認します。

  3. クラスターにアクセスできるターミナルで、次のコマンドを実行して、更新されたマニフェストファイルを適用できます。

    kubectl apply -f eks-connector.yaml
  4. Amazon EKS Connector のマニフェストとロールバインディング YAML ファイルが Kubernetes クラスターに適用されたら、クラスターが接続されたことを確認します。

    aws eks describe-cluster \ --name "my-first-registered-cluster" \ --region AWS_REGION

    出力には status=ACTIVE が含まれている必要があります。

  5. (オプション) クラスターにタグを追加します。詳細については、「Amazon EKS リソースのタグ付け」を参照してください。

次のステップ

これらのステップで問題が発生した場合は、「Amazon EKS Connector での問題のトラブルシューティング」を参照してください。

追加の IAM プリンシパルに Amazon EKS コンソールへのアクセスを許可して、接続されているクラスター内の Kubernetes リソースを表示するには、「クラスター上の Kubernetes リソースを表示するためのアクセス権の IAM プリンシパルへの付与」を参照してください。