

 **このページの改善にご協力ください** 

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「**GitHub でこのページを編集する**」リンクを選択してください。

# 外部 Kubernetes クラスターを Amazon EKS マネジメントコンソールに接続する
<a name="connecting-cluster"></a>

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

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

## 考慮事項
<a name="connecting-cluster-considerations"></a>

エージェントをインストールする際には YAML マニフェストを使用できます。または、AWS マネジメントコンソール または AWS コマンドラインインターフェイスでクラスターを登録する場合は、Helm を使用できます。ただし、`eksctl` でクラスターを登録する場合は、Helm を使用してエージェントをインストールすることはできません。

## 前提条件
<a name="connector-prereqs"></a>
+ Amazon EKS Connector エージェントロールが作成されたことを確認します。[Amazon EKS コネクタエージェントロールの作成](connector-iam-role.md#create-connector-role)のステップに従います。
+ クラスターを登録するには、次のアクセス許可が必要です。
  +  `eks:RegisterCluster` 
  +  `ssm:CreateActivation` 
  +  `ssm:DeleteActivation` 
  +  `iam:PassRole` 

## ステップ 1: クラスターの登録
<a name="connector-connecting"></a>

クラスターを Amazon EKS コネクタに登録するには、次のいずれかのツールを使用できます。
+  [AWS CLI](#awscli_register_cluster_connect) 
+  [AWS マネジメントコンソール](#console_register_cluster_connect) 
+  [`eksctl`](#eksctl_register_cluster_connect) 

### AWS CLI
<a name="awscli_register_cluster_connect"></a>

1.  AWS CLI がインストールされている必要があります。インストールまたはアップグレードするには、「[AWS CLI のインストール](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html)」を参照してください。

1. コネクタ設定には、Amazon EKS Connector エージェントの IAM ロールを指定します。詳細については、「[Amazon EKS コネクターの必要な IAM ロール](eks-connector.md#connector-iam-permissions)」を参照してください。

   ```
   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-region`、`activationId`、`activationCode` の値を使用します。

### AWS マネジメントコンソール
<a name="console_register_cluster_connect"></a>

1. [アマゾン EKS コンソール](https://console.aws.amazon.com/eks/home#/clusters)を開きます。

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

1. [**Configure cluster (クラスターの設定)**] セクションで、次のフィールドに入力します。
   +  [**Name (名前)**] – クラスターの一意の名前。
   +  **[Provider]** (プロバイダー) 選択すると、Kubsernetes クラスタープロバイダーのドロップダウンリストが表示されます。特定のプロバイダが不明な場合は、**[その他]** を選択します。
   +  **EKS Connector のロール** — クラスターの接続に使用するロールを選択します。

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

1. [Cluster] 概要ページが表示されます。Helm チャートを使用する場合は、`helm install` コマンドをコピーして次のステップに進みます。YAML マニフェストを使用する場合は、**[YAML ファイルをダウンロード]** を選択して、マニフェストファイルをローカルドライブにダウンロードします。
**重要**  
これは、`helm install` コマンドをコピーする、またはこのファイルをダウンロードする唯一の機会です。このページから移動しないでください。リンクにアクセスできないので、クラスターの登録を解除し、最初から手順を開始する必要があります。

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

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

### `eksctl`
<a name="eksctl_register_cluster_connect"></a>

1.  `eksctl` バージョン `0.68` 以降がインストールされている必要があります。インストール、またはアップグレードをする場合は「[Amazon EKS – `eksctl` の使用を開始する](getting-started-eksctl.md)」を参照してください。

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 日以内に外部クラスターに適用する必要があります。そうしないと登録の有効期限が切れます。

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

   ```
   kubectl apply -f eks-connector-binding.yaml
   ```

## ステップ 2: `eks-connector` エージェントのインストール
<a name="eks-connector-apply"></a>

`eks-connector` エージェントをインストールするには、次のいずれかのツールを使用します。
+  [Helm](#helm_agent_cluster_connect) 
+  [yaml](#yaml_agent_cluster_connect) 

### Helm
<a name="helm_agent_cluster_connect"></a>

**注記**  
`eksctl` でクラスターを登録した場合は、Helm チャートの方法の代わりに YAML マニフェストの方法を使用します。

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 マネジメントコンソールを使用した場合は、前のステップからコピーした、以下の値が入力されたコマンドを使用します。

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

### yaml
<a name="yaml_agent_cluster_connect"></a>

Kubernetes クラスターに Amazon EKS コネクタマニフェストファイルを適用して、接続を完了します。これを行うには、前述のメソッドを使用する必要があります。マニフェストが 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
   ```

1. Amazon EKS Connector の YAML ファイルを編集して、`%AWS_REGION%`、`%EKS_ACTIVATION_ID%`、`%EKS_ACTIVATION_CODE%` のすべてのリファレンスを、前のステップの出力から得られた `aws-region`、`activationId`、`activationCode` に置き換えます。

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

   ```
   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 形式であることを確認します。

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

   ```
   kubectl apply -f eks-connector.yaml
   ```

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

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

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

1. (オプション) クラスターにタグを追加します。詳細については、「[タグを使用して Amazon EKS リソースを整理する](eks-using-tags.md)」を参照してください。

## 次のステップ
<a name="eks-connector-next"></a>

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

追加の [IAM プリンシパル](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal)に Amazon EKS コンソールへのアクセスを許可して、接続されているクラスター内の Kubernetes リソースを表示するには、「[Amazon EKS コンソールで Kubernetes クラスターのリソースを表示するためのアクセスを付与する](connector-grant-access.md)」を参照してください。