15.2. カスタム VPC の使用について
OpenShift Container Platform 4.14 インストーラーは、AWS Outposts に AWS サブネットを自動的にデプロイできないため、VPC を手動で設定する必要があります。したがって、Amazon Web Services (AWS) の既存の Amazon Virtual Private Cloud (VPC) 内の既存のサブネットに、クラスターをデプロイする必要があります。さらに、OpenShift Container Platform を既存の AWS VPC にデプロイすることで、新しいアカウントの制限の制約を回避したり、所属する企業のガイドラインが設定した運用上の制約をより簡単に順守したりできる場合があります。
インストールプログラムは既存のサブネットにある他のコンポーネントを把握できないため、ユーザーの代わりにサブネットの CIDR を選択することはできません。クラスターをインストールするサブネットのネットワークを独自に設定する必要があります。
15.2.1. VPC を使用するための要件
インストールプログラムは、以下のコンポーネントを作成しなくなりました。
- インターネットゲートウェイ
- NAT ゲートウェイ
- サブネット
- ルートテーブル
- VPC
- VPC DHCP オプション
- VPC エンドポイント
インストールプログラムでは、クラウド提供の DNS サーバーを使用する必要があります。カスタム DNS サーバーの使用はサポートされていないため、インストールが失敗します。
カスタム VPC を使用する場合は、そのカスタム VPC と使用するインストールプログラムおよびクラスターのサブネットを適切に設定する必要があります。AWS VPC の作成と管理の詳細は、AWS ドキュメントの Amazon VPC コンソールウィザードの設定 と VPC とサブネットの操作 を参照してください。
インストールプログラムには、以下の機能はありません。
- 使用するクラスターのネットワーク範囲を細分化する。
- サブネットのルートテーブルを設定する。
- DHCP などの VPC オプションを設定する。
クラスターをインストールする前に、以下のタスクを完了する必要があります。AWS VPC でのネットワーキングの設定の詳細は、VPC ネットワーキングコンポーネント と VPC のルートテーブル を参照してください。
VPC は以下の特性を満たす必要があります。
AWS Outposts でリモートワーカーを使用して OpenShift Container Platform を作成できるようにするには、ワークロードインスタンスの作成用に AWS Outpost インスタンスに少なくとも 1 つのプライベートサブネットを作成し、コントロールプレーンインスタンスの作成用に AWS リージョンに 1 つのプライベートサブネットを作成する必要があります。リージョンに複数のプライベートサブネットを指定すると、コントロールプレーンインスタンスはこれらのサブネット全体に分散されます。また、プライベートサブネットに使用される各アベイラビリティーゾーン (Outpost プライベートサブネットを含む) にパブリックサブネットを作成する必要があります。これは、クラスターインストールの一部として API サーバーと Ingress ネットワーク用の AWS リージョンにネットワークロードバランサーが作成されるためです。Outpost プライベートサブネットと同じアベイラビリティーゾーンに AWS リージョンプライベートサブネットを作成することができます。
コントロールプレーンが使用するアベイラビリティーゾーンごとに、AWS リージョンにパブリックサブネットとプライベートサブネットを作成します。各アベイラビリティーゾーンには、AWS リージョン内に複数のパブリックサブネットと 1 つのプライベートサブネットを含めることはできません。このタイプの設定の例は、AWS ドキュメントの パブリックサブネットとプライベートサブネット (NAT) を使用した VPC を参照してください。
AWS Outposts にプライベートサブネットを作成するには、最初に Outpost インスタンスが目的のアベイラビリティーゾーンにあることを確認する必要があります。次に、Outpost ARN を追加することで、Outpost インスタンス内のそのアベイラビリティーゾーン内にプライベートサブネットを作成できます。同じアベイラビリティーゾーンで作成された AWS リージョンに別のパブリックサブネットがあることを確認してください。
各サブネット ID を記録します。インストールを完了するには、AWS リージョンで作成されたすべてのサブネット ID を
install-config.yaml
ファイルのplatform
セクションに入力し、Outpost で作成されたプライベートサブネット ID を使用するようにワーカーmachineset
を変更する必要があります。AWS ドキュメントの サブネット ID の検索 を参照してください。重要AWS Outposts でパブリックサブネットを作成する必要がある場合は、このサブネットがネットワークロードバランサーまたは Classic LoadBalancer に使用されていないことを確認してください。そうしないと、LoadBalancer の作成は失敗します。これを実現するには、
kubernetes.io/cluster/.*-outposts: owned
特殊タグをサブネットに含める必要があります。-
VPC の CIDR ブロックには、クラスターマシンの IP アドレスプールである
Networking.MachineCIDR
範囲が含まれている必要があります。サブネット CIDR ブロックは、指定したマシン CIDR に属している必要があります。 VPC には、パブリックインターネットゲートウェイが接続されている必要があります。アベイラビリティーゾーンごとに以下が必要です。
- パブリックサブネットには、インターネットゲートウェイへのルートが必要です。
- パブリックサブネットには、EIP アドレスが割り当てられた NAT ゲートウェイが必要です。
- プライベートサブネットには、パブリックサブネットの NAT ゲートウェイへのルートが必要です。
注記ローカルネットワーク経由でローカルクラスターにアクセスするには、VPC を Outpost のローカルゲートウェイルートテーブルに関連付ける必要があります。詳細については、AWS Outposts ユーザーガイドの VPC associations を参照してください。
VPC は
kubernetes.io/cluster/.*: owned
、Name
、openshift.io/cluster
タグを使用できません。インストールプログラムは
kubernetes.io/cluster/.*: shared
タグを追加するようにサブネットを変更するため、サブネットでは 1 つ以上の空のタグスロットが利用可能である必要があります。AWS ドキュメントで タグ制限 を確認し、インストールプログラムでタグを指定する各サブネットに追加できるようにします。Name
タグは EC2Name
フィールドと重複し、その結果インストールが失敗するため、使用できません。VPC で
enableDnsSupport
およびenableDnsHostnames
属性を有効にし、クラスターが VPC に割り当てられている Route 53 ゾーンを使用してクラスターの内部 DNS レコードを解決できるようにする必要があります。AWS ドキュメントの DNS Support in Your VPC を参照してください。独自の Route 53 ホストプライベートゾーンを使用する場合、クラスターのインストール前に既存のホストゾーンを VPC に関連付ける必要があります。
install-config.yaml
ファイルのplatform.aws.hostedZone
フィールドとplatform.aws.hostedZoneRole
フィールドを使用して、ホストゾーンを定義できます。クラスターをインストールするアカウントとプライベートホストゾーンを共有することで、別のアカウントからプライベートホストゾーンを使用できます。別のアカウントからプライベートホストゾーンを使用する場合は、Passthrough
またはManual
認証情報モードを使用する必要があります。
オプション 1: VPC エンドポイントを作成する
VPC エンドポイントを作成し、クラスターが使用しているサブネットにアタッチします。次のようにエンドポイントに名前を付けます。
-
ec2.<aws_region>.amazonaws.com
-
elasticloadbalancing.<aws_region>.amazonaws.com
-
s3.<aws_region>.amazonaws.com
このオプションを使用すると、VPC および必要な AWS サービスの間でネットワークトラフィックがプライベートのままになります。
オプション 2: VPC エンドポイントなしでプロキシーを作成する
インストールプロセスの一環として、HTTP または HTTPS プロキシーを設定できます。このオプションを使用すると、インターネットトラフィックはプロキシーを経由して、必要な AWS サービスに到達します。
オプション 3: VPC エンドポイントでプロキシーを作成する
インストールプロセスの一環として、VPC エンドポイントを使用して HTTP または HTTPS プロキシーを設定できます。VPC エンドポイントを作成し、クラスターが使用しているサブネットにアタッチします。次のようにエンドポイントに名前を付けます。
-
ec2.<aws_region>.amazonaws.com
-
elasticloadbalancing.<aws_region>.amazonaws.com
-
s3.<aws_region>.amazonaws.com
install-config.yaml
ファイルでプロキシーを設定するときに、これらのエンドポイントを noProxy
フィールドに追加します。このオプションを使用すると、プロキシーはクラスターがインターネットに直接アクセスするのを防ぎます。ただし、VPC と必要な AWS サービスの間のネットワークトラフィックはプライベートのままです。
必要な VPC コンポーネント
お使いのマシンとの通信を可能にする適切な VPC およびサブネットを指定する必要があります。
コンポーネント | AWS タイプ | 説明 | |
---|---|---|---|
VPC |
| 使用するクラスターのパブリック VPC を指定する必要があります。VPC は、各サブネットのルートテーブルを参照するエンドポイントを使用して、S3 でホストされているレジストリーとの通信を強化します。 | |
パブリックサブネット |
| VPC には 1 から 3 のアベイラビリティーゾーンのパブリックサブネットが必要であり、それらを適切な Ingress ルールに関連付ける必要があります。 | |
インターネットゲートウェイ |
| VPC に割り当てられたパブリックルートを持つパブリックインターネットゲートウェイが必要です。提供されるテンプレートでは、各パブリックサブネットに EIP アドレスと NAT ゲートウェイがあります。これらの NAT ゲートウェイは、プライベートサブネットインスタンスなどのクラスターリソースがインターネットに到達できるようにするもので、一部のネットワークが制限された環境またはプロキシーのシナリオでは必要ありません。 | |
ネットワークアクセス制御 |
| VPC が以下のポートにアクセスできるようにする必要があります。 | |
ポート | 理由 | ||
| インバウンド HTTP トラフィック | ||
| インバウンド HTTPS トラフィック | ||
| インバウンド SSH トラフィック | ||
| インバウンド一時 (ephemeral) トラフィック | ||
| アウトバウンド一時 (ephemeral) トラフィック | ||
プライベートサブネット |
| VPC にはプライベートサブネットを使用できます。提供される CloudFormation テンプレートは 1 から 3 アベイラビリティーゾーンのプライベートサブネットを作成できます。Outpost でリモートワーカーを実行できるようにするには、対応する AWS リージョン内にあるプライベートサブネットに加えて、VPC に Outpost インスタンス内にあるプライベートサブネットを含める必要があります。プライベートサブネットを使用できる場合は、それらの適切なルートおよびテーブルを指定する必要があります。 |
15.2.2. VPC 検証
指定するサブネットが適切であることを確認するには、インストールプログラムが以下のデータを確認します。
- 指定したサブネットすべてが存在します。
- プライベートサブネットを指定します。
- サブネットの CIDR は指定されたマシン CIDR に属します。
- 各アベイラビリティーゾーンのサブネットを指定します。各アベイラビリティーゾーンには、AWS リージョン内に 1 つのパブリックサブネットと 1 つのプライベートサブネットが含まれます (Outpost インスタンスでは作成されません)。Outpost インスタンスがインストールされているアベイラビリティーゾーンには、Outpost インスタンスに 1 つの追加のプライベートサブネットが含まれている必要があります。
- 各プライベートサブネットアベイラビリティーゾーンのパブリックサブネットを指定します。マシンは、プライベートサブネットを指定しないアベイラビリティーゾーンにはプロビジョニングされません。
既存の VPC を使用するクラスターを破棄しても、VPC は削除されません。VPC から OpenShift Container Platform クラスターを削除する場合、kubernetes.io/cluster/.*: shared
タグは、それが使用したサブネットから削除されます。
15.2.3. パーミッションの区分
OpenShift Container Platform 4.3 以降、クラスターのデプロイに、インストールプログラムがプロビジョニングするインフラストラクチャークラスターに必要なすべてのパーミッションを必要としなくなりました。この変更は、ある会社で個人がクラウドで他とは異なるリソースを作成できるようにパーミッションが区分された状態に類似するものです。たとえば、インスタンス、バケット、ロードバランサーなどのアプリケーション固有のアイテムを作成することはできますが、VPC、サブネット、または Ingress ルールなどのネットワーク関連のコンポーネントは作成できない可能性があります。
クラスターの作成時に使用する AWS の認証情報には、VPC、およびサブネット、ルーティングテーブル、インターネットゲートウェイ、NAT、VPN などの VPC 内のコアとなるネットワークコンポーネントの作成に必要なネットワークのパーミッションは必要ありません。ELB、セキュリティーグループ、S3 バケットおよびノードなどの、クラスター内でマシンに必要なアプリケーションリソースを作成するパーミッションは依然として必要になります。
15.2.4. クラスター間の分離
OpenShift Container Platform を既存のネットワークにデプロイする場合、クラスターサービスの分離の規模は以下の方法で縮小されます。
- 複数の OpenShift Container Platform クラスターを同じ VPC にインストールできます。
- ICMP Ingress はネットワーク全体から許可されます。
- TCP 22 Ingress (SSH) はネットワーク全体に対して許可されます。
- コントロールプレーンの TCP 6443 Ingress (Kubernetes API) はネットワーク全体に対して許可されます。
- コントロールプレーンの TCP 22623 Ingress (MCS) はネットワーク全体に対して許可されます。
15.2.5. AWS セキュリティーグループ
デフォルトでは、インストールプログラムは、セキュリティーグループを作成し、コントロールプレーンとコンピュートマシンに接続します。デフォルトのセキュリティーグループに関連付けられたルールは変更できません。
ただし、既存の VPC に関連付けられている追加の既存の AWS セキュリティーグループをコントロールプレーンとコンピュートマシンに適用できます。カスタムセキュリティーグループを適用すると、これらのマシンの受信トラフィックまたは送信トラフィックを制御する必要がある場合に、組織のセキュリティーニーズを満たすことができます。
インストールプロセスの一環として、クラスターをデプロイする前に install-config.yaml
ファイルを変更してカスタムセキュリティーグループを適用します。
詳細は、「既存の AWS セキュリティーグループのクラスターへの適用」を参照してください。