Amazon EKS クラスター VPC の作成 - Amazon EKS

Amazon EKS クラスター VPC の作成

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

Amazon EKS クラスター、ノード、および Kubernetes リソースが VPC にデプロイされます。Amazon EKS で既存の VPC を使用する場合は、その VPC が「Amazon EKS VPC およびサブネットの要件と考慮事項」に記載されている要件を満たしている必要があります。このトピックでは、Amazon EKS に用意されている AWS CloudFormation テンプレートを使用して Amazon EKS 要件を満たす VPC を作成する方法について説明します。テンプレートをデプロイすると、テンプレートによって作成されたリソースを表示して、作成されたリソースとそれらのリソースの設定を正確に把握できます。

前提条件

Amazon EKS 用の VPC を作成するには、Amazon VPC リソースを作成するのに必要な IAM アクセス許可が必要です。これらのリソースは、VPC、サブネット、セキュリティグループ、ルートテーブルとルート、およびインターネットと NAT ゲートウェイです。詳細については、「Amazon VPC ユーザーガイド」の「パブリックサブネットを持つ VPC を作成するポリシー例」を参照してください。完全なリストについては、「サービス認証リファレンス」の「Amazon EC2 のアクション、リソース、および条件キー」を参照してください。

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

Public and private subnets

この VPC には、2 つのパブリックサブネットと 2 つのプライベート サブネットがあります。パブリックサブネットに関連付けられているルートテーブルには、インターネットゲートウェイへのルートが含まれています。一方、プライベートサブネットのルートテーブルには、インターネットゲートウェイへのルートがありません。1 つのパブリックサブネットと 1 つのプライベートサブネットが同じアベイラビリティーゾーンにデプロイされます。他の公開サブネットとプライベートサブネットは、同じ AWS リージョン 内の二番目のアベイラビリティーゾーンにデプロイされます。ほとんどのデプロイにこのオプションをお勧めします。

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

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

VPC を作成するには
  1. https://console.aws.amazon.com/cloudformation で AWS CloudFormation コンソール を開きます。

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

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

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

  5. IPv4 のみをサポートする VPC、または IPv4IPv6 をサポートする 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
  6. [Specify stack details] (スタック詳細の指定) ページで、パラメータを入力し、[Next] (次へ) を選択します。

    • [スタック名]: AWS CloudFormation スタックのスタック名を選択します。例えば、前のステップで使用されたテンプレート名を使用できます。この名前には、英数字 (大文字と小文字が区別されます) とハイフンのみを使用できます。先頭の文字はアルファベット文字である必要があります。また、100 文字より長くすることはできません。

    • [VpcBlock]: VPC の IPv4 CIDR 範囲を選択します。デプロイする各ノード、Pod、およびロードバランサーには、このブロックの IPv4 アドレスが割り当てられます。デフォルトの IPv4 値で、ほとんどの実装において十分な IP アドレスを取得できますが、不足する場合はこの値を変更できます。詳細については、「Amazon VPC ユーザーガイド」の「VPC とサブネットのサイズ設定」を参照してください。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 を作成する場合、テンプレートで指定済みブロックを使用できます。

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

  8. Review ページで、スタックの作成を選択します。

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

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

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

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

    1. Amazon VPC コンソール (https://console.aws.amazon.com/vpc/) を開きます。

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

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

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

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

Only public subnets

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

VPC を作成するには
  1. https://console.aws.amazon.com/cloudformation で AWS CloudFormation コンソール を開きます。

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

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

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

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

    https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-vpc-sample.yaml
  6. [Specify Details] (詳細の指定) ページで、パラメータを入力し、[Next] (次へ) を選択します。

    • [スタック名]: AWS CloudFormation スタックのスタック名を選択します。例えば、amazon-eks-vpc-sample という名前にすることができます。この名前には、英数字 (大文字と小文字が区別されます) とハイフンのみを使用できます。先頭の文字はアルファベット文字である必要があります。また、100 文字より長くすることはできません。

    • [VpcBlock]: VPC の CIDR ブロックを選択します。デプロイする各ノード、Pod、およびロードバランサーには、このブロックの IPv4 アドレスが割り当てられます。デフォルトの IPv4 値で、ほとんどの実装において十分な IP アドレスを取得できますが、不足する場合はこの値を変更できます。詳細については、「Amazon VPC ユーザーガイド」の「VPC とサブネットのサイズ設定」を参照してください。VPC を作成したら、追加の CIDR ブロックを VPC に追加することもできます。

    • Subnet01Block: サブネット 1 の CIDR ブロックを指定します。デフォルト値は、ほとんどの実装で十分な IP アドレスを提供しますが、そうでない場合は、変更することができます。

    • Subnet02Block: サブネット 2 の CIDR ブロックを指定します。デフォルト値は、ほとんどの実装で十分な IP アドレスを提供しますが、そうでない場合は、変更することができます。

    • Subnet03Block: サブネット 3 の CIDR ブロックを指定します。デフォルト値は、ほとんどの実装で十分な IP アドレスを提供しますが、そうでない場合は、変更することができます。

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

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

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

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

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

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

Only private subnets

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

VPC を作成するには
  1. https://console.aws.amazon.com/cloudformation で AWS CloudFormation コンソール を開きます。

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

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

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

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

    https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-fully-private-vpc.yaml
  6. [Specify Details] (詳細の指定) ページで、パラメータを入力し、[Next] (次へ) を選択します。

    • [スタック名]: AWS CloudFormation スタックのスタック名を選択します。例えば、amazon-eks-fully-private-vpc という名前にすることができます。この名前には、英数字 (大文字と小文字が区別されます) とハイフンのみを使用できます。先頭の文字はアルファベット文字である必要があります。また、100 文字より長くすることはできません。

    • [VpcBlock]: VPC の CIDR ブロックを選択します。デプロイする各ノード、Pod、およびロードバランサーには、このブロックの IPv4 アドレスが割り当てられます。デフォルトの IPv4 値で、ほとんどの実装において十分な IP アドレスを取得できますが、不足する場合はこの値を変更できます。詳細については、「Amazon VPC ユーザーガイド」の「VPC とサブネットのサイズ設定」を参照してください。VPC を作成したら、追加の CIDR ブロックを VPC に追加することもできます。

    • PrivateSubnet01Block: サブネット 1 の CIDR ブロックを指定します。デフォルト値は、ほとんどの実装で十分な IP アドレスを提供しますが、そうでない場合は、変更することができます。

    • PrivateSubnet02Block: サブネット 2 の CIDR ブロックを指定します。デフォルト値は、ほとんどの実装で十分な IP アドレスを提供しますが、そうでない場合は、変更することができます。

    • PrivateSubnet03Block: サブネット 3 の CIDR ブロックを指定します。デフォルト値は、ほとんどの実装で十分な IP アドレスを提供しますが、そうでない場合は、変更することができます。

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

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

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

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

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

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