OCIネイティブ・イングレス・コントローラー

OCIネイティブ・イングレス・コントローラ・クラスタ・アドオンを有効にすると、次のキー/値のペアを引数として渡すことができます。

ほとんどのクラスタ・アドオンに共通の構成引数
キー(APIおよびCLI) キーの表示名(コンソール) 説明 必須/オプション デフォルト値 値の例
affinity affinity

アフィニティ・スケジューリング・ルールのグループ。

プレーン・テキストまたはエンコードされたBase64のJSON形式。

未使用者:
  • NVIDIA GPUオペレータ
可能な等価:
  • ノード機能の検出、master.affinityの使用
  • NVIDIA Network Operator、operator.affinityを使用
  • CSIドライバSMB、contoller.affinityを使用
  • AMD GPUオペレータ、controllerManager.affinityを使用
オプション null null
nodeSelectors ノード・セレクター

ノード・セレクタおよびノード・ラベルを使用して、アドオン・ポッドが実行されるワーカー・ノードを制御できます。

ポッドをノードで実行するには、ポッドのノード・セレクタのキー/値がノードのラベルと同じである必要があります。

nodeSelectorsを、ポッドのノード・セレクタとワーカー・ノードのラベルの両方に一致するキー/値ペアに設定します。

プレーン・テキストまたはエンコードされたBase64のJSON形式。

未使用者:
  • NVIDIA GPUオペレータ
  • CSIドライバ SMB
可能な等価:
  • ノード機能の検出、worker.nodeSelectorの使用
  • NVIDIA Network Operator、operator.nodeSelectorsを使用
  • AMD GPU演算子。selectorまたはcontrollerManager.nodeSelectorを使用します
オプション null {"foo":"bar", "foo2": "bar2"}

ポッドは、foo=barまたはfoo2=bar2ラベルを持つノードでのみ実行されます。

numOfReplicas numOfReplicas アドオン配備の複製の数。
未使用者:
  • AMD GPUプラグイン
  • NVIDIA GPUオペレータ
  • NVIDIAネットワーク事業者
  • CSIドライバ SMB
可能な等価:
  • CoreDNS。nodesPerReplicaを使用します。
  • ノード機能の検出、master.replicaCountの使用
  • AMD GPUオペレータ、controllerManager.replicasを使用
必須 1

クラスタごとにアドオン・デプロイメントのレプリカを1つ作成します。

2

クラスタごとにアドオン・デプロイメントの2つのレプリカを作成します。

rollingUpdate rollingUpdate

maxSurgeおよびmaxUnavailableによるローリング更新の望ましい動作を制御します。

プレーン・テキストまたはエンコードされたBase64のJSON形式。

未使用者:
  • ノード機能検出
  • NVIDIAネットワーク事業者
  • CSIドライバ SMB
可能な等価:
  • NVIDIA GPU Operator、daemonsets.rollingUpdate.maxUnavailableを使用
  • AMD GPU演算子。devicePluginmetricsExportertestRunner configManagerまたはdraDriverupgradePolicyを使用します。
オプション null null
tolerations 許容範囲

テイントおよび許容範囲を使用して、アドオン・ポッドが実行されるワーカー・ノードを制御できます。

taintがあるノード上でポッドを実行するには、ポッドに対応する許容範囲が必要です。

tolerationsを、ポッドの許容範囲とワーカー・ノードのテイントの両方に一致するキー/値のペアに設定します。

プレーン・テキストまたはエンコードされたBase64のJSON形式。

可能な等価:
  • ノード機能の検出。master.tolerationsまたはworker.tolerations、あるいはその両方を使用します。
  • NVIDIA GPU Operator、daemonsets.tolerationsを使用
  • NVIDIA Network Operator、operator.tolerationsを使用
  • CSIドライバSMB、controller.tolerationsを使用
  • AMD GPUオペレータ。 devicePluginmetricsExportertestRunnerconfigManagerdraDriverまたはcontrollerManagerで許容値を使用します。
オプション null [{"key":"tolerationKeyFoo", "value":"tolerationValBar", "effect":"noSchedule", "operator":"exists"}]

この許容範囲を持つポッドのみが、tolerationKeyFoo=tolerationValBar:noScheduleテイントを持つワーカー・ノードで実行できます。

topologySpreadConstraints topologySpreadConstraints

指定されたトポロジ間で一致するポッドを分散する方法。

プレーン・テキストまたはエンコードされたBase64のJSON形式。

