Amazon EKS クラスター VPC の作成
Amazon Virtual Private Cloud (Amazon VPC) を使用すると、定義した仮想ネットワーク内で AWS リソースを起動できます。仮想ネットワークは、お客様自身のデータセンターで運用されていた従来のネットワークによく似ていますが、 のスケーラブルなインフラストラクチャを使用できるというメリットがありますAWS 詳細については、「Amazon VPC ユーザーガイド」および「Amazon EKS ノードのクラスターネットワーキングの解明」を参照してください。
既存の VPC を使用する場合は、Amazon EKS で使用するための特定の要件を満たしている必要があります。詳細については、「クラスターー VPC とサブネットに関する考慮事項」を参照してください。このトピックでは、次のいずれかの設定を使用して、クラスターの VPC を作成する手順について説明します。
-
パブリックサブネットとプライベートサブネット - この VPC には、2 つのパブリックサブネットと 2 つのプライベート サブネットがあります。1 つのパブリックサブネットと 1 つのプライベートサブネットが同じアベイラビリティーゾーンにデプロイされます。他の公開サブネットとプライベートサブネットは、同じ AWS リージョン 内の二番目のアベイラビリティーゾーンにデプロイされます。このオプションは、すべての実稼働デプロイに推奨されます。このオプションでは、ノードをプライベートサブネットにデプロイし、Kubernetes がパブリックサブネットにロードバランサーをデプロイできるようにします。これにより、プライベートサブネットのノードで実行されているポッドへのトラフィックの負荷を分散できます。
パブリック IPv4 アドレスは、パブリックサブネットにデプロイされたノードに自動的に割り当てられます。一方、プライベートサブネットにデプロイされたノードに対しては、パブリック IPv4 アドレスは割り当てられません。また、パブリックサブネットおよびプライベートサブネットに置かれたノードに対し、IPv6 アドレスを割り当てるよう選択することもできます。プライベートサブネット内のノードは、クラスターや AWS の他のサービスとの通信が可能です。またポッドでは、各アベイラビリティーゾーンにデプロイされた NAT ゲートウェイ (IPv4)、もしくは送信専用インターネットゲートウェイ (IPv6) を介して、インターネットへのアウトバウンド通信が可能です。すべてのインバウンドトラフィックを拒否し、すべてのアウトバウンドトラフィックを許可するセキュリティグループがデプロイされます。サブネットには、Kubernetes がロードバランサーをデプロイできるようにタグが付けられています。サブネットのタグ付けの詳細については、「サブネットのタグ付け」を参照してください。
このタイプの VPC の詳細については、「パブリックサブネットとプライベートサブネット (NAT) を持つ VPC」を参照してください。
-
パブリックサブネットのみ - この VPC には、リージョン内の異なるアベイラビリティゾーンにデプロイされる三つのパブリックサブネットがあります。すべてのノードは、自動的にパブリック IPv4 アドレスが割り当てられるので、インターネットゲートウェイを介してインターネットトラフィックを送受信できます。すべてのインバウンドトラフィックを拒否し、すべてのアウトバウンドトラフィックを許可するセキュリティグループがデプロイされます。サブネットには、Kubernetes がロードバランサーをデプロイできるようにタグが付けられています。サブネットのタグ付けの詳細については、「サブネットのタグ付け」を参照してください。このタイプの VPC の詳細については、「単一パブリックサブネットを持つ VPC」を参照してください。
-
[Only private subnets] (プライベートサブネットのみ) - この VPC には、AWS リージョン 内の異なるアベイラビリティゾーンにデプロイされる三つのプライベートサブネットがあります。すべてのノードは、オプションで、NAT インスタンスまたは NAT ゲートウェイを介してインターネットトラフィックを送受信できます。すべてのインバウンドトラフィックを拒否し、すべてのアウトバウンドトラフィックを許可するセキュリティグループがデプロイされます。サブネットには、Kubernetes が内部ロードバランサーをデプロイできるようにタグが付けられています。サブネットのタグ付けの詳細については、「サブネットのタグ付け」を参照してください。このタイプの VPC の詳細については、「プライベートサブネットのみを含む VPC と AWS Site-to-Site VPN アクセス」を参照してください。
VPC に NAT インスタンス、NAT ゲートウェイ、送信専用インターネットゲートウェイ、VPN、Direct Connect などを介するアウトバウンドインターネットアクセスがない場合は、追加の要件を満たす必要があります。クラスター認証機関とクラスター API エンドポイントをノードに提供することで、EKS クラスターのイントロスペクションを回避する必要があります。場合によって、「クラスターエンドポイントのアクセスの変更」に一覧表示されている VPC エンドポイントを設定する必要もあります。
VPC をデプロイするために、eksctl
を使用するか、Amazon EKS AWS CloudFormation VPC テンプレートのいずれかを使用した場合:
この変更は、パブリックサブネットにデプロイした新しいノードグループに、次のような影響を与えます。
Amazon EKS クラスター VPC の作成
パブリックサブネットとプライベートサブネット、パブリックサブネットのみ、またはプライベートサブネットのみで、VPC を作成できます。作成する VPC タイプの詳細が記されているタブを選択します。
- Public and private subnets
-
パブリックサブネットとプライベートサブネットを持つクラスター VPC を作成するには
https://console.aws.amazon.com/cloudformation で AWS CloudFormation コンソール を開きます。
-
ナビゲーションバーで、Amazon EKS をサポートする AWS リージョン を選択します。
-
[スタックの作成] を選択し、[With new resources (standard) (新しいリソースの使用 (標準))] を選択します。
-
[Prerequisite - Prepare template] (前提条件 – テンプレートの準備) の下で、[Template is ready] (テンプレートの準備完了) がオンになっていることを確認した上で、[Specify template] (テンプレートの指定) の下で、[Amazon S3 URL] を選択します。
-
IPv4 ネットワークまたは IPv6 ネットワークを作成することができます。下記の URL の 1 つを [Amazon S3 URL] の下にあるテキスト領域に貼り付けて、[Next] (次へ) をクリックします。
-
IPv4
https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-10-29/amazon-eks-vpc-private-subnets.yaml
-
IPv6
https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-10-29/amazon-eks-ipv6-vpc-public-private-subnets.yaml
-
[Specify stack details (スタック詳細の指定)] ページで、必要に応じてパラメータを指定し、[次へ] を選択します。
-
Stack name: AWS CloudFormation スタックのスタック名を選択します。例えば、[eks-vpc] に呼び出します。この名前には、英数字 (大文字と小文字が区別されます) とハイフンのみを使用できます。先頭の文字はアルファベット文字である必要があります。また、128 文字より長くすることはできません。
-
VpcBlock: VPC の IPv4 CIDR 範囲を選択します。デプロイする各ノード、ポッド、およびロードバランサーには、このブロックの IPv4 アドレスが割り当てられます。デフォルトの IPv4 値は、ほとんどの実装において十分な IP アドレスを提供しますが、不足する場合はこの値を変更できます。詳細については、「Amazon VPC ユーザーガイド」の「VPC とサブネットのサイズ設定」を参照してください。VPC を作成したら、追加の CIDR ブロックを VPC に追加することもできます。IPv6 VPC を作成する場合、IPv6 CIDR 範囲は Amazon の GUA (Global Unicast Address) 空間から自動的に割り当てられます。
-
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 を作成する場合、テンプレートで指定済みブロックを使用できます。
-
(オプション) [Configure stack options] (スタックオプションの設定) ページで、スタックリソースにタグ付けを行った上で、[Next] (次へ) をクリックします。
-
Review ページで、スタックの作成を選択します。
-
スタックが作成されたら、コンソールで選択し、[出力] を選択します。
-
作成されたセキュリティグループの [SecurityGroups] 値を記録します。ノードをクラスターに追加する場合は、セキュリティグループの ID を指定する必要があります。セキュリティグループは、 コントロールプレーンがノードと通信できるように、サブネットに Amazon EKS が作成したエラスティックネットワークインターフェイスに適用されます。これらのネットワークインターフェイスは、説明に Amazon EKS
cluster name
があります。
-
作成された VPC の [VpcId] を記録します。これは、ノードグループテンプレートの起動時に必要です。
-
作成されたサブネットの SubnetIds と、それらをパブリックサブネットとプライベートサブネットのどちらとして作成したかを記録します。ノードをクラスターに追加する場合は、ノードを起動するサブネットの ID を指定する必要があります。
-
IPv4 VPC を作成してある場合は、以下のステップを実行しないでください。IPv6 VPC を作成している場合は、テンプレートによって作成されたパブリックサブネットにおいて、IPv6 アドレスの自動割り当てオプションが有効化されている必要があります。この設定は、プライベートサブネットに対してすでに有効になっています。以下のステップを完了して、設定を有効にします。
Amazon VPC コンソール (https://console.aws.amazon.com/vpc/) を開きます。
-
左のナビゲーションペインで [Subnets] (サブネット) を選択します。
-
パブリックサブネット (stack-name
/SubnetPublic01 または stack-name
/SubnetPublic02 には、public という語が含まれています) の 1 つを選択し、[Actions] (アクション)、[Edit subnet settings] (サブネット設定の編集) の順にクリックします。
-
[Enable auto-assign IPv6 address] (IPv6 アドレスの自動割り当てを有効にする) チェックボックスをオンにし、[Save] (保存) をクリックします。
-
他のパブリックサブネットに対しても、ここまでの手順を再度実行します。
- Only public subnets
-
パブリックサブネットのみを持つクラスター VPC を作成するには
https://console.aws.amazon.com/cloudformation で AWS CloudFormation コンソール を開きます。
-
ナビゲーションバーで、Amazon EKS をサポートする AWS リージョン を選択します。
-
[スタックの作成] を選択し、[With new resources (standard) (新しいリソースの使用 (標準))] を選択します。
-
[テンプレートの準備] の下で、[テンプレートの準備完了] が選択されていることを確認し、[テンプレートソース] の下で、[Amazon S3 URL] を選択します。
-
次の URL を [Amazon S3 URL] の下のテキスト領域に貼り付けて、[次へ] を選択します。
https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-10-29/amazon-eks-vpc-sample.yaml
-
[詳細の指定] ページで、必要に応じてパラメータを指定し、[次へ] を選択します。
-
Stack name: AWS CloudFormation スタックのスタック名を選択します。例えば、[eks-vpc] に呼び出します。この名前には、英数字 (大文字と小文字が区別されます) とハイフンのみを使用できます。先頭の文字はアルファベット文字である必要があります。また、128 文字より長くすることはできません。
-
VpcBlock: VPC の CIDR ブロックを選択します。デプロイする各ノード、ポッド、およびロードバランサーには、このブロックの IPv4 アドレスが割り当てられます。デフォルトの IPv4 値は、ほとんどの実装において十分な IP アドレスを提供しますが、不足する場合はこの値を変更できます。詳細については、「Amazon VPC ユーザーガイド」の「VPC とサブネットのサイズ設定」を参照してください。VPC を作成したら、追加の CIDR ブロックを VPC に追加することもできます。
-
Subnet01Block: サブネット 1 の CIDR ブロックを指定します。デフォルト値は、ほとんどの実装で十分な IP アドレスを提供しますが、そうでない場合は、変更することができます。
-
Subnet02Block: サブネット 2 の CIDR ブロックを指定します。デフォルト値は、ほとんどの実装で十分な IP アドレスを提供しますが、そうでない場合は、変更することができます。
-
Subnet03Block: サブネット 3 の CIDR ブロックを指定します。デフォルト値は、ほとんどの実装で十分な IP アドレスを提供しますが、そうでない場合は、変更することができます。
-
(オプション) [オプション] ページで、スタックリソースをタグ付けします。[Next] を選択します。
-
[Review] ページで、[Create ] を選択します。
-
スタックが作成されたら、コンソールで選択し、[出力] を選択します。
-
作成されたセキュリティグループの [SecurityGroups] 値を記録します。ノードをクラスターに追加する場合は、セキュリティグループの ID を指定する必要があります。セキュリティグループは、 コントロールプレーンがノードと通信できるように、サブネットに Amazon EKS が作成したエラスティックネットワークインターフェイスに適用されます。これらのネットワークインターフェイスは、説明に Amazon EKS
cluster name
があります。
-
作成された VPC の [VpcId] を記録します。これは、ワーカーノードグループテンプレートの起動時に必要です。
-
作成されたサブネットの [SubnetIds] を記録します。ノードをクラスターに追加する場合は、ノードを起動するサブネットの ID を指定する必要があります。
-
(オプション) この VPC にデプロイするクラスターは、ポッドとサービスにプライベート IPv4 アドレスを割り当てることができます。この VPC にデプロイされたクラスターでポッドとサービスにプライベート IPv6 アドレスを割り当てる場合は、VPC、サブネット、ルートテーブル、およびセキュリティグループを更新する必要があります。詳細については、「Amazon VPC ユーザーガイド」の「既存の VPC を IPv4 から IPv6 に移行する」を参照してください。Amazon EKS では、サブネットにおいて、IPv6 アドレスの Auto-assign
オプションが有効化されている必要があります (デフォルトでは無効)。
- Only private subnets
-
パブリックサブネットのみを含むクラスター VPC を作成するには
https://console.aws.amazon.com/cloudformation で AWS CloudFormation コンソール を開きます。
-
ナビゲーションバーで、Amazon EKS をサポートする AWS リージョン を選択します。
-
[スタックの作成] を選択し、[With new resources (standard) (新しいリソースの使用 (標準))] を選択します。
-
[テンプレートの準備] の下で、[テンプレートの準備完了] が選択されていることを確認し、[テンプレートソース] の下で、[Amazon S3 URL] を選択します。
-
次の URL を [Amazon S3 URL] の下のテキスト領域に貼り付けて、[次へ] を選択します。
https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-10-29/amazon-eks-fully-private-vpc.yaml
-
[詳細の指定] ページで、必要に応じてパラメータを指定し、[次へ] を選択します。
-
Stack name: AWS CloudFormation スタックのスタック名を選択します。例えば、[eks-vpc] に呼び出します。この名前には、英数字 (大文字と小文字が区別されます) とハイフンのみを使用できます。先頭の文字はアルファベット文字である必要があります。また、128 文字より長くすることはできません。
-
VpcBlock: VPC の CIDR ブロックを選択します。デプロイする各ノード、ポッド、およびロードバランサーには、このブロックの IPv4 アドレスが割り当てられます。デフォルトの IPv4 値は、ほとんどの実装において十分な IP アドレスを提供しますが、不足する場合はこの値を変更できます。詳細については、「Amazon VPC ユーザーガイド」の「VPC とサブネットのサイズ設定」を参照してください。VPC を作成したら、追加の CIDR ブロックを VPC に追加することもできます。
-
PrivateSubnet01Block: サブネット 1 の CIDR ブロックを指定します。デフォルト値は、ほとんどの実装で十分な IP アドレスを提供しますが、そうでない場合は、変更することができます。
-
PrivateSubnet02Block: サブネット 2 の CIDR ブロックを指定します。デフォルト値は、ほとんどの実装で十分な IP アドレスを提供しますが、そうでない場合は、変更することができます。
-
PrivateSubnet03Block: サブネット 3 の CIDR ブロックを指定します。デフォルト値は、ほとんどの実装で十分な IP アドレスを提供しますが、そうでない場合は、変更することができます。
-
(オプション) [オプション] ページで、スタックリソースをタグ付けします。[Next] を選択します。
-
[Review] ページで、[Create ] を選択します。
-
スタックが作成されたら、コンソールで選択し、[出力] を選択します。
-
作成されたセキュリティグループの [SecurityGroups] 値を記録します。ノードをクラスターに追加する場合は、セキュリティグループの ID を指定する必要があります。セキュリティグループは、 コントロールプレーンがノードと通信できるように、サブネットに Amazon EKS が作成したエラスティックネットワークインターフェイスに適用されます。これらのネットワークインターフェイスは、説明に Amazon EKS cluster
name
があります。
-
作成された VPC の [VpcId] を記録します。これは、ワーカーノードグループテンプレートの起動時に必要です。
-
作成されたサブネットの [SubnetIds] を記録します。ノードをクラスターに追加する場合は、ノードを起動するサブネットの ID を指定する必要があります。
-
(オプション) この VPC にデプロイするクラスターは、ポッドとサービスにプライベート IPv4 アドレスを割り当てることができます。この VPC にデプロイされたクラスターでポッドとサービスにプライベート IPv6 アドレスを割り当てる場合は、VPC、サブネット、ルートテーブル、およびセキュリティグループを更新する必要があります。詳細については、「Amazon VPC ユーザーガイド」の「既存の VPC を IPv4 から IPv6 に移行する」を参照してください。Amazon EKS では、サブネットにおいて、IPv6 アドレスの Auto-assign
オプションが有効化されている必要があります (デフォルトでは無効)。