Controladores de entrada de terceros
Puede configurar NCP para que admita controladores de entrada de terceros.
Editar el archivo ncp.ini
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.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 comoFalse, 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 esTrue.
- default_ingress_class_nsx- Si se establece comoTrue, NCP se convertirá en el controlador de entrada predeterminado y controlará tanto las entradas anotadas conkubernetes.io/ingress.class: "nsx"como las entradas sin ninguna anotación. Si se establece comoFalse, NCP solo controlará las entradas anotadas conkubernetes.io/ingress.class: "nsx". El valor predeterminado esTrue.A partir de NCP 3.2.1,default_ingress_class_nsxqueda obsoleto. NCP observará lo siguiente al resolver la clase de entrada:
- anotaciones
- ingressClassobjetos
- Si no se especifica ninguna anotación yuse_native_loadbalanceres 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ónk8sdencp.ini, establezca el valoringress_mode=nat.
- Agregue la anotaciónncp/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:- Si el controlador de entrada es de https://github.com/kubernetes/ingress-nginx:
- En el controlador de entrada, cambie el valor deingress-classpor uno que no sea"nginx".
- Si hay una entrada con la anotaciónkubernetes.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 deingress-classpor uno que no sea"nginx".
- Si hay una entrada con la anotaciónkubernetes.io/ingress-class: "nginx", cámbiela a un valor diferente.
- En el pod del controlador de entrada, establezcause-ingress-class-onlycomoTrue. Esto evitará que este controlador actualice las entradas sin la anotaciónkubernetes.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.
Siga este procedimiento para permitir que NCP controle las entradas de clase
nsx
.- Edite la secciónnsx_v3del archivoncp.inide cada nodo principal.
- Establezcadefault_ingress_class_nsxcomoFalse.
- Dejeuse_native_loadbalancerestablecido comoTrue, 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 conkubernetes.io/ingress.class: "nsx".
Escenario 2: NCP es el controlador de entrada predeterminado.
Siga este procedimiento:
- No es necesario editarncp.ini, pero asegúrese de que todas las entradas estén anotadas.
- Las entradas que gestionará NCP deben estar anotadas conkubernetes.io/ingress.class: "nsx".Aunque NCP controlará las entradas sin la anotaciónkubernetes.io/ingress.class, en el caso de que haya varios controladores de entrada, se recomienda tener siempre la anotaciónkubernetes.io/ingress.classpara 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.
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:
- Edite la secciónnsx_v3del archivoncp.inide cada nodo principal.
- Establezcause_native_loadbalancercomoFalse. El valor dedefault_ingress_class_nsxahora 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.