Utilizzo di un controller Ingress personalizzato


Questa pagina descrive come utilizzare un controller Ingress personalizzato con Google Kubernetes Engine (GKE).

Utilizza un controller Ingress personalizzato con il componente aggiuntivo HttpLoadBalancing abilitato

Puoi eseguire un controller Ingress personalizzato, ad esempio nginx-ingress, disattivando il componente aggiuntivo HttpLoadBalancing. In questo modo impedisci al controller GKE Ingress di elaborare le risorse Ingress.

Se vuoi eseguire un controller Ingress personalizzato con il componente aggiuntivo HttpLoadBalancing abilitato, ad esempio per usare funzionalità come subsetting e Private Service Connect, puoi utilizzare uno dei seguenti approcci:

Devi evitare che spec.ingressClassName venga sovrascritto accidentalmente da qualsiasi processo. Un'operazione di aggiornamento che modifica spec.IngressClassName da un valore valido a una stringa vuota ("") fa sì che il controller Ingress di GKE elabori l'Ingress.

Configura il campo ingressClassName

Puoi utilizzare un controller Ingress personalizzato impostando il campo ingressClassName nel file manifest in entrata. Il file manifest seguente descrive una risorsa Ingress che specifica il controller 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

Questa configurazione è supportata con l'API Ingress v1beta1 nelle versioni GKE da 1.18 a 1.21 e l'API Ingress v1 nelle versioni GKE 1.19 e successive.

Configurare una classe Ingress predefinita

Puoi configurare una classe Ingress predefinita per tutte le risorse Ingress in un cluster creando una risorsa IngressClass con l'annotazione ingressclass.kubernetes.io/is-default-class impostata su 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

Questa configurazione è disponibile per i cluster che eseguono GKE con versioni 1.19 e successive.

Riepilogo del comportamento del controller Ingress di GKE

Per i cluster che eseguono GKE versioni 1.18 e successive, se il controller Ingress di GKE elabora o meno un Ingress dipende dal valore dell'annotazione kubernetes.io/ingress.class e dal campo ingressClassName nel file manifest Ingress:

Valore kubernetes.io/ingress.class Valore ingressClassName Comportamento del controller Ingress
Non impostate Non impostate Elaborazione in entrata
gce o gce-internal Qualsiasi valore Elaborazione in entrata
Imposta un valore diverso da gce o gce-internal Qualsiasi valore Non elaborare Ingress
Non impostate Qualsiasi valore Non elaborare Ingress

Per i cluster che eseguono versioni di GKE precedenti, il controller GKE elabora qualsiasi Ingress che non ha l'annotazione kubernetes.io/ingress.class o che ha l'annotazione con il valore gce o gce-internal.

Passaggi successivi