Controladores de entrada de terceros

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.
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.
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.