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.
- 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á.
- 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.
- Si el controlador de entrada es de https://github.com/kubernetes/ingress-nginx:
- En el controlador de entrada, cambie el valor de ingress-class por uno que no sea "nginx".
- Si hay una entrada con la anotación kubernetes.io/ingress-class: "nginx", cámbiela a un valor diferente.
- Para obtener más información, consulte https://kubernetes.github.io/ingress-nginx/user-guide/multiple-ingress.
- Si el controlador de entrada es de https://github.com/nginxinc/kubernetes-ingress:
- En el controlador de entrada, cambie el valor de ingress-class por uno que no sea "nginx".
- Si hay una entrada con la anotación kubernetes.io/ingress-class: "nginx", cámbiela a un valor diferente.
- En el pod del controlador de entrada, establezca use-ingress-class-only como True. Esto evitará que este controlador actualice las entradas sin la anotación kubernetes.io/ingress-class.
- Para obtener más información, consulte https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/multiple-ingress.md.
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.
- Edite la sección nsx_v3 del archivo ncp.ini de cada nodo principal.
- Establezca default_ingress_class_nsx como False.
- Deje use_native_loadbalancer establecido como True, el valor predeterminado.
- Reinicie NCP en cada nodo principal. Esto puede provocar una conmutación por error generalizada.
- Anote todas las entradas que desea que controle NCP con kubernetes.io/ingress.class: "nsx".
Escenario 2: NCP es el controlador de entrada predeterminado.
- No es necesario editar ncp.ini, pero asegúrese de que todas las entradas estén anotadas.
- 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.
- Las entradas que se controlarán mediante controladores de entrada de terceros deben anotarse con el valor que requieran dichos controladores.
Escenario 3: NCP no controla ninguna entrada, independientemente de su anotación.
- Edite la sección nsx_v3 del archivo ncp.ini de cada nodo principal.
- Establezca use_native_loadbalancer como False. El valor de default_ingress_class_nsx ahora es irrelevante.
- 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.