

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

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

# Amazon EKS クラスターの Amazon VPC を作成する
<a name="creating-a-vpc"></a>

Amazon Virtual Private Cloud (Amazon VPC) を使用すると、定義した仮想ネットワーク内で AWS リソースを起動できます。この仮想ネットワークは、お客様自身のデータセンターで運用されている従来のネットワークによく似ています。ただし、Amazon Web Services のスケーラブルなインフラストラクチャを使用できるというメリットがあります。本番用に使う Amazon EKS クラスターをデプロイする前に、Amazon VPC サービスを十分に理解しておくことをお勧めします。詳細については、[Amazon VPC ユーザーガイド](https://docs.aws.amazon.com/vpc/latest/userguide/)を参照してください。

Amazon EKS クラスター、ノード、および Kubernetes リソースが VPC にデプロイされます。Amazon EKS で既存の VPC を使用する場合は、その VPC が「[VPC とサブネットの Amazon EKS ネットワーキング要件を表示する](network-reqs.md)」に記載されている要件を満たしている必要があります。このトピックでは、Amazon EKS に用意されている AWS CloudFormation テンプレートを使用して Amazon EKS 要件を満たす VPC を作成する方法について説明します。テンプレートをデプロイすると、テンプレートによって作成されたリソースを表示して、作成されたリソースとそれらのリソースの設定を正確に把握できます。ハイブリッドノードを使用している場合、VPC のルートテーブルにオンプレミスネットワークへのルートが含まれている必要があります。ハイブリッドノードのネットワーク要件の詳細については、「[ハイブリッドノード用のネットワークを準備する](hybrid-nodes-networking.md)」を参照してください。

## 前提条件
<a name="_prerequisites"></a>

Amazon EKS 用の VPC を作成するには、Amazon VPC リソースを作成するのに必要な IAM アクセス許可が必要です。これらのリソースは、VPC、サブネット、セキュリティグループ、ルートテーブルとルート、およびインターネットと NAT ゲートウェイです。詳細については、「Amazon VPC ユーザーガイド」の「[パブリックサブネットを持つ VPC を作成するポリシー例](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-policy-examples.html#vpc-public-subnet-iam)」を参照してください。完全なリストについては、「[サービス認可リファレンス](https://docs.aws.amazon.com/service-authorization/latest/reference/reference.html)」の「[アクション](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html#amazonec2-actions-as-permissions)」を参照してください。

パブリックサブネットとプライベートサブネット、パブリックサブネットのみ、またはプライベートサブネットのみで、VPC を作成できます。

## パブリックサブネットおよびプライベートサブネット
<a name="_public_and_private_subnets"></a>

この VPC には、2 つのパブリックサブネットと 2 つのプライベート サブネットがあります。パブリックサブネットの関連付けられているルートテーブルには、インターネットゲートウェイへのルートが含まれています。一方、プライベートサブネットのルートテーブルには、インターネットゲートウェイへのルートがありません。1 つのパブリックサブネットと 1 つのプライベートサブネットが同じ[アベイラビリティーゾーン](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-regions-availability-zones)にデプロイされます。他のパブリックサブネットとプライベートサブネットは、同じ AWS リージョン内の 2 番目のアベイラビリティーゾーンにデプロイされます。ほとんどのデプロイにこのオプションをお勧めします。

このオプションを使用すると、プライベートサブネットにノードをデプロイできます。このオプションでは、Kubernetes がパブリックサブネットにロードバランサーをデプロイできるようにします。これにより、プライベートサブネットのノードで実行されている Pod へのトラフィックの負荷を分散できます。パブリック `IPv4` アドレスは、パブリックサブネットにデプロイされたノードに自動的に割り当てられます。一方、プライベートサブネットにデプロイされたノードに対しては、パブリック `IPv4` アドレスは割り当てられません。

また、パブリックサブネットおよびプライベートサブネットに置かれたノードに対し、`IPv6` アドレスを割り当てることもできます。プライベートサブネット内のノードは、クラスターや他の AWS サービスとの通信が可能です。Pod は、各アベイラビリティーゾーンにデプロイされた NAT ゲートウェイ (`IPv4` アドレスを使用) または送信専用インターネットゲートウェイ (`IPv6` アドレスを使用) を介して、インターネットへの通信が可能です。クラスターまたはノード以外のソースからのすべてのインバウンドトラフィックを拒否するが、すべてのアウトバウンドトラフィックを許可するルールを持つセキュリティグループがデプロイされます。サブネットには、Kubernetes がロードバランサーをデプロイできるようにタグが付けられています。

1. [AWS CloudFormation コンソール](https://console.aws.amazon.com/cloudformation/)を開きます。

1. ナビゲーションバーで、Amazon EKS をサポートする AWS リージョンを選択します。

1. **[スタックの作成]** を選択し、**[新しいリソースの使用 (標準)]** を選択します。

1. **[Prerequisite - Prepare template]** (前提条件 – テンプレートの準備) の下で、**[Template is ready]** (テンプレートの準備完了) がオンになっていることを確認した上で、**[Specify template]** (テンプレートの指定) の下で、**[Amazon S3 URL]** を選択します。

1. `IPv4` のみをサポートする VPC、または `IPv4` と `IPv6` をサポートする VPC を作成できます。下記の URL の 1 つを **[Amazon S3 URL]** の下にあるテキスト領域に貼り付けて、**[Next]** (次へ) をクリックします。
   +  `IPv4` 

```
https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-vpc-private-subnets.yaml
```
+  `IPv4` および `IPv6` 

```
https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-ipv6-vpc-public-private-subnets.yaml
```

1. **[Specify stack details]** (スタック詳細の指定) ページで、パラメータを入力し、**[Next]** (次へ) を選択します。
   +  **スタック名**: AWS CloudFormation スタックのスタック名を選択します。例えば、前のステップで使用されたテンプレート名を使用できます。この名前には英数字 (大文字と小文字が区別されます) とハイフンのみを使用できます。先頭の文字は英数字である必要があります。また、100 文字より長くすることはできません。名前は、クラスターを作成する AWS リージョンおよび AWS アカウント内で一意である必要があります。
   +  **[VpcBlock]**: VPC の `IPv4` CIDR 範囲を選択します。デプロイする各ノード、ポッド、およびロードバランサーには、このブロックの `IPv4` アドレスが割り当てられます。デフォルトの `IPv4` 値で、ほとんどの実装において十分な IP アドレスを取得できますが、不足する場合はこの値を変更できます。詳細については、「Amazon VPC ユーザーガイド」の「[VPC とサブネットのサイズ設定](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html#VPC_Sizing)」を参照してください。VPC を作成したら、追加の CIDR ブロックを VPC に追加することもできます。`IPv6` VPC を作成する場合、`IPv6` CIDR 範囲は Amazon のグローバルユニキャストアドレススペースから自動的に割り当てられます。
   +  **[PublicSubnet01Block]**: パブリックサブネット 1 の `IPv4` CIDR ブロックを指定します。デフォルト値は、ほとんどの実装で十分な IP アドレスを提供しますが、そうでない場合は、変更することができます。`IPv6` VPC を作成する場合、テンプレートで指定済みブロックを使用できます。
   +  **[PublicSubnet02Block]**: パブリックサブネット 2 の `IPv4` CIDR ブロックを指定します。デフォルト値は、ほとんどの実装で十分な IP アドレスを提供しますが、そうでない場合は、変更することができます。`IPv6` VPC を作成する場合、テンプレートで指定済みブロックを使用できます。
   +  **[PrivateSubnet01Block]**: プライベートサブネット 1 の `IPv4` CIDR ブロックを指定します。デフォルト値は、ほとんどの実装で十分な IP アドレスを提供しますが、そうでない場合は、変更することができます。`IPv6` VPC を作成する場合、テンプレートで指定済みブロックを使用できます。
   +  **[PrivateSubnet02Block]**: プライベートサブネット 2 の `IPv4` CIDR ブロックを指定します。デフォルト値は、ほとんどの実装で十分な IP アドレスを提供しますが、そうでない場合は、変更することができます。`IPv6` VPC を作成する場合、テンプレートで指定済みブロックを使用できます。

1. (オプション) **[Configure stack options]** (スタックオプションの設定) ページで、スタックリソースにタグ付けを行った上で、**[Next]** (次へ) をクリックします。

1. **[確認]** ページで **[スタックの作成]** を選択します。

1. スタックが作成されたら、コンソールで選択し、**[Outputs]** (出力) を選択します。

1. 作成された VPC の **[VpcId]** を記録します。これは、クラスターとノードを作成するときに必要です。

1. 作成されたサブネットの **SubnetIds** と、それらをパブリックサブネットとプライベートサブネットのどちらとして作成したかを記録します。クラスターとノードを作成するときは、これらのうち少なくとも 2 つが必要です。

1. `IPv4` VPC を作成している場合、この手順をスキップしてください。`IPv6` VPC を作成している場合は、テンプレートによって作成されたパブリックサブネットにおいて、`IPv6` アドレスの自動割り当てオプションが有効化されている必要があります。この設定は、プライベートサブネットに対してすでに有効になっています。次の手順を完了して、設定を有効にします。

   1. Amazon VPC コンソールの https://console.aws.amazon.com/vpc/ を開いてください。

   1. 左のナビゲーションペインで **[Subnets]** (サブネット) を選択します。

   1. パブリックサブネット (** *stack-name*/SubnetPublic01** または ** *stack-name*/SubnetPublic02** には、**public** という語が含まれています) の 1 つを選択し、**[Actions]** (アクション)、**[Edit subnet settings]** (サブネット設定の編集) の順に選択します。

   1. **[Enable auto-assign IPv6 address]** (IPv6 アドレスの自動割り当てを有効にする) チェックボックスをオンにし、**[Save]** (保存) をクリックします。

   1. 他のパブリックサブネットに対しても、ここまでの手順を再度実行します。

## パブリックサブネットのみ
<a name="_only_public_subnets"></a>

この VPC には、AWS リージョン内の異なるアベイラビリティーゾーンにデプロイされる 3 つのパブリックサブネットがあります。すべてのノードには自動的にパブリック `IPv4` アドレスが割り当てられ、[インターネットゲートウェイ](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html)を介してインターネットトラフィックを送受信できます。すべてのインバウンドトラフィックを拒否し、すべてのアウトバウンドトラフィックを許可する[セキュリティグループ](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html)がデプロイされます。サブネットには、Kubernetes がロードバランサーをデプロイできるようにタグが付けられています。

1. [AWS CloudFormation コンソール](https://console.aws.amazon.com/cloudformation/)を開きます。

1. ナビゲーションバーで、Amazon EKS をサポートする AWS リージョンを選択します。

1. **[Create stack]** (スタックの作成) を選択し、**[With new resources (standard)]** (新しいリソースの使用 (標準)) を選択します。

1. **[テンプレートの準備]** の下で、**[テンプレートの準備完了]** が選択されていることを確認し、**[テンプレートソース]** の下で、**[Amazon S3 URL]** を選択します。

1. 次の URL を **[Amazon S3 URL]** の下のテキスト領域に貼り付けて、**[次へ]** を選択します。

```
https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-vpc-sample.yaml
```

1. **[Specify Details]** (詳細の指定) ページで、パラメータを入力し、**[Next]** (次へ) を選択します。
   +  **スタック名**: AWS CloudFormation スタックのスタック名を選択します。例えば、*amazon-eks-vpc-sample* という名前にすることができます。この名前には英数字 (大文字と小文字が区別されます) とハイフンのみを使用できます。先頭の文字は英数字である必要があります。また、100 文字より長くすることはできません。名前は、クラスターを作成する AWS リージョンおよび AWS アカウント内で一意である必要があります。
   +  **[VpcBlock]**: VPC の CIDR ブロックを選択します。デプロイする各ノード、ポッド、およびロードバランサーには、このブロックの `IPv4` アドレスが割り当てられます。デフォルトの `IPv4` 値で、ほとんどの実装において十分な IP アドレスを取得できますが、不足する場合はこの値を変更できます。詳細については、「Amazon VPC ユーザーガイド」の「[VPC とサブネットのサイズ設定](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html#VPC_Sizing)」を参照してください。VPC を作成したら、追加の CIDR ブロックを VPC に追加することもできます。
   +  **Subnet01Block**: サブネット 1 の CIDR ブロックを指定します。デフォルト値は、ほとんどの実装で十分な IP アドレスを提供しますが、そうでない場合は、変更することができます。
   +  **Subnet02Block**: サブネット 2 の CIDR ブロックを指定します。デフォルト値は、ほとんどの実装で十分な IP アドレスを提供しますが、そうでない場合は、変更することができます。
   +  **Subnet03Block**: サブネット 3 の CIDR ブロックを指定します。デフォルト値は、ほとんどの実装で十分な IP アドレスを提供しますが、そうでない場合は、変更することができます。

1. (オプション) **[オプション]** ページで、スタックリソースをタグ付けします。[**次へ**] を選択します。

1. [**Review**] ページで、[**Create **] を選択します。

1. スタックが作成されたら、コンソールで選択し、**[Outputs]** (出力) を選択します。

1. 作成された VPC の **[VpcId]** を記録します。これは、クラスターとノードを作成するときに必要です。

1. 作成されたサブネットの **[SubnetIds]** を記録します。クラスターとノードを作成するときは、これらのうち少なくとも 2 つが必要です。

1. (オプション) この VPC にデプロイするクラスターは、Pod とサービスにプライベート `IPv4` アドレスを割り当てることができます。この VPC にクラスターをデプロイし、Pod とサービスにプライベート `IPv6` アドレスを割り当てる場合は、VPC、サブネット、ルートテーブル、およびセキュリティグループを更新します。詳細については、「Amazon VPC ユーザーガイド」の「[既存の VPC を IPv4 から IPv6 に移行する](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6.html)」を参照してください。Amazon EKS では、サブネットにおいて、`IPv6` アドレスの `Auto-assign` オプションが有効化されている必要があります。デフォルトでは、このオプションは無効となっています。

## プライベートサブネットのみ
<a name="_only_private_subnets"></a>

この VPC には、AWS リージョン内の異なるアベイラビリティーゾーンにデプロイされる 3 つのプライベートサブネットがあります。サブネットにデプロイされたリソースはインターネットにアクセスできず、インターネットからサブネット内のリソースにアクセスすることもできません。ノードが通常アクセスする必要があるいくつかの AWS サービスの AWS PrivateLink を使用して、[VPC エンドポイント](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-access-aws-services.html)がテンプレートによって作成されます。ノードにアウトバウンドインターネットアクセスが必要な場合は、VPC が作成された後で、各サブネットのアベイラビリティーゾーン内に、パブリック [NAT ゲートウェイ](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)を追加できます。[セキュリティグループ](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html)は、サブネットにデプロイされたリソースからのトラフィックを除き、すべてのインバウンドトラフィックを拒否するように作成されます。また、セキュリティグループは、すべてのアウトバウンドトラフィックを許可します。サブネットには、Kubernetes が内部ロードバランサーをデプロイできるようにタグが付けられています。この設定で VPC を作成する場合は、「[インターネットアクセスが制限されたプライベートクラスターをデプロイする](private-clusters.md)」を参照してその他の要件と考慮事項を確認してください。

1. [AWS CloudFormation コンソール](https://console.aws.amazon.com/cloudformation/)を開きます。

1. ナビゲーションバーで、Amazon EKS をサポートする AWS リージョンを選択します。

1. **[Create stack]** (スタックの作成) を選択し、**[With new resources (standard)]** (新しいリソースの使用 (標準)) を選択します。

1. **[テンプレートの準備]** の下で、**[テンプレートの準備完了]** が選択されていることを確認し、**[テンプレートソース]** の下で、**[Amazon S3 URL]** を選択します。

1. 次の URL を **[Amazon S3 URL]** の下のテキスト領域に貼り付けて、**[次へ]** を選択します。

```
https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-fully-private-vpc.yaml
```

1. **[詳細の指定]** ページでパラメータを入力し、**[次へ]** を選択します。
   +  **スタック名**: AWS CloudFormation スタックのスタック名を選択します。例えば、*amazon-eks-fully-private-vpc* という名前にすることができます。この名前には英数字 (大文字と小文字が区別されます) とハイフンのみを使用できます。先頭の文字は英数字である必要があります。また、100 文字より長くすることはできません。名前は、クラスターを作成する AWS リージョンおよび AWS アカウント内で一意である必要があります。
   +  **[VpcBlock]**: VPC の CIDR ブロックを選択します。デプロイする各ノード、ポッド、およびロードバランサーには、このブロックの `IPv4` アドレスが割り当てられます。デフォルトの `IPv4` 値で、ほとんどの実装において十分な IP アドレスを取得できますが、不足する場合はこの値を変更できます。詳細については、「Amazon VPC ユーザーガイド」の「[VPC とサブネットのサイズ設定](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html#VPC_Sizing)」を参照してください。VPC を作成したら、追加の CIDR ブロックを VPC に追加することもできます。
   +  **PrivateSubnet01Block**: サブネット 1 の CIDR ブロックを指定します。デフォルト値は、ほとんどの実装で十分な IP アドレスを提供しますが、そうでない場合は、変更することができます。
   +  **PrivateSubnet02Block**: サブネット 2 の CIDR ブロックを指定します。デフォルト値は、ほとんどの実装で十分な IP アドレスを提供しますが、そうでない場合は、変更することができます。
   +  **PrivateSubnet03Block**: サブネット 3 の CIDR ブロックを指定します。デフォルト値は、ほとんどの実装で十分な IP アドレスを提供しますが、そうでない場合は、変更することができます。

1. (オプション) **[オプション]** ページで、スタックリソースをタグ付けします。[**次へ**] を選択します。

1. [**Review**] ページで、[**Create **] を選択します。

1. スタックが作成されたら、コンソールで選択し、**[Outputs]** (出力) を選択します。

1. 作成された VPC の **[VpcId]** を記録します。これは、クラスターとノードを作成するときに必要です。

1. 作成されたサブネットの **[SubnetIds]** を記録します。クラスターとノードを作成するときは、これらのうち少なくとも 2 つが必要です。

1. (オプション) この VPC にデプロイするクラスターは、Pod とサービスにプライベート `IPv4` アドレスを割り当てることができます。この VPC にクラスターをデプロイし、Pod とサービスにプライベート `IPv6` アドレスを割り当てる場合は、VPC、サブネット、ルートテーブル、およびセキュリティグループを更新します。詳細については、「Amazon VPC ユーザーガイド」の「[既存の VPC を IPv4 から IPv6 に移行する](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6.html)」を参照してください。Amazon EKS は、サブネットで `Auto-assign IPv6` アドレスオプションが有効になっている必要があります (デフォルトでは無効)。