サードパーティの入力方向コントローラ
サードパーティの入力方向コントローラをサポートするように NCP を構成できます。
ncp.ini ファイルの編集
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: {}
に更新する可能性があります。この状況を回避するには、次の手順に従います。- 入力方向コントローラが 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注釈のない入力方向を更新できなくなります。
NAT モードで展開したサードパーティの入力方向コントローラの場合、
k8s
セクションで http_ingress_port
パラメータと https_ingress_port
パラメータを変更し、入力方向コントローラに公開される NAT ルールにカスタム ポートを指定できます。シナリオ 1:NCP は入力方向を処理するが、デフォルトの入力方向コントローラでない場合。
次の手順に従って、NCP が
nsx
クラスの入力方向を処理できるようにします。- 各マスター ノードで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注釈を付けることをおすすめします。
- サードパーティの入力方向コントローラによって処理される入力方向には、これらの入力方向コントローラで必要な値を注釈として設定する必要があります。
NGINX をデフォルトの入力方向コントローラする場合を除き、NGINX 入力方向コントローラとして
nginx
を使用しないでください。この値を使用すると、NGINX がデフォルトの入力方向コントローラになります。シナリオ 3:NCP が注釈に関係なく入力方向を処理しない場合。
次の手順に従います。
- 各マスター ノードでncp.iniのnsx_v3セクションを編集します。
- use_native_loadbalancerをFalseに設定します。これで、default_ingress_class_nsxの値は無関係になりました。
- 各マスター ノードで NCP を再起動します。これにより、マスター フェイルオーバーが発生する可能性があります。
NCP は LoadBalancer タイプのサービスも処理しなくなります。