KubernetesクラスタでのOCIネイティブ・イングレス・コントローラの設定
OCIネイティブ・イングレス・コントローラを設定して、Kubernetesイングレス・リソースに定義されたルールおよび構成オプションを実装し、受信トラフィックをロード・バランシングし、クラスタ内のワーカー・ノードで実行されているサービス・ポッドにルーティングする方法をご覧ください。
OCIネイティブ・イングレス・コントローラは、Kubernetesイングレス・リソースに定義されたルールおよび構成オプションを実装して、受信トラフィックをロード・バランシングし、クラスタ内のワーカー・ノードで実行されているサービス・ポッドにルーティングします。OCIネイティブ・イングレス・コントローラは、リクエストを処理するOCIフレキシブル・ロード・バランサを作成し、イングレス・リソースで定義されたルールに従ってリクエストをルーティングするようにOCIロード・バランサを構成します。ルーティング・ルールまたは他のサポート・リソースに変更がある場合、OCIネイティブ・イングレス・コントローラはそれに応じてロード・バランサ構成を更新します。OCIネイティブ・イングレス・コントローラは、クラスタ内のランダムに選択されたワーカー・ノードで単一のポッドとして実行されます。
OCIネイティブ・イングレス・コントローラは、次のようにOCIロード・バランサ・リソースを作成します:
- OCIネイティブ・イングレス・コントローラをコントローラとして指定した各
IngressClass
リソースのロード・バランサ。 - クラスタ内の
Ingress
リソースのルーティング・ルールに含める一意のKubernetesサービス名およびポート番号の組合せごとに、ロード・バランサ・バックエンド・セット。 - クラスタ内の
Ingress
リソースのルーティング・ルールに含める一意のポートごとにロード・バランサ・リスナー。OCIネイティブ・イングレス・コントローラは、イングレス・バックエンド構成に基づいて各リスナーのプロトコル(HTTP、HTTPS、HTTP/2)を決定します。
OCIネイティブ・イングレス・コントローラは、バックエンド・セットにバックエンドとして、クラスタがポッド・ネットワーキングに使用するCNIプラグインに応じて、それぞれのKubernetesサービス名およびポートのエンドポイントとして機能するポッド、またはそれらのポッドを実行できるワーカー・ノードを追加します:
- クラスタがポッド・ネットワークにOCI VCNネイティブ・ポッド・ネットワークCNIプラグインを使用する場合、OCIネイティブ・イングレス・コントローラによって、ポッドがバックエンドとして追加されます。
- クラスタがポッド・ネットワーキングにFlannel CNIプラグインを使用する場合、OCIネイティブ・イングレス・コントローラはワーカー・ノードをバックエンドとして追加します。この場合、OCIネイティブ・イングレス・コントローラは、サービスのマニフェストの
externalTrafficPolicy
設定を使用して、バックエンド・セットに追加するワーカー・ノードを次のように判断します:externalTrafficPolicy: Cluster
の場合、OCIネイティブ・イングレス・コントローラは、クラスタ内のすべてのワーカー・ノードをバックエンド・セットに追加します。externalTrafficPolicy: Local
の場合、OCIネイティブ・イングレス・コントローラは、サービスのポッドがデプロイされているワーカー・ノードのみをバックエンド・セットに追加します。
OCIネイティブ・イングレス・コントローラは、IPアドレス、バックエンド・セット、リスナーおよびバックエンド・サーバーの合計数に関する通常のLoad Balancerサービス制限の対象となるOCIロード・バランサ・リソースを作成します。詳細は、ロード・バランシング・リソースの制限を参照してください。
OCIネイティブ・イングレス・コントローラは、次のいずれかの方法でKubernetesクラスタにデプロイできます:
- スタンドアロン・プログラムとして(スタンドアロン・プログラムとしてのOCIネイティブ・イングレス・コントローラの使用を参照)
- クラスタ・アドオンとして(クラスタ・アドオンとしてのOCIネイティブ・イングレス・コントローラの使用を参照)
OCIネイティブ・イングレス・コントローラを使用して受信トラフィックのロード・バランシングおよびルーティングを行う場合は、次の点に注意してください:
- OCIネイティブ・イングレス・コントローラをスタンドアロン・プログラムとしてインストールする場合、クラスタでKubernetesバージョン1.26以上が実行されている必要があります。OCIネイティブ・イングレス・コントローラをクラスタ・アドオンとしてインストールする場合、クラスタでKubernetesバージョン1.28以降が実行されている必要があります。
- クラスタには、ロード・バランサ・サブネット・セキュリティ・ルールが構成されている必要があります。
- クラスタは、OCI VCNネイティブ・ポッド・ネットワークCNIプラグインまたはポッド・ネットワーク用のチャネルCNIプラグインのいずれかを使用できます。クラスタがポッド・ネットワーキングにFlannel CNIプラグインを使用する場合、OCIネイティブ・イングレス・コントローラは、サービスのマニフェストで指定された
type: NodePort
のバックエンド・サービスのみをサポートします。 - OCIネイティブ・イングレス・コントローラがOCIサービスおよびリソースにアクセスできるようにするインスタンス・プリンシパルの使用は、仮想ノードを持つクラスタではサポートされていません。
- 拡張クラスタではワークロード・アイデンティティ・プリンシパルを指定できますが、基本クラスタでは指定できません。
- OCIネイティブ・イングレス・コントローラがスタンドアロン・プログラムとしてクラスタにすでにデプロイされている場合は、OCIネイティブ・イングレス・コントローラ・クラスタ・アドオンもクラスタにデプロイしないでください。