サードパーティの入力方向コントローラ

サードパーティの入力方向コントローラをサポートするように 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.ini
    k8s
    セクションで、
    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.ini
    nsx_v3
    セクションを編集します。
    1. default_ingress_class_nsx
      False
      に設定します。
    2. use_native_loadbalancer
      True
      (デフォルト値)のままにします。
  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.ini
    nsx_v3
    セクションを編集します。
    1. use_native_loadbalancer
      False
      に設定します。これで、
      default_ingress_class_nsx
      の値は無関係になりました。
  2. 各マスター ノードで NCP を再起動します。これにより、マスター フェイルオーバーが発生する可能性があります。
NCP は LoadBalancer タイプのサービスも処理しなくなります。