クラスタの作成とデプロイメントのためのネットワーク・リソース構成
Container Engine for Kubernetes (OKE)を使用するようにネットワーク・リソースを構成する方法を確認します。
Container Engine for Kubernetesを使用してテナンシ内のリージョンにクラスタを作成およびデプロイする前に:
- テナント内には、必要なネットワーク・リソース(VCN、サブネット、インターネット・ゲートウェイ、ルート表、ネットワーク・セキュリティ・グループ、セキュリティ・リストなど)を含むコンパートメントがすでに存在している必要があります。そのようなコンパートメントが存在しない場合は、作成する必要があります。ネットワーク・リソースは、ルート・コンパートメントに配置できます。ただし、複数のチームがクラスタを作成すると予想される場合、ベスト・プラクティスはチームごとに個別のコンパートメントを作成することです。
- コンパートメント内のネットワーク・リソース(VCN、サブネット、インターネット・ゲートウェイ、ルート表、ネットワーク・セキュリティ・グループ、セキュリティ・リストなど)は、クラスタを作成およびデプロイする各リージョンで適切に構成する必要があります。新しいクラスタを作成する場合、Container Engine for Kubernetesではクイック作成ワークフローで新しいネットワーク・リソースを自動的に作成して構成できます。または、カスタム作成ワークフローで使用する既存のネットワーク・リソースを明示的に指定できます。既存のネットワーク・リソースを指定する場合は、このトピックで説明するように、あなたまたは他のユーザーがそれらのリソースを適切に構成している必要があります。
このトピックでは、ネットワーク・リソースごとに必要な構成について説明します。一般的な構成の詳細は、ネットワーク・リソース構成の例を参照してください。
紹介のチュートリアルは、Oracle Cloud Infrastructure Container Engine for Kubernetesを使用したクラスタの作成を参照してください。関連する開発者チュートリアルも多数用意されています。
VCN構成
クラスタを作成してデプロイするVCNは、次のように構成する必要があります:
- VCNには、クラスタに必要なすべてのリソース(Kubernetes APIエンドポイント、ワーカー・ノード、ポッド、ロード・バランサ)に対して十分な大きさのCIDRブロックが定義されている必要があります。/16 CIDRブロックは、ほとんどすべてのユースケース(たとえば、10.0.0.0/16)に十分な大きさになります。VCNに指定するCIDRブロックは、フローチャネルCNIプラグインを使用する際(ポッド・ネットワーキングにフラッシュチャネルCNIプラグインを使用を参照)、およびKubernetesサービス(CIDRブロックおよびContainer Engine for Kubernetesを参照)、ポッドに指定するCIDRブロックと重複することはできません。
- VCNには、ワーカー・ノード、ロード・バランサ、Kubernetes APIエンドポイント、およびOCI VCNネイティブ・ポッド・ネットワークCNIプラグインを使用している場合のポッドに対して、適切な数のサブネットが定義されている必要があります(ポッド・ネットワーク用のOCI VCNネイティブ・ポッド・ネットワークCNIプラグインの使用を参照)。ベスト・プラクティスは、リージョナル・サブネットを使用して、可用性ドメイン全体のフェイルオーバーを実装しやすくすることです。サブネットの構成を参照してください。
- VCNには、セキュリティ・ルールが定義されている必要があります(各サブネットのネットワーク・セキュリティ・グループまたはセキュリティ・リスト、あるいはその両方)。ネットワーク・セキュリティ・グループまたはセキュリティ・リスト(あるいはその両方)でのセキュリティ・ルール構成を参照してください。
- VCNにはDNS解決を選択することをお薦めします。
- パブリック・サブネットを使用している場合、VCNにはインターネット・ゲートウェイが必要です。インターネット・ゲートウェイの構成を参照してください。
- プライベート・サブネットを使用している場合、VCNにNATゲートウェイおよびサービス・ゲートウェイが必要です。NATゲートウェイの構成およびサービス・ゲートウェイの構成を参照してください。
- VCNにNATゲートウェイ、サービス・ゲートウェイまたはインターネット・ゲートウェイがある場合は、適切なルールが定義されたルート表が必要です。ルート表の構成を参照してください。
VCNとサブネットおよびネットワーク・リソース構成の例を参照してください。
インターネット・ゲートウェイの構成
パブリック・サブネット(ワーカー・ノード、ロード・バランサまたはKubernetes APIエンドポイント用)を使用する予定で、サブネットがインターネットとの間のアクセスを必要とする場合、VCNにはインターネット・ゲートウェイが必要です。インターネット・ゲートウェイは、宛先CIDRブロック0.0.0.0/0のターゲットとしてルート表のルート・ルールで指定する必要があります。
VCNとサブネットおよびネットワーク・リソース構成の例を参照してください。
NATゲートウェイの構成
プライベート・サブネット(ワーカー・ノード、Kubernetes APIエンドポイント、またはOCI VCN- Native Pod Networking CNIプラグインの使用時にポッド用)を使用する予定で、サブネットにはインターネットへのアクセスが必要な場合、VCNにNATゲートウェイが必要です。たとえば、デプロイされたアプリケーションがソフトウェアをダウンロードしたり、サード・パーティのサービスにアクセスしたりすることが予想される場合です。
NATゲートウェイは、宛先CIDRブロック0.0.0.0/0のターゲットとしてルート表のルート・ルールで指定する必要があります。
NATゲートウェイおよびネットワーク・リソース構成の例を参照してください。
サービス・ゲートウェイの構成
OCI VCNネイティブPod Networking CNIプラグインを使用している場合、ワーカー・ノード、Kubernetes APIエンドポイントまたはポッドにプライベート・サブネットを使用する場合は、VCNにサービス・ゲートウェイが必要です。
サービス・ゲートウェイをワーカー・ノード・サブネット、Kubernetes APIエンドポイント・サブネットまたはポッド・サブネットと同じVCNおよびコンパートメント内に作成し、「Oracle Services Network内のすべての<region>サービス」オプションを選択します。
サービス・ゲートウェイは、Oracle Services Networkのすべての<region>サービスのターゲットとしてルート表のルート・ルールで指定する必要があります。
Oracle Servicesへのアクセス: サービス・ゲートウェイおよびネットワーク・リソース構成の例を参照してください。
ルート表の構成
ワーカー・ノード・サブネットのルート表
ワーカー・ノードをパブリック・サブネットにデプロイする場合、サブネット・ルート表には、インターネット・ゲートウェイを宛先CIDRブロック0.0.0.0/0のターゲットとして指定するルート・ルールが必要です。
ワーカー・ノードをプライベート・サブネットにデプロイする場合、サブネット・ルート表には次のものが必要です:
- Oracle Services Networkのすべての<region>サービスのターゲットとしてサービス・ゲートウェイを指定するルート・ルール
- NATゲートウェイを宛先CIDRブロック0.0.0.0/0のターゲットとして指定するルート・ルール
Kubernetes APIエンドポイント・サブネットのルート表
パブリック・サブネットにKubernetes APIエンドポイントをデプロイする場合、サブネット・ルート表には、宛先CIDRブロック0.0.0.0/0のターゲットとしてインターネット・ゲートウェイを指定するルート・ルールが必要です。
プライベート・サブネットにKubernetes APIエンドポイントをデプロイする場合、サブネット・ルート表には次のものが必要です:
- Oracle Services Networkのすべての<region>サービスのターゲットとしてサービス・ゲートウェイを指定するルート・ルール
- NATゲートウェイを宛先CIDRブロック0.0.0.0/0のターゲットとして指定するルート・ルール
ロード・バランサ・サブネットのルート表
パブリック・サブネットにロード・バランサをデプロイする場合、サブネット・ルート表には、宛先CIDRブロック0.0.0.0/0のターゲットとしてインターネット・ゲートウェイを指定するルート・ルールが必要です。
ロード・バランサをプライベート・サブネットにデプロイする場合は、サブネット・ルート表を空にできます。
ポッド・サブネットのルート表
ポッド・ネットワーキングにOCI VCNネイティブ・ポッド・ネットワーキングCNIプラグインを使用する場合は、プライベート・サブネットにポッドをデプロイします。サブネット・ルート表には、次のものが必要です。
- Oracle Services Networkのすべての<region>サービスのターゲットとしてサービス・ゲートウェイを指定するルート・ルール
- NATゲートウェイを宛先CIDRブロック0.0.0.0/0のターゲットとして指定するルート・ルール
ポッド・ネットワーキングにflannel CNIプラグインを使用する場合、ポッド・サブネットは必要ありません。
ルート表の構成に関するノート
-
非対称ルーティングの可能性を回避するために、パブリック・サブネットのルート表には、インターネット・ゲートウェイをターゲットとするルート・ルールと、サービス・ゲートウェイをターゲットとするルート・ルールの両方を含めることはできません(Oracleサービスからサービス・ゲートウェイを介したパブリック・インスタンスへのアクセスに関する問題を参照してください)。
-
ルート表の設定の詳細は、次を参照してください:
DHCPオプションの構成
クラスタを作成してデプロイするVCNには、DHCPオプションが構成されている必要があります。Internet and VCN Resolverの「DNSタイプ」のデフォルト値はそのまま使用できます。
DHCPオプションおよびネットワーク・リソース構成の例を参照してください。
サブネットの構成
作成するクラスタの特性によって、構成するサブネットの数が決まります。ベスト・プラクティスは、リージョナル・サブネットを使用して、可用性ドメイン全体のフェイルオーバーを実装しやすくすることです。
クラスタを作成およびデプロイするVCNには、少なくとも2つの(オプションでさらに)異なるサブネットが必要です:
- Kubernetes APIエンドポイント・サブネット
- ワーカー・ノード・サブネット
- 1つのリージョンまたは2つのAD固有のロード・バランサ・サブネット(オプション)
- ポッド・サブネット(VCNネイティブ・ポッド・ネットワーキングを使用している場合)
- 要塞サブネット(オプション)
サブネットを結合することも、セキュリティ・ルールを結合することもできます。ただし、この方法では、セキュリティの管理が難しくなるため、ネットワーク・セキュリティ・グループを使用してクラスタへのアクセスを制御しないかぎり、推奨されません。
サブネットCIDRブロックは、クラスタ内で実行されているポッドに指定するCIDRブロックと重複しないようにする必要があります(CIDRブロックおよびContainer Engine for Kubernetesを参照)。
仮想ノードと管理対象ノードの要件が異なるため、管理対象ノードではなく仮想ノードを使用する場合、ワーカー・ノード・サブネットとポッド・サブネットの構成は若干異なります。
サブネットは、次のプロパティで構成する必要があります:
- ルート表: ルート表の構成を参照してください
- DHCPオプション: DHCPオプションの構成を参照してください
- ネットワーク・セキュリティ・グループまたはセキュリティ・リスト(あるいはその両方): ネットワーク・セキュリティ・グループまたはセキュリティ・リスト(あるいはその両方)でのセキュリティ・ルール構成を参照してください
VCNとサブネットおよびネットワーク・リソース構成の例を参照してください。
Kubernetes APIエンドポイント・サブネットの構成
Kubernetes APIエンドポイント・サブネットは、クラスタ・コントロール・プレーン上のKubernetes APIへのアクセスを提供するエンドポイントをホストします。
Kubernetes APIエンドポイント・サブネットはリージョナル・サブネットである必要があり、プライベート・サブネットまたはパブリック・サブネットにすることができます:
- Kubernetes APIエンドポイントにパブリック・サブネットを指定する場合、パブリックIPアドレスをエンドポイントに割り当てることで、オプションでエンドポイントをインターネットに公開できます。パブリックIPアドレスを使用すると、サード・パーティのクラウド・サービス(SaaS CI/CDサービスなど)がKubernetes APIエンドポイントにアクセスできます。次の点に注意してください:
- Kubernetes APIエンドポイントにパブリックIPアドレスがある場合、インターネット・ゲートウェイを使用してエンドポイントにアクセスできるようにするには、ルート・ルールおよびセキュリティ・ルールが存在する必要があります(例1: クラスタとFlannel CNIプラグイン、パブリックKubernetes APIエンドポイント、プライベート・ワーカー・ノードおよびパブリック・ロード・バランサおよび例3: クラスタとOCI CNIプラグイン、パブリックKubernetes APIエンドポイント、プライベート・ワーカー・ノードおよびパブリック・ロード・バランサを参照)。
- Kubernetes APIエンドポイントにパブリックIPアドレスがない場合は、サービス・ゲートウェイおよびNATゲートウェイを使用してエンドポイントにアクセスできるように、ルート・ルールおよびセキュリティ・ルールが存在する必要があります(例2:Flannel CNIプラグイン、Private Kubernetes API Endpoint、Private Worker NodesおよびPublic Load Balancersを使用したクラスタと例4: OCI CNIプラグインを含むクラスタ、Private Kubernetes APIエンドポイント、Private Worker NodesおよびPublic Load Balancers)。
- クラスタを作成した後、パブリックIPアドレスがKubernetes APIエンドポイントに割り当てられているかどうかを変更できます。パブリックIPアドレスがエンドポイントに割り当てられているかどうかを変更する場合は、ルート・ルールとセキュリティ・ルールも適切に更新する必要があることに注意してください。
- Kubernetes APIエンドポイントにプライベート・サブネットを指定すると、トラフィックは、VCN内の別のサブネット、別のVCNまたはオンプレミス・ネットワーク(FastConnectでピアリングされている)からKubernetes APIエンドポイント・サブネットにアクセスできます。パブリック・サブネット上の要塞ホストをKubernetes APIエンドポイントに到達するように設定することもできます(クラスタ・アクセスのための要塞の設定を参照)。
ワーカー・ノード・サブネットの構成
ワーカー・ノード・サブネットは、ワーカー・ノードをホストします。ノード・プール内のすべての管理対象ノードは、同じワーカー・ノード・サブネットに属します。
ワーカー・ノード・サブネットは、単一のリージョナル・サブネットまたは複数のAD固有のサブネット(各可用性ドメインに1つずつ)のいずれかです。
管理対象/自己管理ノード:ワーカー・ノード・サブネットは、パブリック・サブネットまたはプライベート・サブネットのいずれかです。ただし、最大のセキュリティのために、ワーカー・ノード・サブネットはプライベート・サブネットにすることをお薦めします。
仮想ノード:ワーカー・ノード・サブネットは、パブリック・サブネットまたはプライベート・サブネットのいずれかです。ただし、最大のセキュリティのために、ワーカー・ノード・サブネットはプライベート・サブネットにすることをお薦めします。また、ワーカー・ノード・サブネットとポッド・サブネットが同じサブネットであることもお薦めします(この場合、仮想ノードではポッド・サブネットがプライベート・サブネットであることが必要になるため、ワーカー・ノード・サブネットはプライベート・サブネットである必要があります)。
ポッド・サブネットの構成
ポッド・サブネットは、VCNネイティブのポッド・ネットワークを使用している場合、ノード・プール内のワーカー・ノード上のポッドをホストします(ポッド・ネットワーク用のOCI VCNネイティブ・ポッド・ネットワークCNIプラグインの使用を参照)。
ポッド・サブネットは、単一のリージョナル・サブネットである必要があります。
管理対象ノード:ポッド・サブネットは、パブリック・サブネットまたはプライベート・サブネットのいずれかです。ただし、最大限のセキュリティを実現するために、ポッド・サブネットをプライベート・サブネットにすることをお薦めします。
仮想ノード:ポッド・サブネットはプライベート・サブネットである必要があります。ポッド・サブネットとワーカー・ノード・サブネットは同じサブネットであることが推奨されます(この場合、ワーカー・ノード・サブネットもプライベート・サブネットである必要があります)。
ロード・バランサ・サブネットの構成
ロード・バランサ・サブネットは、LoadBalancer
タイプのKubernetesサービスによって作成されたOracle Cloud Infrastructureロード・バランサを接続します。
ロード・バランサ・サブネットは、単一のリージョナル・サブネットまたはAD固有のサブネット(各可用性ドメインに1つずつ)です。ただし、リージョナル・サブネットをお薦めします。
ロード・バランサ・サブネットは、クラスタにデプロイされたアプリケーションへのアクセス方法に応じて、パブリック・サブネットまたはプライベート・サブネットのいずれかになります。アプリケーションがVCN内から内部的にアクセスされる場合は、ロード・バランサ・サブネットにプライベート・サブネットを使用します。アプリケーションがインターネットからアクセスされる場合は、ロード・バランサ・サブネットにパブリック・サブネットを使用します。
Bastionサブネット構成(オプション)
要塞サブネット内のオプションの要塞は、Kubernetes APIエンドポイントへのセキュア・アクセスと、ワーカー・ノードへのSSHアクセスを提供できます。クラスタ・アクセスの基本設定を参照してください。
ネットワーク・セキュリティ・グループまたはセキュリティ・リスト(あるいはその両方)のセキュリティ・ルール構成
クラスタを作成してデプロイするVCNには、セキュリティ・ルールが定義されている必要があります。セキュリティ・ルールは、次のいずれかの方法または両方で定義できます。
- ネットワーク・セキュリティ・グループ(推奨)では、ノード・プール、Kubernetes APIエンドポイント、ポッド(VCNネイティブ・ポッド・ネットワーキングを使用する場合)、およびクラスタの作成時にロード・バランサ(指定されている場合)に対して選択します。
- ワーカー・ノード用に選択したサブネット、Kubernetes APIエンドポイント、ポッド(VCNネイティブ・ポッド・ネットワーキングを使用している場合)、およびクラスタの作成時にロード・バランサ(指定されている場合)にすでに関連付けられているセキュリティ・リスト。
このトピックで説明するように、ワーカー・ノード、Kubernetes APIエンドポイント、ポッド(VCNネイティブ・ポッド・ネットワーキングを使用する場合)およびロード・バランサのセキュリティ・ルール要件は異なります。特定のニーズを満たすようにルールを追加できます。
ネットワーク・セキュリティ・グループとセキュリティ・リストの両方でセキュリティ・ルールを指定すると、すべてのセキュリティ・ルールが適用されます(つまり、セキュリティ・ルールの結合)。
詳細は、次を参照してください:
Kubernetes APIエンドポイントのセキュリティ・ルール
Kubernetes APIエンドポイント、ネットワーク・セキュリティ・グループ(推奨)またはセキュリティ・リスト(あるいはその両方)に対して、次のイングレス・ルールを定義する必要があります:
状態 | ソース | プロトコル/宛先ポート | 説明 |
---|---|---|---|
ステートフル | ワーカー・ノードCIDR | TCP/6443 | KubernetesワーカーからKubernetes APIエンドポイントへの通信。 |
ステートフル | ワーカー・ノードCIDR | TCP/12250 | KubernetesワーカーからKubernetes APIエンドポイントへの通信。 |
ステートフル | ポッドCIDR | TCP/6443 | Kubernetes APIエンドポイント通信へのポッド(VCNネイティブ・ポッド・ネットワーキングを使用している場合)。 |
ステートフル | ポッドCIDR | TCP/12250 | Kubernetes APIエンドポイント通信へのポッド(VCNネイティブ・ポッド・ネットワーキングを使用している場合)。 |
ステートフル | ワーカー・ノードCIDR | ICMP 3,4 | パス検出。 |
Kubernetes APIエンドポイント、ネットワーク・セキュリティ・グループ(推奨)またはセキュリティ・リスト(あるいはその両方)に対して、次のオプションのイングレス・ルールを定義できます:
状態 | ソース | プロトコル/宛先ポート | 説明 |
---|---|---|---|
ステートフル | 0.0.0.0/0または特定のサブネット | TCP/6443 | Kubernetes APIエンドポイントへのクライアント・アクセス |
Kubernetes APIエンドポイント、ネットワーク・セキュリティ・グループ(推奨)またはセキュリティ・リスト(あるいはその両方)に、次のエグレス・ルールを定義する必要があります。
状態 | 宛先 | プロトコル/宛先ポート | 説明 |
---|---|---|---|
ステートフル | Oracle Services Networkのすべての<region>サービス | TCP/443 | Kubernetes APIエンドポイントにOKEとの通信を許可します。 |
ステートフル | ワーカー・ノードCIDR | TCP/すべて | ワーカー・ノードへのすべてのトラフィック(ポッド・ネットワーキングにflannelを使用している場合)。 |
ステートフル | ポッドCIDR | すべて/すべて |
ポッド通信へのKubernetes APIエンドポイント(VCNネイティブ・ポッド・ネットワーキングを使用している場合)。 |
ステートフル | ワーカー・ノードCIDR | ICMP 3,4 | パス検出。 |
ステートフル | ワーカー・ノードCIDR | TCP 10250、ICMP | Kubernetes APIエンドポイントからワーカー・ノード通信(VCNネイティブ・ポッド・ネットワーキングを使用している場合)。 |
就業者ノードのセキュリティ・ルール
ワーカー・ノードは、クラスタ内のノード・プールを定義するときにパブリック・サブネットとプライベート・サブネットのどちらを指定するかに応じて、パブリックIPアドレスまたはプライベートIPアドレスを使用して作成されます。Container Engine for Kubernetesはワーカー・ノードにアクセスできる必要があります。
ワーカー・ノード、ネットワーク・セキュリティ・グループ(推奨)またはセキュリティ・リスト(あるいはその両方)に対して、次のイングレス・ルールを定義する必要があります。
状態 | ソース | プロトコル/宛先ポート | 説明 |
---|---|---|---|
ステートフル | ワーカー・ノードCIDR | すべて/すべて | ワーカー・ノード(またはワーカー・ノード)からの通信を許可します。 |
ステートフル | ポッドCIDR | すべて/すべて | (VCNネイティブ・ポッド・ネットワーキングを使用している場合)、1つのワーカー・ノードのポッドが他のワーカー・ノードのポッドと通信できるようにします。 |
ステートフル | Kubernetes APIエンドポイントCIDR | TCP/すべて | Kubernetes APIエンドポイントにワーカー・ノードとの通信を許可します。 |
ステートフル | 0.0.0.0/0 | ICMP 3,4 | パス検出。 |
ステートフル | Kubernetes APIエンドポイントCIDR | TCP 10250、ICMP | Kubernetes APIエンドポイントからワーカー・ノード通信(VCNネイティブ・ポッド・ネットワーキングを使用している場合)。 |
次のオプションのイングレス・ルールは、ワーカー・ノード(管理対象ノードのみ)、ネットワーク・セキュリティ・グループ(推奨)またはセキュリティ・リスト(あるいはその両方)に定義できます:
状態 | ソース | プロトコル/宛先ポート | 説明 |
---|---|---|---|
ステートフル | 0.0.0.0/0またはサブネットCIDR | TCP/22 | (オプション)ワーカー・ノードへのインバウンドSSHトラフィックを許可します。 |
ワーカー・ノード、ネットワーク・セキュリティ・グループ(推奨)またはセキュリティ・リスト(あるいはその両方)に対して、次のエグレス・ルールを定義する必要があります。
状態 | 宛先 | プロトコル/宛先ポート | 説明 |
---|---|---|---|
ステートフル | ワーカー・ノードCIDR | すべて/すべて | ワーカー・ノード(またはワーカー・ノード)からの通信を許可します。 |
ステートフル | ポッドCIDR | すべて/すべて | ワーカー・ノードが他のワーカー・ノードのポッドと通信することを許可します(VCNネイティブ・ポッド・ネットワーキングを使用している場合)。 |
ステートフル | 0.0.0.0/0 | ICMP 3,4 | パス検出。 |
ステートフル | Oracle Services Networkのすべての<region>サービス | TCP/すべて | ノードがOKEと通信することを許可します。 |
ステートフル | Kubernetes APIエンドポイントCIDR | TCP/6443 | KubernetesワーカーからKubernetes APIエンドポイントへの通信。 |
ステートフル | Kubernetes APIエンドポイントCIDR | TCP/12250 | KubernetesワーカーからKubernetes APIエンドポイントへの通信。 |
ワーカー・ノード、ネットワーク・セキュリティ・グループ(推奨)またはセキュリティ・リスト(あるいはその両方)に対して、次のオプションのエグレス・ルールを定義できます:
状態 | 宛先 | プロトコル/宛先ポート | 説明 |
---|---|---|---|
ステートフル | 0.0.0.0/0 | TCP/すべて | (オプション)ワーカー・ノードがインターネットと通信することを許可します。 |
ポッド・サブネットのセキュリティ・ルール
ポッド・ネットワーキングにOCI VCNネイティブ・ポッド・ネットワーキングCNIプラグインを使用する場合:
-
ワーカー・ノード・サブネット、ネットワーク・セキュリティ・グループ(推奨)またはセキュリティ・リスト(あるいはその両方)に定義されたセキュリティ・ルールには、次のものが含まれている必要があります:
- ワーカー・ノード間のすべてのトラフィックを許可するステートフル・イングレスおよびエグレス・ルール
- ワーカー・ノードとロード・バランサ間のすべてのトラフィックを許可するステートフル・イングレスおよびエグレス・ルール
- ワーカー・ノードとContainer Engine for Kubernetes間のトラフィックを許可するステートフルな出力ルール
- ポッド・サブネット、ネットワーク・セキュリティ・グループ(推奨)またはセキュリティ・リスト(あるいはその両方)に定義されたセキュリティ・ルールには、ポッド間のすべてのトラフィックを許可するステートフル・イングレスおよびエグレス・ルールを含める必要があります
ポッド・サブネット、ネットワーク・セキュリティ・グループ(推奨)またはセキュリティ・リスト(あるいはその両方)に対して、次のイングレス・ルールを定義する必要があります:
状態 | ソース | プロトコル/宛先ポート | 説明 |
---|---|---|---|
ステートフル | Kubernetes APIエンドポイントCIDR | すべて/すべて | ポッド通信へのKubernetes APIエンドポイント(VCNネイティブ・ポッド・ネットワーキングを使用している場合)。 |
ステートフル | ワーカー・ノードCIDR | すべて/すべて | あるワーカー・ノードのポッドが他のワーカー・ノードのポッドと通信することを許可します。 |
ステートフル | ポッドCIDR | すべて/すべて | ポッドが相互に通信することを許可します。 |
ポッド・サブネット、ネットワーク・セキュリティ・グループ(推奨)またはセキュリティ・リスト(あるいはその両方)に対して、次のエグレス・ルールを定義する必要があります:
状態 | 宛先 | プロトコル/宛先ポート | 説明 |
---|---|---|---|
ステートフル | ポッドCIDR | すべて/すべて | ポッドが相互に通信することを許可します。 |
ステートフル | Oracle Services Networkのすべての<region>サービス | ICMP 3,4 | パス検出。 |
ステートフル | Oracle Services Networkのすべての<region>サービス | TCP/すべて | ワーカー・ノードがOCIサービスと通信することを許可します。 |
ステートフル | Kubernetes APIエンドポイントCIDR | TCP/6443 | Kubernetes APIエンドポイント通信へのポッド(VCNネイティブ・ポッド・ネットワーキングを使用している場合)。 |
ステートフル | Kubernetes APIエンドポイントCIDR | TCP/12250 | Kubernetes APIエンドポイント通信へのポッド(VCNネイティブ・ポッド・ネットワーキングを使用している場合)。 |
ポッド・サブネット、ネットワーク・セキュリティ・グループ(推奨)またはセキュリティ・リスト(あるいはその両方)に対して、次のオプションのエグレス・ルールを定義できます:
状態 | 宛先 | プロトコル/宛先ポート | 説明 |
---|---|---|---|
ステートフル | 0.0.0.0/0 | TCP/443 | (オプション)ポッドがインターネットと通信することを許可します。 |
ロード・バランサとネットワーク・ロード・バランサのセキュリティ・ルール
Container Engine for Kubernetesが、タイプLoadBalancerのKubernetesサービスに対してOCIロード・バランサまたはネットワーク・ロード・バランサをプロビジョニングする場合、ロード・バランサまたはネットワーク・ロード・バランサのサブネットとの間のインバウンドおよびアウトバウンド・トラフィックを許可するための適切なセキュリティ・ルールが存在する必要があります。管理対象ノード(仮想ノードではない)の場合、これらのセキュリティ・ルールはロード・バランサ用にデフォルトで自動的に作成されますが、ネットワーク・ロード・バランサ用にデフォルトで自動的に作成されません。LoadBalancerタイプのKubernetesサービスに対するOCIロード・バランサまたはネットワーク・ロード・バランサのプロビジョニングの詳細は、タイプLoadBalancerのKubernetesサービスの定義を参照してください。
ネットワーク・セキュリティ・グループ(推奨)またはセキュリティ・リスト(あるいはその両方)で、サブネットのイングレスおよびエグレス・セキュリティ・ルールを定義できます。詳細は、次を参照してください:
- ネットワーク・セキュリティ・グループの指定(推奨)
- OCI Load Balancerのプロビジョニング時のセキュリティ・リスト管理オプションの指定
- OCIネットワークLoad Balancerのプロビジョニング時のセキュリティ・リスト管理オプションの指定
次のいずれかまたは両方で、次のイングレス・セキュリティ・ルールを定義します:
- ロード・バランサまたはネットワーク・ロード・バランサ・リソースが追加されたネットワーク・セキュリティ・グループ(推奨)
- ロード・バランサまたはネットワーク・ロード・バランサのサブネットに関連付けられたセキュリティ・リスト
状態 | ソース | プロトコル/宛先ポート | 説明 |
---|---|---|---|
ステートフル | 0.0.0.0/0または特定のCIDR | TCP/443 | ロード・バランサへのインバウンド・トラフィックを許可します。 |
特定のアプリケーション要件に合せて、イングレス・ルールの「プロトコル」および「宛先ポート」を適切に設定します。たとえば、UDPトラフィックを処理するアプリケーションのプロトコルとしてUDPを指定します。
次のいずれかまたは両方で、次のエグレス・セキュリティ・ルールを定義します:
- ロード・バランサまたはネットワーク・ロード・バランサ・リソースが追加されたネットワーク・セキュリティ・グループ(推奨)
- ロード・バランサまたはネットワーク・ロード・バランサのサブネットに関連付けられたセキュリティ・リスト
状態 | 宛先 | プロトコル/宛先ポート | 説明 |
---|---|---|---|
ステートフル | 就業者ノードCIDR | すべて/30000-32767 | ワーカー・ノードへのトラフィックを許可します。 |
デフォルトでは、Container Engine for Kubernetesプロキシ・リクエストによってプロビジョニングされたOCIロード・バランサまたはネットワーク・ロード・バランサは、クラスタ内のすべてのワーカー・ノードに対して実行されます。リクエストがクラスタ内のワーカー・ノードにプロキシされる場合、ロード・バランサまたはネットワーク・ロード・バランサがポート10256 (kube-proxyヘルス・ポート)のワーカー・ノードと通信するには、次のイングレスおよびエグレス・セキュリティ・ルールが(ネットワーク・セキュリティ・グループ(推奨)またはセキュリティ・リスト(あるいはその両方)に存在している必要があります:
- ロード・バランサまたはネットワーク・ロード・バランサがワーカー・ノードでkube-proxyと通信できるようにする、ワーカー・ノード・サブネットのセキュリティ・リスト(またはネットワーク・セキュリティ・グループ)のイングレス・セキュリティ・ルール:
状態 ソース プロトコル/宛先ポート 説明 ステートフル ロード・バランサまたはネットワーク・ロード・バランサ・サブネットCIDR ALL/10256 OCIロード・バランサまたはネットワーク・ロード・バランサがワーカー・ノードでkube-proxyと通信できるようにします。 - ロード・バランサまたはネットワーク・ロード・バランサ・サブネットのセキュリティ・リスト(またはネットワーク・セキュリティ・グループ)のエグレス・セキュリティ・ルールで、ロード・バランサまたはネットワーク・ロード・バランサがワーカー・ノードでkube-proxyと通信できるようにします:
状態 宛先 プロトコル/宛先ポート 説明 ステートフル ワーカー・ノード・サブネットCIDR ALL/10256 OCIロード・バランサまたはネットワーク・ロード・バランサがワーカー・ノードでkube-proxyと通信できるようにします。
タイプがLoadBalancerのKubernetesサービスのネットワーク・ロード・バランサをプロビジョニングする場合:
- リクエストが、クラスタ内の他のワーカー・ノードにプロキシされるのではなく、IPパケットのヘッダーで指定されたクライアントIPアドレスで終了するように指定できます(
externalTrafficPolicy: Local
を設定)。「受信ノードでのリクエストの終了」を参照してください。 - リクエストがクライアントIPアドレスで終了するように指定した場合、クライアントIPアドレスをIPパケットのヘッダーに保持するかどうかを指定することもできます(
oci-network-load-balancer.oraclecloud.com/is-preserve-source
注釈を使用)。「クライアントIPアドレスの保持」を参照してください。
どちらの場合も、クラスタ内のワーカー・ノードのセキュリティ・ルール(ネットワーク・セキュリティ・グループ(推奨)またはセキュリティ・リスト(あるいはその両方)を設定して、クライアント接続が行われるCIDRブロックからすべてのノード・ポート(30000から32767)へのイングレス・トラフィックを許可する必要があります。アプリケーションがインターネットに公開されている場合は、セキュリティ・ルールのソースCIDRブロックを0.0.0.0/0に設定します。または、セキュリティ・ルールのソースCIDRブロックを特定のCIDRブロックに設定します(たとえば、クライアント接続が特定のサブネットからの場合)。
状態 | ソース | プロトコル/宛先ポート | 説明 |
---|---|---|---|
ステートフル | 0.0.0.0/0またはサブネットCIDR | すべて/30000-32767 | ワーカー・ノードがOCI Network Load Balancerを介して接続を受信できるようにします。 |
要塞サブネットのセキュリティ・ルール
要塞サブネット内のオプションの要塞は、Kubernetes APIエンドポイントへのセキュア・アクセスと、ワーカー・ノードへのSSHアクセスを提供できます。定義するイングレスおよびエグレス・セキュリティ・ルールの詳細は、クラスタ・アクセスの要塞の設定を参照してください。