

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

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

# Amazon EKS の使用を開始する – AWS マネジメントコンソール と AWS CLI
<a name="getting-started-console"></a>

**注記**  
このトピックではEKS 自動モードl を**使用せずに**開始する方法について説明します。管理されたノードグループ を使用してノードをデプロイします。  
EKS 自動モードl はクラスターコンピューティング、ストレージ、ネットワーキングのルーチンタスクを自動化します。[Amazon EKS 自動モードl の使用を開始する方法について説明します。](getting-started-automode.md)ノードをデプロイするにはEKS 自動モードが推奨されます。

このガイドではAWS マネジメントコンソール と AWS CLI を使用して、Amazon Elastic Kubernetes Service (Amazon EKS) を使用開始するために必要なすべてのリソースを作成する方法を解説します。ここでは各リソースを手動で作成します。このチュートリアルの終わりにはアプリケーションのデプロイが可能な、実行状態の Amazon EKS クラスターが完成します。

このガイドの手順に従うと、各リソースがどのように作成され、リソース間でどのようにやり取りするかを全面的に把握できます。大半のリソースを自動的に作成させたい場合にはクラスターとノードの作成に `eksctl` CLI を使用します。詳細については「[Amazon EKS – `eksctl` の使用を開始する](getting-started-eksctl.md)」を参照してください。

## 前提条件
<a name="eks-prereqs"></a>

このチュートリアルを開始する前に、Amazon EKS クラスターの作成と管理に必要な次のツールとリソースを、インストールおよび設定しておく必要があります。
+  ** AWS CLI** – Amazon EKS など AWS のサービスを操作するためのコマンドラインツールです。詳細についてはAWS コマンドラインインターフェイスユーザーガイドの「[インストール](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html)」を参照してください。AWS CLI のインストール後は設定も行っておくことをお勧めします。詳細についてはAWS コマンドラインインターフェイスユーザーガイドの「[aws configure を使用したクイック設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config)」を参照してください。なお、このページにある **[update-kubeconfig]** オプションを使用するにはAWS CLI v2 が必要です。
+  **`kubectl`** – Kubernetes クラスターを操作するためのコマンドラインツール。詳細については、「[`kubectl` および `eksctl` のセットアップ](install-kubectl.md)」を参照してください。
+  **必要な IAM アクセス許可** – 使用している IAM セキュリティプリンシパルには Amazon EKS の IAM ロール、サービスにリンクされたロール、AWS クラウドフォーメーション、VPC、その関連リソースを操作するための権限が必要になります。詳細については「IAM ユーザーガイド」の「[アクション](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelastickubernetesservice.html)」および「[サービスにリンクされたロールの使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html)」を参照してください。このガイドのすべてのステップは1 つのユーザーとして実行する必要があります。現在のユーザーを確認するには次のコマンドを実行してください：

  ```
  aws sts get-caller-identity
  ```

このトピック内のステップはバッシュ シェル内で実行することが推奨されます。Bash シェルを使用していない場合、行継続文字や、変数の設定と使用に関する方法など、一部のスクリプトコマンドのためにシェルの調整が必要となります。さらに、シェルの引用規則とエスケープ規則は異なる場合があります。詳細については「AWS コマンドラインインターフェイスのユーザーガイド」の「[AWS CLI での文字列への引用符の使用](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-quoting-strings.html)」を参照してください。

## ステップ 1: Amazon EKS クラスターを作成する
<a name="eks-create-cluster"></a>

**重要**  
可能な限りシンプルかつ迅速に使用を開始するため、このトピックではクラスターをデフォルトの設定で作成するステップについて説明します。本番で使用するクラスターを作成する前に、すべての設定内容に習熟した上で、要件を満たす設定でクラスターをデプロイすることをお勧めします。詳細については「[Amazon EKS クラスターを作成します。](create-cluster.md)」を参照してください。一部の設定はクラスターの作成時にのみ有効にできます。

