Puede configurar NCP para que admita controladores de entrada de terceros.

Editar el archivo ncp.ini

Debe editar el archivo de configuración /var/vcap/data/jobs/ncp/xxxxxxxx/config/ncp.ini (xxxxxxxx es el identificador de implementación de BOSH). Este archivo se copiará en rootfs y NCP lo usará cada vez que se reinicie. El archivo se debe editar en cada nodo principal.

Importante: Los cambios en ncp.ini no se mantienen en las actualizaciones del clúster de TKGI. Si realiza cambios a través del mosaico de TKGI y, a continuación, actualiza la implementación de TKGI, se perderán los cambios en ncp.ini.
Las opciones correspondientes se encuentran en la sección nsx_v3.
  • use_native_loadbalancer - Si se establece como False, NCP no procesará ninguna entrada ni servicio del tipo actualizaciones de LoadBalancer, independientemente de sus anotaciones. Este ajuste se aplica a todo el clúster de TKGI. El valor predeterminado es True.
  • default_ingress_class_nsx - Si se establece como True, NCP se convertirá en el controlador de entrada predeterminado y controlará tanto las entradas anotadas con kubernetes.io/ingress.class: "nsx" como las entradas sin ninguna anotación. Si se establece como False, NCP solo controlará las entradas anotadas con kubernetes.io/ingress.class: "nsx". El valor predeterminado es True.
    A partir de NCP 3.2.1, default_ingress_class_nsx queda obsoleto. NCP observará lo siguiente al resolver la clase de entrada:
    • anotaciones
    • ingressClass objetos
    • Si no se especifica ninguna anotación y use_native_loadbalancer es True, NSX-LB controlará la entrada. De lo contrario, NSX-LB no la controlará.
Si desea que NCP asigne una dirección IP flotante al pod del controlador NGINX y actualice el estado de las entradas con dicha IP flotante, haga lo siguiente:
  • En la sección k8s de ncp.ini, establezca el valor ingress_mode=nat.
  • Agregue la anotación ncp/ingress-controller: "True" al pod del controlador de entrada NGINX.

NCP actualizará el estado de las entradas que incluyan la anotación kubernetes.io/ingress.class: "nginx" con la IP flotante del pod del controlador de entrada NGINX. Si default_ingress_class_nsx=False, NCP también actualizará el estado de los ingresos sin la anotación kubernetes.io/ingress.class con la IP flotante del pod del controlador de entrada NGINX.

Nota: Aunque el pod del controlador de entrada NGINX no incluya la anotación ncp/ingress-controller: "True", NCP actualizará el estado de las entradas mencionadas anteriormente a loadBalancer: {}. A continuación, las entradas pueden quedar bloqueadas en un bucle en el que el controlador NGINX actualiza el estado de las entradas a loadBalancer: {ingress: [{ip: <IP>}]} y NCP lo actualiza a loadBalancer: {}. Para resolver este problema, siga estos pasos:

Para los controladores de entrada de terceros implementados en modo NAT, puede modificar los parámetros http_ingress_port y https_ingress_port en la sección k8s para especificar puertos personalizados para las reglas NAT que se exponen para la controladora de entrada.

Escenario 1: NCP controla las entradas, pero no es el controlador de entrada predeterminado.

Siga este procedimiento para permitir que NCP controle las entradas de clase nsx.
  1. Edite la sección nsx_v3 del archivo ncp.ini de cada nodo principal.
    1. Establezca default_ingress_class_nsx como False.
    2. Deje use_native_loadbalancer establecido como True, el valor predeterminado.
  2. Reinicie NCP en cada nodo principal. Esto puede provocar una conmutación por error generalizada.
  3. Anote todas las entradas que desea que controle NCP con kubernetes.io/ingress.class: "nsx".

Escenario 2: NCP es el controlador de entrada predeterminado.

Siga este procedimiento:
  1. No es necesario editar ncp.ini, pero asegúrese de que todas las entradas estén anotadas.
  2. Las entradas que gestionará NCP deben estar anotadas con kubernetes.io/ingress.class: "nsx".

    Aunque NCP controlará las entradas sin la anotación kubernetes.io/ingress.class, en el caso de que haya varios controladores de entrada, se recomienda tener siempre la anotación kubernetes.io/ingress.class para no depender del comportamiento del controlador de entrada predeterminado.

  3. Las entradas que se controlarán mediante controladores de entrada de terceros deben anotarse con el valor que requieran dichos controladores.
Importante: A menos que desee que NGINX sea el controlador de entrada predeterminado, no utilice nginx como el controlador de entrada NGINX, ya que eso convertirá a NGINX en el controlador de entrada predeterminado.

Escenario 3: NCP no controla ninguna entrada, independientemente de su anotación.

Siga este procedimiento:
  1. Edite la sección nsx_v3 del archivo ncp.ini de cada nodo principal.
    1. Establezca use_native_loadbalancer como False. El valor de default_ingress_class_nsx ahora es irrelevante.
  2. Reinicie NCP en cada nodo principal. Esto puede provocar una conmutación por error generalizada.

Tenga en cuenta que NCP tampoco controlará los servicios del tipo LoadBalancer.