Usa un controlador de Ingress personalizado


En esta página, se describe cómo puedes usar un controlador de Ingress personalizado con Google Kubernetes Engine (GKE).

Usa un controlador de Ingress personalizado con el complemento HttpLoadBalancing habilitado

Puedes ejecutar un controlador de Ingress personalizado, como nginx-ingress, si inhabilitas el complemento HttpLoadBalancing. Esto evita que el controlador de Ingress de GKE procese los recursos de Ingress.

Si deseas ejecutar un controlador de Ingress personalizado con el complemento HttpLoadBalancing habilitado, por ejemplo, para usar funciones como la subconfiguración y Private Service Connect, puedes usar uno de los siguientes enfoques:

Debes asegurarte de que spec.ingressClassName no reemplace accidentalmente a ningún proceso. Una operación de actualización que cambia spec.IngressClassName de un valor válido a una string vacía ("") hace que el controlador de Ingress de GKE procese el Ingress.

Configura el campo ingressClassName

Puedes usar un controlador de Ingress personalizado si configuras el campo ingressClassName en el manifiesto de Ingress. En el siguiente manifiesto, se describe un Ingress que especifica el controlador de Ingress nginx:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
 name: cafe-ingress
spec:
 ingressClassName: nginx
 tls:
 - hosts:
   - cafe.example.com
   secretName: cafe-secret
 rules:
 - host: cafe.example.com

Esta configuración es compatible con la API de Ingress v1beta1 en las versiones 1.18 a 1.21 de GKE y la API de Ingress v1 en las versiones 1.19 y posteriores de GKE.

Configura una clase de Ingress predeterminada

Puedes configurar una clase de Ingress predeterminada para todos los recursos Ingress en un clúster si creas un recurso IngressClass con la anotación ingressclass.kubernetes.io/is-default-class configurada como true:

apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
name: nginx-public
annotations:
  ingressclass.kubernetes.io/is-default-class: "true"
spec:
controller: k8s.io/ingress-nginx

Esta configuración está disponible para clústeres que ejecutan la versión 1.19 y posteriores de GKE.

Resumen del comportamiento del controlador de Ingress de GKE

Para los clústeres que ejecutan versiones 1.18 y posteriores de GKE, sin importar si el controlador de Ingress de GKE procesa un Ingress depende del valor de la anotación kubernetes.io/ingress.class y del campo ingressClassName en el manifiesto de Ingress:

Valor kubernetes.io/ingress.class Valor ingressClassName Comportamiento del controlador de Ingress
Sin establecer Sin establecer Procesar Ingress
gce o gce-internal Cualquier valor Procesar Ingress
Establece un valor distinto de gce o gce-internal. Cualquier valor No proceses Ingress
Sin establecer Cualquier valor No proceses Ingress

Para los clústeres que ejecutan versiones anteriores de GKE, el controlador de GKE procesa cualquier Ingress que no tenga la anotación kubernetes.io/ingress.class o tenga la anotación con el valor gce o gce-internal.

¿Qué sigue?