1. Amazon EKS の要件を満たすように、パブリックサブネットとプライベートサブネットを持つ Amazon VPC を作成します。*地域コード* はAmazon EKS がサポートする任意の AWS リージョンに置き換えます。AWS リージョンの一覧についてはAWS の全般的なリファレンスガイドの「[Amazon EKS エンドポイントとクォータ](https://docs.aws.amazon.com/general/latest/gr/eks.html)」を参照してください。*my-eks-vpc-stack* は任意の名前に置き換えることができます。

   ```
   aws cloudformation create-stack \
     --region region-code \
     --stack-name my-eks-vpc-stack \
     --template-url https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-vpc-private-subnets.yaml
   ```
**ヒント**  
前のコマンドで作成されたすべてのリソースの一覧については、https://console.aws.amazon.com/cloudformation/ で AWS CloudFormation コンソールを開きます。*my-eks-vpc-stack* スタックを選択し、**[Resources]** (リソース タブを選択してください。

1. クラスターの IAM ロールを作成して、そのロールに必要な Amazon EKS IAM 管理ポリシーをアタッチします。Amazon EKS によって管理される Kubernetes クラスターは、そのサービスで使用するリソースを管理するために、ユーザーに代わって他の AWS のサービスを呼び出します。

   1. 次の内容を *eks-cluster-role-trust-policy.json* という名前のファイルにコピーします。

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
              "Service": "eks.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
          }
        ]
      }
      ```

   1. ロールを作成します。

      ```
      aws iam create-role \
        --role-name myAmazonEKSClusterRole \
        --assume-role-policy-document file://"eks-cluster-role-trust-policy.json"
      ```

   1. このロールに、必要な アマゾン EKS 管理の IAM ポリシーをアタッチします。

      ```
      aws iam attach-role-policy \
        --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy \
        --role-name myAmazonEKSClusterRole
      ```

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

   コンソールの右上に表示されている AWS リージョンが、クラスターを作成する AWS リージョンであることを確認します。異なる場合はAWS リージョン名の横にあるドロップダウンを展開し、使用する AWS リージョンを選択してください。

1. **[クラスターを作成]** を選択してください。このオプションが表示されない場合はまず左のナビゲーションペインの **[クラスター]** を選択してください。

1. **[クラスターの設定]** ページで、次の手順を実行してください：

   1. **カスタム設定**を選択し、**Use EKS Auto Mode**を無効にします。(EKS 自動モードクラスターを使用する場合は代わりに「」を参照してください）[AWS マネジメントコンソール を使用して EKS Auto Mode クラスターを作成する](automode-get-started-console.md)。

   1. **[名前]** に、クラスターの名前 ( など) *を入力します*。この名前には英数字 (大文字と小文字が区別されます) とハイフンのみを使用できます。先頭の文字は英数字である必要があります。また、100 文字より長くすることはできません。名前はクラスターを作成する AWS リージョンおよび AWS アカウント内で一意である必要があります。

   1. **[クラスターサービス役割]** で、「*myAmazonEKSClusterRole*」を選択してください。

   1. その他の設定はデフォルト値のままにし、**[次へ]** をクリックします。

1. **[ネットワーキングを指定]** ページで、以下の作業を行います：

   1. 前のステップで **[VPC]** ドロップダウンリストから作成した VPC の ID を選択してください。*\$1 \$1 my-eks-vpc-stack-VPC* に類似した ID です。

   1. 前のステップで作成したサブネットを**[サブネット]** のドロップダウンリストの中から選択します。このサブネットは *\$1 \$1 my-eks-vpc-stack-\$1* のように表示されます。

   1. 前のステップで作成したセキュリティグループを **[追加のセキュリティグループ]** のドロップダウンリストの中から選択します。このグループは *\$1 \$1 my-eks-vpc-stack-ControlPlaneSecurityGroup-\$1* のように表示されます。

   1. その他の設定はデフォルト値のままにし、**[次へ]** をクリックします。

1. **[オブザーバビリティの設定]**ページで、**[次へ]** を選択してください。

1. **[アドオンの選択]** ページで、**[次へ]** を選択してください。

   アドオンの詳細については「[Amazon EKS アドオン](eks-add-ons.md)」を参照してください。

1. **[選択したアドオンセッティングの設定]** ページで、**[次へ]** を選択してください。

1. **[確認して作成]** ページで、**[作成]** をクリックします。

   クラスターのプロビジョニングプロセスが完了するまで、数分の間、クラスター名の右側でステータスが ** [作成中]** と表示されます。ステータスが **[アクティブ]** になるまで、次のステップに進まないでください。
**注記**  
リクエストで指定したアベイラビリティーゾーンのいずれかに、Amazon EKS クラスターの作成に十分な容量がない場合にはエラーが表示されることがあります。このエラー出力には新しいクラスターをサポートできるアベイラビリティーゾーンが表示されます。アカウント向けにサポートされているアベイラビリティーゾーンにある 2 つ以上のサブネットを使用して、クラスターを作成します。詳細については「[容量不足](troubleshooting.md#ice)」を参照してください。

## ステップ 2: 自分のコンピュータでクラスターとの通信を設定する
<a name="eks-configure-kubectl"></a>

このセクションではクラスター用の `kubeconfig` ファイルを作成します。このファイルの設定により、`kubectl` CLI からクラスターへの通信ができるようになります。

先に進む前に、ステップ 1 で必ずクラスターの作成を正常に完了してください。

1. クラスター用の `kubeconfig` ファイルを作成もしくは更新します。*地域コード* をクラスターを作成した AWS リージョンに置き換えます。*マイクラスター* の部分は自分のクラスター名に置き換えます。

   ```
   aws eks update-kubeconfig --region region-code --name my-cluster
   ```

   デフォルトでは`config` ファイルが `~/.kube` に作成されるか、`config` ファイルが既に `~/.kube` に存在する場合にはその中に新しいクラスター設定が追加されます。

1. 設定をテストします。

   ```
   kubectl get svc
   ```
**注記**  
認可またはリソースタイプのエラーが発生した場合はトラブルシューティングトピックの「[許可されていないか、アクセスが拒否されました (`kubectl`)](troubleshooting.md#unauthorized)」を参照してください。

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

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

## ステップ 3: ノードを作成する
<a name="eks-launch-workers"></a>

**重要**  
可能な限りシンプルかつ迅速に使用を開始するため、このトピックではノードをデフォルトの設定で作成するステップについて説明します。本番で使用するノードを作成する前に、すべての設定内容に習熟した上で、要件を満たす設定でノードをデプロイすることをお勧めします。詳細については「[ノードを使用してコンピューティングリソースを管理する](eks-compute.md)」を参照してください。一部の設定はノードの作成時にのみ有効にできます。

このステップではマネージド型ノードグループを使用してノードを作成するようにクラスターを設定し、前のステップで作成したサブネットとノード IAM ロールを指定します。これにより、Amazon EC2 インスタンスで Amazon Linux アプリケーションを実行できます。

EKS でノードを設定するさまざまな方法については「[ノードを使用してコンピューティングリソースを管理する](eks-compute.md)」を参照してください。クラスターをデプロイした後に、他のノードタイプを追加できます。このガイドでは説明していませんが、[Windows セルフマネージド型](launch-windows-workers.md)および [Bottlerocket](launch-node-bottlerocket.md) ノードを、クラスターに追加することもできます。

 **EC2 Linux マネージド型ノードグループを作成するには** 

1. ノードの IAM ロールを作成して、必要な Amazon EKS IAM 管理ポリシーをアタッチします。Amazon EKS ノード `kubelet` デーモンが、ユーザーに代わって AWS API への呼び出しを実行してください。ノードはIAM インスタンスプロファイルおよび関連ポリシーを通じて、これらの API コールのアクセス許可を受け取ります。

   1. 次の内容を `node-role-trust-policy.json` という名前のファイルにコピーします。

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
              "Service": "ec2.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
          }
        ]
      }
      ```

   1. ノードの IAM ロールを作成します。

      ```
      aws iam create-role \
        --role-name myAmazonEKSNodeRole \
        --assume-role-policy-document file://"node-role-trust-policy.json"
      ```

   1. ロールに、必要なマネージド IAM ポリシーをアタッチします。

      ```
      aws iam attach-role-policy \
        --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy \
        --role-name myAmazonEKSNodeRole
      aws iam attach-role-policy \
        --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly \
        --role-name myAmazonEKSNodeRole
      aws iam attach-role-policy \
        --policy-arn arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy \
        --role-name myAmazonEKSNodeRole
      ```

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

   1. [ステップ 1: アマゾン EKS クラスターを作成する](#eks-create-cluster)で作成したクラスターの名前 (*マイクラスター* など 選択してください：

   1. **[*マイクラスター*]** ページで、次の操作を行います：

   1. **[コンピューティング]** タブを開きます。

   1. **[ノードグループを追加]** をクリックします。

1. **[ノードグループの設定]** ページで以下を実行してください：

   1. **[名前]** に、マネージド型ノードグループの一意の名前 (*マイノードグループ* など 入力してください。ノードグループ名は 63 文字以下である必要があります。先頭は文字または数字でなければなりませんが、残りの文字にはハイフンおよびアンダースコアを含めることもできます。

   1. **[ノード IAM ロール名]** で、前のステップで作成した *myAmazonEKSNodeRole* ロールを選択してください。各ノードグループには独自の一意の IAM ロールを使用することをお勧めします。

   1. [** 次へ**] を選択してください。

1. **[コンピューティングとスケーリングの設定]** ページではデフォルトの値を受け入れ、**[次へ]** をクリックします。

1. **[ネットワーキングの指定]** ページではデフォルトの値を受け入れ、**[次へ]** をクリックします。

1. **[確認と作成]** ページで、マネージド型ノードグループの設定を確認し、**[作成]** を選択してください。

1. 数分後、**[ノードグループの設定]** セクションにある **[ステータス]** の表示が、**[作成中]** から **[アクティブ]** に変わります。ステータスが **[アクティブ]** になるまで、次のステップに進まないでください。

## ステップ 4: リソースを表示する
<a name="gs-view-resources"></a>

ノードと Kubernetes のワークロードを表示することができます。

1. 左のナビゲーションペインで **[クラスター]** を選択してください。**[クラスター]** のリストで *マイクラスター* など、作成したクラスターの名前を選択してください。

1. **[*マイクラスター*]** ページで、次の項目を選択してください：

   1.  **[コンピューティング]** タブ – クラスターにデプロイした **[ノード]** が一覧表示されます。ノードの名前を選択すると、そのノードに関するより詳細な情報が表示されます。

   1.  **[リソース]** タブ – Amazon EKS クラスターにデフォルトでデプロイされたすべての Kubernetes リソースが表示されます。コンソールでリソースタイプを選択すると、その詳細を確認できます。

## ステップ 5: リソースを削除する
<a name="gs-console-clean-up"></a>

このチュートリアルのために作成したクラスターとノードの使用が終了したら、作成したリソースを削除する必要があります。リソースを削除する前に、他の目的でこのクラスターを使用する場合は[次のステップ](#gs-console-next-steps) を参照してください。

1. ここで作成した、いずれかのノードグループもしくは Fargate プロファイルを削除してください。

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

   1. 左のナビゲーションペインで **[クラスター]** を選択してください。クラスターのリストから *マイクラスター* を選択してください。

   1. **[コンピューティング]** タブを開きます。

   1. ノードグループを作成している場合はノードグループ「*マイノードグループ*」を選択した上で、**[削除]**を クリックしてください。*マイノードグループ* と入力し、**[削除]** を選択してください。

   1. ノード グループ プロファイルが削除されるまで続行しないでください。

1. クラスターを削除します。

   1. 左のナビゲーションペインで **[クラスター]** を選択してください。クラスターのリストから *マイクラスター* を選択してください。

   1. **[クラスターの削除]** を選択してください。

   1. *マイクラスター* と入力し、**[削除]** を選択してください。クラスターが削除されるまで続行しないでください。

1. 作成した VPC AWS クラウドFormation スタックを削除します。

   1. クラウドフォーメーション コンソール のhttps://console.aws.amazon.com/cloudformation/ 開きます：

   1. 「*my-eks-vpc-stack*」スタックを選択した上で、**[削除]** クリックしてください。

   1. **[*my-eks-vpc-stack* の削除]** 確認ダイアログボックスで、**[スタックを削除]** を選択してください。

1. 作成した IAM ロールを削除します。

   1. https://console.aws.amazon.com/iam/ で IAM コンソールを開きます。

   1. 左のナビゲーションペインで、**[ロール]** を選択してください。

   1. リスト (** *[myAmazonEKSClusterRole]* **または *[myAmazonEKSNodeRole]* から、作成した各ロールを選択してください。**[削除]** を選択し、要求された確認テキストを入力した後で、**[削除]** をクリックします。

## 次のステップ
<a name="gs-console-next-steps"></a>

以下のトピックはクラスターの機能を拡張するのに役立ちます。
+ クラスターを作成した [IAM プリンシパル](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal)は、`kubectl` または AWS マネジメントコンソール を使用して Kubernetes API サーバーを呼び出すことができる唯一のプリンシパルです。他の IAM プリンシパルがクラスターにアクセスできるようにする場合はそれらを追加する必要があります。詳細については「[IAM ユーザーおよびロールに Kubernetes API へのアクセスを付与する](grant-k8s-access.md)」および「[必要なアクセス許可](view-kubernetes-resources.md#view-kubernetes-resources-permissions)」を参照してください。
+ [サンプルアプリケーション](sample-deployment.md)をクラスターにデプロイします。
+ 本番用にクラスターをデプロイする前に、[クラスター](create-cluster.md)と[ノード](eks-compute.md)のすべての設定を理解しておくことをお勧めします。Amazon EC2 ノードへの SSH アクセスの有効化など一部の設定はクラスターの作成時に行う必要があります。
+ クラスターのセキュリティを強化するには[サービスアカウントの IAM ロールを使用する Amazon VPC コンテナネットワークインターフェイスプラグインの設定](cni-iam-role.md)を行ってください。