未使用者:
  • ノード機能検出
  • NVIDIA GPUオペレータ
  • NVIDIAネットワーク事業者
  • CSIドライバ SMB
  • AMD GPU演算子
オプション null null
このクラスタ・アドオンに固有の構成引数
キー(APIおよびCLI) キーの表示名(コンソール) 説明 必須/オプション デフォルト値 値の例
authSecretName authSecretName authTypeuserに設定されている場合にユーザー認証に使用するKubernetesシークレットの名前。 オプション "" oci-config
authType authType リクエストの実行中にOCIネイティブ・イングレス・コントローラが使用する認証タイプ。次のいずれかになります。
  • instanceは、インスタンス・プリンシパルを指定します(管理対象ノードのみ)。
  • userは、ユーザー・プリンシパル(管理対象ノードおよび仮想ノード)を指定します
  • workloadIdentityは、ワークロードID(管理対象ノードおよび仮想ノード)を指定します
オプション instance workloadIdentity
certDeletionGracePeriodInDays certDeletionGracePeriodInDays

未使用のOCI証明書サービス・リソースを削除する前にOCIネイティブ・イングレス・コントローラが待機する日数。OCIネイティブ・イングレス・コントローラがKubernetesシークレットを使用して証明書サービスから証明書を取得するときに適用されます

整数値である必要があります。値がゼロ以下の場合、OCIネイティブ・イングレス・コントローラは、未使用のOCI証明書サービス・リソースを削除しません。

オプション 0 1
compartmentId compartmentId OCIネイティブ・イングレス・コントローラがOCIロード・バランサを作成するコンパートメントのOCID (および、useLbCompartmentForCertificatesアドオン引数がfalseに設定されている場合の証明書)。 必須 "" ocid1.compartment.oc1..aaaaaaaa______ddq
controllerClass controllerClass oci-native-ingress-controllerによって管理される、ingressClassで指定されたコントローラの名前。 オプション oci.oraclecloud.com/native-ingress-controller oci.oraclecloud.com/native-ingress-controller
emitEvents emitEvents

リコンシリエーション中に検出されたイングレス・エラーおよびIngressClassエラーに対してKubernetesイベントを発行するかどうか。

trueに設定すると、イベントが発行されます。

オプション false false
leaseLockName leaseLockName リーダー選択に使用するリースの名前。 オプション oci-native-ingress-controller oci-native-ingress-controller
leaseLockNamespace leaseLockNamespace リースの名前空間。 オプション native-ingress-controller-system native-ingress-controller-system
loadBalancerSubnetId loadBalancerSubnetId ロード・バランサのサブネットのOCID。 必須 "" ocid1.subnet.oc1.iad.aaaaaaaa______dba
logVerbosity logVerbosity ロギングの詳細度の数。 オプション 4 2
metricsBackend metricsBackend メトリック・バックエンドの名前。 オプション prometheus prometheus
metricsPort metricsPort メトリック・ポート。 オプション 2223 2223
oci-native-ingress-controller.ContainerResources native-ingress-controllerコンテナ・リソース

アドオン・コンテナが要求するリソース数量を指定し、アドオン・コンテナが超過できないリソース使用量制限を設定できます。

プレーン・テキストまたはエンコードされたBase64のJSON形式。

オプション null {"limits": {"cpu": "500m", "memory": "200Mi" }, "requests": {"cpu": "100m", "memory": "100Mi"}}

100ミリコアのCPUと100メビバイトのメモリーをリクエストするアドオン・コンテナを作成します。アドオンコンテナを500MバイトのCPUおよび200Mバイトのメモリーに制限します。

useLbCompartmentForCertificates useLbCompartmentForCertificates

Kubernetesシークレットを使用して証明書およびCAバンドルを取得するときに、OCIロード・バランサに指定されたコンパートメント(関連するIngressClassParametersリソース内)を使用してOCI証明書サービス・リソースを管理するかどうか。オプション1: OCIネイティブ・イングレス・コントローラがKubernetesシークレットを使用して証明書サービスから証明書を取得しますを参照してください。

falseに設定すると、compartmentIdアドオン引数で指定されたコンパートメントが使用されます。

オプション false false
大規模なクラスタに関する考慮事項

次の表に、大規模クラスタでこのクラスタ・アドオンを構成する際の考慮事項を示します。

引数名 ロールWRTノード数 説明 クラスタ・サイズが増加するにつれて リスク 推奨事項
affinity なし

ポッド・アフィニティ・ルールおよびポッド・アンチ・アフィニティ・ルールに基づいて、ネイティブ・イングレス・コントローラ・ポッドの配置を制御します。

