サードパーティの入力方向コントローラをサポートするように NCP を構成できます。
ncp.ini ファイルの編集
構成ファイル /var/vcap/data/jobs/ncp/xxxxxxxx/config/ncp.ini を編集する必要があります(xxxxxxxx は BOSH 展開 ID)。その後、このファイルは NCP が再起動するたびに rootfs にコピーされ、NCP で使用されます。このファイルは、各マスター ノードで編集する必要があります。
- 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.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 で更新します。
- 入力方向コントローラが https://github.com/kubernetes/ingress-nginx の場合
- 入力方向コントローラで、ingress-class を "nginx" 以外の値に変更します。
- 注釈 kubernetes.io/ingress-class: "nginx" を持つ入力方向がある場合は、注釈を別の値に変更します。
- 詳細については、https://kubernetes.github.io/ingress-nginx/user-guide/multiple-ingressを参照してください。
- 入力方向コントローラが https://github.com/nginxinc/kubernetes-ingress の場合
- 入力方向コントローラで、ingress-class を "nginx" 以外の値に変更します。
- 注釈 kubernetes.io/ingress-class: "nginx" を持つ入力方向がある場合は、注釈を別の値に変更します。
- 入力方向コントローラ ポッドで、use-ingress-class-only を True に設定します。これにより、このコントローラは kubernetes.io/ingress-class 注釈のない入力方向を更新できなくなります。
- 詳細については、https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/multiple-ingress.mdを参照してください。
NAT モードで展開したサードパーティの入力方向コントローラの場合、k8s セクションで http_ingress_port パラメータと https_ingress_port パラメータを変更し、入力方向コントローラに公開される NAT ルールにカスタム ポートを指定できます。
シナリオ 1:NCP は入力方向を処理するが、デフォルトの入力方向コントローラでない場合。
- 各マスター ノードで ncp.ini の nsx_v3 セクションを編集します。
- default_ingress_class_nsx を False に設定します。
- use_native_loadbalancer を True(デフォルト値)のままにします。
- 各マスター ノードで NCP を再起動します。これにより、マスター フェイルオーバーが発生する可能性があります。
- NCP で処理するすべての入力方向に kubernetes.io/ingress.class: "nsx" という注釈を付けます。
シナリオ 2:NCP がデフォルトの入力方向コントローラの場合。
- ncp.ini を編集する必要はありませんが、すべての入力方向に注釈が付いていることを確認してください。
- NCP によって処理される入力方向には、[kubernetes.io/ingress.class: "nsx"] という注釈を付ける必要があります。
NCP は kubernetes.io/ingress.class 注釈のない入力方向を処理しますが、複数の入力方向コントローラがある場合は、デフォルトの入力方向コントローラの動作に依存しないように、常に kubernetes.io/ingress.class 注釈を付けることをおすすめします。
- サードパーティの入力方向コントローラによって処理される入力方向には、これらの入力方向コントローラで必要な値を注釈として設定する必要があります。
シナリオ 3:NCP が注釈に関係なく入力方向を処理しない場合。
- 各マスター ノードで ncp.ini の nsx_v3 セクションを編集します。
- use_native_loadbalancer を False に設定します。これで、default_ingress_class_nsx の値は無関係になりました。
- 各マスター ノードで NCP を再起動します。これにより、マスター フェイルオーバーが発生する可能性があります。
NCP は LoadBalancer タイプのサービスも処理しなくなります。