サードパーティの入力方向コントローラをサポートするように NCP を構成できます。

ncp.ini ファイルの編集

構成ファイル /var/vcap/data/jobs/ncp/xxxxxxxx/config/ncp.ini を編集する必要があります(xxxxxxxx は BOSH 展開 ID)。その後、このファイルは NCP が再起動するたびに rootfs にコピーされ、NCP で使用されます。このファイルは、各マスター ノードで編集する必要があります。

重要: ncp.ini への変更は、TKGI クラスタのアップデート間で維持されません。TKGI タイルを使用して変更を行ってから TKGI 展開を更新すると、 ncp.ini への変更は失われます。
関連するオプションが nsx_v3 セクションにあります。
  • use_native_loadbalancer - False に設定すると、NCP は、その注釈に関係なく、入力方向または Loadbalancer タイプのサービスの更新を処理しません。この設定は TKGI クラスタ全体に適用されます。デフォルトは True です。
  • default_ingress_class_nsx - True に設定すると、NCP はデフォルトの入力方向コントローラになり、kubernetes.io/ingress.class: "nsx" の注釈付きの入力方向と注釈なしの入力方向の両方を処理します。False に設定すると、NCP は、kubernetes.io/ingress.class: "nsx" の注釈付きの入力方向のみを処理します。デフォルトは True です。
    NCP 3.2.1 以降では、 default_ingress_class_nsx が廃止されました。Ingress クラスを解決するときに、NCP は次のものを確認します。
    • アノテーション
    • ingressClass 個のオブジェクト
    • アノテーションが指定されず、use_native_loadbalancer が True の場合、NSX-LB は Ingress を処理します。それ以外の場合、NSX-LB は処理しません。
NCP で NGINX コントローラ ポッドにフローティング IP を割り当て、フローティング IP の入力方向の状態を更新する場合は、次の手順を実行します。
  • ncp.inik8s セクションで、ingress_mode=nat を設定します。
  • NGINX 入力方向コントローラ ポッドに注釈 ncp/ingress-controller: "True" を追加します。

NCP は、注釈 kubernetes.io/ingress.class: "nginx" 付きの入力方向の状態を NGINX 入力方向コントローラ ポッドのフローティング IP で更新します。default_ingress_class_nsx=False の場合、NCP は、kubernetes.io/ingress.class 注釈のない入力方向の状態も NGINX 入力方向コントローラ ポッドのフローティング IP で更新します。

注:NGINX 入力方向コントローラ ポッドに注釈 ncp/ingress-controller: "True" がない場合でも、NCP は上記の入力方向の状態を loadBalancer: {} に更新します。その後、入力方向がループに入り、NGINX コントローラが入力状態を loadBalancer: {ingress: [{ip: <IP>}]} に更新し、NCP が入力状態を loadBalancer: {} に更新する可能性があります。この状況を回避するには、次の手順に従います。

NAT モードで展開したサードパーティの入力方向コントローラの場合、k8s セクションで http_ingress_port パラメータと https_ingress_port パラメータを変更し、入力方向コントローラに公開される NAT ルールにカスタム ポートを指定できます。

シナリオ 1:NCP は入力方向を処理するが、デフォルトの入力方向コントローラでない場合。

次の手順に従って、NCP が nsx クラスの入力方向を処理できるようにします。
  1. 各マスター ノードで ncp.ininsx_v3 セクションを編集します。
    1. default_ingress_class_nsxFalse に設定します。
    2. use_native_loadbalancerTrue(デフォルト値)のままにします。
  2. 各マスター ノードで NCP を再起動します。これにより、マスター フェイルオーバーが発生する可能性があります。
  3. NCP で処理するすべての入力方向に kubernetes.io/ingress.class: "nsx" という注釈を付けます。

シナリオ 2:NCP がデフォルトの入力方向コントローラの場合。

次の手順に従います。
  1. ncp.ini を編集する必要はありませんが、すべての入力方向に注釈が付いていることを確認してください。
  2. NCP によって処理される入力方向には、[kubernetes.io/ingress.class: "nsx"] という注釈を付ける必要があります。

    NCP は kubernetes.io/ingress.class 注釈のない入力方向を処理しますが、複数の入力方向コントローラがある場合は、デフォルトの入力方向コントローラの動作に依存しないように、常に kubernetes.io/ingress.class 注釈を付けることをおすすめします。

  3. サードパーティの入力方向コントローラによって処理される入力方向には、これらの入力方向コントローラで必要な値を注釈として設定する必要があります。
重要: NGINX をデフォルトの入力方向コントローラする場合を除き、NGINX 入力方向コントローラとして nginx を使用しないでください。この値を使用すると、NGINX がデフォルトの入力方向コントローラになります。

シナリオ 3:NCP が注釈に関係なく入力方向を処理しない場合。

次の手順に従います。
  1. 各マスター ノードで ncp.ininsx_v3 セクションを編集します。
    1. use_native_loadbalancerFalse に設定します。これで、default_ingress_class_nsx の値は無関係になりました。
  2. 各マスター ノードで NCP を再起動します。これにより、マスター フェイルオーバーが発生する可能性があります。

NCP は LoadBalancer タイプのサービスも処理しなくなります。