該当なし 該当なし 該当なし
nodeSelectors なし

ノード・ラベルに基づいてネイティブ・イングレス・コントローラ・ポッドの配置を制御します。

該当なし 該当なし 該当なし
numOfReplicas なし

ネイティブ・イングレス・コントローラ・デプロイメントのレプリカ数を制御します。

該当なし 該当なし 該当なし
rollingUpdate なし

maxSurge maxUnavailable などの設定を含め、デプロイメント更新戦略を制御します。

該当なし 該当なし 該当なし
tolerations なし

汚染されたノードでネイティブ・イングレス・コントローラ・ポッドを実行できるかどうかを制御します。

該当なし 該当なし 該当なし
topologySpreadConstraints なし

maxSkew minDomains などの設定を使用して、ネイティブ・イングレス・コントローラ・ポッドの一致をクラスタ・トポロジ間で分散する方法を制御します。

該当なし 該当なし 該当なし
oci-native-ingress-controller.ContainerResources あり

ネイティブ・イングレス・コントローラ・ポッドのCPUおよびメモリー・リクエストおよび制限を定義します。

コントローラはノードを調べて、使用可能なロード・バランサのバックエンドを識別します。したがって、CPUおよびメモリーの使用量は、ノード数が増えるにつれて増加します。

externalTrafficPolicy Cluster に設定されている場合、ノード・インフォーマ・キャッシュには、すべてのノードのバックエンド情報を含めることができます。約20,000個のノードを持つクラスタでは、各同期サイクル中にバックエンド情報を処理することがリソースのボトルネックになる可能性があります。

externalTrafficPolicy Local に設定すると、ローカル・バックエンドを持つノードのみが含まれるため、バックエンド同期ボリュームが大幅に低くなります。

  • バックエンドのリコンシリエーションによって、CPUおよびメモリーが大幅に不足する可能性があります。
  • コントローラが数千のノード間でバックエンド情報を処理すると、同期サイクルが遅くなることがあります。
  • バックエンド・リクエストがロード・バランサの制限である512バックエンドを超えた場合、ロード・バランサ・コントロール・プレーンによって更新が拒否されます。
  • 更新を繰り返し拒否すると、ロード・バランサに無効なバックエンドが構成されたままになる場合があります。

externalTrafficPolicyClusterに設定すると、CPUおよび制限が高くなります。externalTrafficPolicyLocalに設定されている場合、中程度は必須です。Localでは、外部トラフィック・ポリシー・ヘルス・チェックは、ロード・バランサのバックエンド制限まで、ローカル・バックエンドを持つノードまたはポッドに制約されます。

routingStrategies.hostBasedRouting なし

リクエスト内のドメイン名に基づいて、リクエストをサービスにルーティングします。

該当なし 該当なし 該当なし
routingStrategies.pathBasedRouting なし

リクエスト・パスまたはAPIエンドポイントに基づいて、リクエストをサービスにルーティングします。

該当なし 該当なし 該当なし
routingStrategies.defaultRouting なし

別のルールと一致しないリクエストをデフォルトのバックエンド・サービスにルーティングします。

該当なし 該当なし 該当なし
NIC annotations あり

バックエンドのヘルス・チェック設定を含むネイティブ・イングレス・コントローラおよびロード・バランサの動作を構成します。

ロード・バランサのルーティング・パフォーマンスは、クラスタ・ノードの合計数ではなく、最大512のバックエンドによって制約されたままです。

ただし、選択した外部トラフィック・ポリシーはコントローラのリソース使用率に影響します。

  • externalTrafficPolicy: Cluster を使用すると、すべてのクラスタ・ノードにわたってヘルス・チェックをファンアウトできるため、約20,000ノードを持つクラスタで大きなオーバーヘッドが発生します。
  • externalTrafficPolicy: Local では、ヘルス・チェックは、ロード・バランサのバックエンド制限まで、ローカル・バックエンドを持つノードまたはポッドに制約されます。
  • クラスタ全体のヘルス・チェックのファンアウトにより、CPUおよびメモリー使用量が大幅に増加する可能性があります。
  • ヘルス・チェック構成を更新すると、コントローラがクラスタ全体のバックエンド・ポッドを再評価する可能性があります。
  • externalTrafficPolicy Local に設定されている場合でも、CPUおよびメモリーの競合が発生する可能性があります。

ロード・バランサおよびバックエンドのヘルス・チェックのベスト・プラクティスを参照してください。