クラスタの作成とデプロイメントのためのネットワーク・リソース構成
Kubernetes Engine (OKE)を使用するようにネットワーク・リソースを構成する方法を確認します。
Kubernetes Engineを使用してテナンシ内のリージョンにクラスタを作成およびデプロイする前に:
- テナント内には、必要なネットワーク・リソース(VCN、サブネット、インターネット・ゲートウェイ、ルート表、ネットワーク・セキュリティ・グループまたはセキュリティ・リスト(あるいはその両方)を含むコンパートメントがすでに存在している必要があります。そのようなコンパートメントが存在しない場合は、作成する必要があります。ネットワーク・リソースは、ルート・コンパートメントに配置できます。ただし、複数のチームがクラスタを作成すると予想される場合、ベスト・プラクティスはチームごとに個別のコンパートメントを作成することです。
- コンパートメント内のネットワーク・リソース(VCN、サブネット、インターネット・ゲートウェイ、ルート表、ネットワーク・セキュリティ・グループまたはセキュリティ・リスト、あるいはその両方)は、クラスタを作成およびデプロイするリージョンごとに適切に構成する必要があります。新しいクラスタを作成する場合、Kubernetes Engineを使用して、クイック作成ワークフローで新しいネットワーク・リソースを自動的に作成および構成できます。または、カスタム作成ワークフローで使用する既存のネットワーク・リソースを明示的に指定できます。既存のネットワーク・リソースを指定する場合は、このトピックで説明するように、あなたまたは他のユーザーがそれらのリソースを適切に構成している必要があります。
このトピックでは、ネットワーク・リソースごとに必要な構成について説明します。一般的な構成の詳細は、ネットワーク・リソース構成の例を参照してください。
関連する開発者チュートリアルが多数用意されています。
VCN構成
クラスタを作成してデプロイするVCNは、次のように構成する必要があります:
- VCNには、クラスタに必要なすべてのリソース(Kubernetes APIエンドポイント、ワーカー・ノード、ポッド、ロード・バランサ)に十分な大きさのCIDRブロックが定義されている必要があります。たとえば、IPv4のみのアドレス指定をサポートするVCNの場合、/16 CIDRブロックはほぼすべてのユースケース(たとえば、10.0.0.0/16)に十分な大きさになります。VCNに指定するCIDRブロックは、flannel CNIプラグインの使用時にポッドに指定するCIDRブロック(ポッド・ネットワーキング用のflannel CNIプラグインの使用を参照)およびKubernetesサービス(IPv4 CIDR Blocks and Kubernetes Engine (OKE)を参照)と重複しないようにしてください。
- 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ネイティブ・ポッド・ネットワーキングCNIプラグインを使用する場合のポッド)を使用する予定で、サブネットがインターネットへのアクセスを必要とする場合、VCNにNATゲートウェイが必要です。たとえば、デプロイされたアプリケーションがソフトウェアをダウンロードしたり、サード・パーティのサービスにアクセスしたりすることが予想される場合です。
NATゲートウェイは、宛先CIDRブロック0.0.0.0/0のターゲットとしてルート表のルート・ルールで指定する必要があります。
NATゲートウェイおよびネットワーク・リソース構成の例を参照してください。
サービス・ゲートウェイの構成
OCI VCNネイティブ・ポッド・ネットワーキング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ブロックと重複できません(IPv4 CIDRブロックおよびKubernetesエンジン(OKE)を参照)。
仮想ノードと管理対象ノードの要件は異なるため、管理対象ノードではなく仮想ノードを使用する場合、ワーカー・ノード・サブネットとポッド・サブネットの構成は若干異なります。
サブネットは、次のプロパティで構成する必要があります:
- ルート表: ルート表の構成を参照してください
- DHCPオプション: DHCPオプションの構成を参照してください
- ネットワーク・セキュリティ・グループまたはセキュリティ・リスト(あるいはその両方): ネットワーク・セキュリティ・グループまたはセキュリティ・リスト(あるいはその両方)のセキュリティ・ルール構成を参照してください
VCNとサブネットおよびネットワーク・リソース構成の例を参照してください。
Kubernetes APIエンドポイント・サブネットの構成
Kubernetes APIエンドポイント・サブネットは、クラスタ・コントロール・プレーン上のKubernetes APIへのアクセスを提供するエンドポイントをホストします。
Kubernetes APIエンドポイント・サブネットはリージョナル・サブネットである必要があり、プライベート・サブネットまたはパブリック・サブネットにすることができます:
- Kubernetes APIエンドポイントにパブリック・サブネットを指定する場合、エンドポイントにパブリックIPアドレスを割り当てることで、オプションでエンドポイントをインターネットに公開できます。パブリックIPアドレスを使用すると、サード・パーティのクラウド・サービス(SaaS CI/CDサービスなど)がKubernetes APIエンドポイントにアクセスできます。次の点に注意してください:
- Kubernetes APIエンドポイントにパブリックIPアドレスがある場合、インターネット・ゲートウェイを使用してエンドポイントにアクセスできるようにするには、ルート・ルールおよびセキュリティ・ルールが存在する必要があります(例1: チャネルCNIプラグイン、パブリックKubernetes APIエンドポイント、プライベート・ワーカー・ノードおよびパブリック・ロード・バランサを含むクラスタおよび例3: OCI CNIプラグイン、パブリックKubernetes APIエンドポイント、プライベート・ワーカー・ノードおよびパブリック・ロード・バランサを含むクラスタを参照)。
- Kubernetes APIエンドポイントにパブリックIPアドレスがない場合は、サービス・ゲートウェイおよびNATゲートウェイを使用してエンドポイントにアクセスできるように、ルート・ルールおよびセキュリティ・ルールが存在する必要があります(例2を参照: チャネルCNIプラグイン、プライベートKubernetes APIエンドポイント、プライベート・ワーカー・ノード、パブリック・ロード・バランサを含むクラスタおよび例4: OCI CNIプラグインを含むクラスタ、プライベートKubernetes APIエンドポイント、プライベート・ワーカー・ノード、パブリック・ロード・バランサ。
- クラスタを作成した後、パブリック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内から内部的にアクセスされる場合は、ロード・バランサ・サブネットにプライベート・サブネットを使用します。アプリケーションがインターネットからアクセスされる場合は、ロード・バランサ・サブネットにパブリック・サブネットを使用します。
要塞サブネット構成(オプション)
要塞サブネット内のオプションの要塞は、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アドレスを使用して作成されます。Kubernetes Engineはワーカー・ノードにアクセスできる必要があります。
ワーカー・ノード、ネットワーク・セキュリティ・グループ(推奨)またはセキュリティ・リスト(あるいはその両方)に対して、次のイングレス・ルールを定義する必要があります。
状態 | ソース | プロトコル/宛先ポート | 説明 |
---|---|---|---|
ステートフル | ワーカー・ノードCIDR | すべて/すべて | ワーカー・ノード間の通信を許可します。 |
ステートフル | ポッドCIDR | すべて/すべて | (VCNネイティブ・ポッド・ネットワーキングを使用している場合)あるワーカー・ノードのポッドが他のワーカー・ノードのポッドと通信できるようにする。 |
ステートフル | 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プラグインを使用する場合:
-
ネットワーク・セキュリティ・グループ(推奨)またはセキュリティ・リスト(あるいはその両方)のワーカー・ノード・サブネットに定義されているセキュリティ・ルールには、次のものを含める必要があります。
- ワーカー・ノード間のすべてのトラフィックを許可するステートフル・イングレスおよびエグレス・ルール
- ワーカー・ノードとロード・バランサ間のすべてのトラフィックを許可するステートフル・イングレスおよびエグレス・ルール
- ワーカー・ノードとKubernetes Engine間のトラフィックを許可するステートフルなエグレス・ルール
- ポッド・サブネット(ネットワーク・セキュリティ・グループ(推奨)またはセキュリティ・リスト(あるいはその両方)に定義されているセキュリティ・ルールには、ポッド間のすべてのトラフィックを許可するステートフル・イングレス・ルールおよびエグレス・ルールを含める必要があります
ポッド・サブネット、ネットワーク・セキュリティ・グループ(推奨)またはセキュリティ・リスト(あるいはその両方)に対して、次のイングレス・ルールを定義する必要があります。
状態 | ソース | プロトコル/宛先ポート | 説明 |
---|---|---|---|
ステートフル | 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 | (オプション)ポッドがインターネットと通信できるようにします。 |
ロード・バランサとネットワーク・ロード・バランサのセキュリティ・ルール
KubernetesエンジンがLoadBalancerタイプのKubernetesサービスに対してOCIロード・バランサまたはネットワーク・ロード・バランサをプロビジョニングする場合、ロード・バランサまたはネットワーク・ロード・バランサのサブネットとの間でインバウンド・トラフィックとアウトバウンド・トラフィックを許可するための適切なセキュリティ・ルールが存在する必要があります。管理対象ノード(仮想ノードではない)の場合、これらのセキュリティ・ルールは、ロード・バランサに対してデフォルトで自動的に作成されますが、ネットワーク・ロード・バランサに対してデフォルトでは自動的に作成されません。LoadBalancerタイプのKubernetesサービスに対するOCIロード・バランサまたはネットワーク・ロード・バランサのプロビジョニングの詳細は、LoadBalancerタイプのKubernetesサービスの定義を参照してください。
ネットワーク・セキュリティ・グループ(推奨)またはセキュリティ・リスト(あるいはその両方)のサブネットに対して、イングレスおよびエグレス・セキュリティ・ルールを定義できます。詳細は、次を参照してください:
- ネットワーク・セキュリティ・グループの指定(推奨)
- OCI Load Balancerのプロビジョニング時のセキュリティ・リスト管理オプションの指定
- OCI Network Load Balancerのプロビジョニング時のセキュリティ・リスト管理オプションの指定
次のイングレス・セキュリティ・ルールを、いずれかまたは両方で定義します。
- ロード・バランサまたはネットワーク・ロード・バランサ・リソースが追加されたネットワーク・セキュリティ・グループ(推奨)
- ロード・バランサまたはネットワーク・ロード・バランサのサブネットに関連付けられたセキュリティ・リスト
状態 | ソース | プロトコル/宛先ポート | 説明 |
---|---|---|---|
ステートフル | 0.0.0.0/0または特定のCIDR | TCP/443 | Load Balancerへのインバウンド・トラフィックを許可します。 |
特定のアプリケーション要件に合せて、イングレス・ルールのプロトコルおよび宛先ポートを適切に設定します。たとえば、UDPトラフィックを処理するアプリケーションのプロトコルとして UDPを指定します。
次のエグレス・セキュリティ・ルールを、いずれかまたは両方で定義します。
- ロード・バランサまたはネットワーク・ロード・バランサ・リソースが追加されたネットワーク・セキュリティ・グループ(推奨)
- ロード・バランサまたはネットワーク・ロード・バランサのサブネットに関連付けられたセキュリティ・リスト
状態 | 宛先 | プロトコル/宛先ポート | 説明 |
---|---|---|---|
ステートフル | ワーカー・ノードCIDR | すべて/30000-32767 | ワーカー・ノードへのトラフィックを許可します。 |
デフォルトでは、Kubernetes Engineプロキシ・リクエストによってプロビジョニングされた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アドレスで終了するように指定した場合、(
oci-network-load-balancer.oraclecloud.com/is-preserve-source
注釈を使用して)クライアントIPアドレスをIPパケットのヘッダーに保持するかどうかも指定できます。「クライアント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アクセスを提供できます。定義するイングレスおよびエグレス・セキュリティ・ルールの詳細は、「クラスタ・アクセス用の要塞の設定」を参照してください。