Benutzerdefinierten Ingress-Controller verwenden


Auf dieser Seite wird beschrieben, wie Sie einen benutzerdefinierten Ingress-Controller mit Google Kubernetes Engine (GKE) verwenden.

Benutzerdefinierten Ingress-Controller mit aktiviertem Add-on HttpLoadBalancing verwenden

Sie können einen benutzerdefinierten Ingress-Controller wie nginx-ingress ausführen, indem Sie das Add-on HttpLoadBalancing deaktivieren. Dadurch wird verhindert, dass der GKE-Ingress-Controller Ingress-Ressourcen verarbeitet.

Wenn Sie einen benutzerdefinierten Ingress-Controller mit dem aktivierten Add-on HttpLoadBalancing ausführen möchten, beispielsweise um Features wieUntereinstellung und Private Service Connect zu verwenden, können Sie einen der folgenden Ansätze verwenden:

Achten Sie darauf, dass spec.ingressClassName nicht versehentlich von einem Prozess überschrieben wird. Ein Aktualisierungsvorgang, bei dem spec.IngressClassName von einem gültigen Wert in einen leeren String ("") geändert wird, führt dazu, dass der GKE-Ingress-Controller das Ingress verarbeitet.

Feld ingressClassName konfigurieren

Sie können einen benutzerdefinierten Ingress-Controller verwenden, indem Sie das Feld ingressClassName im Ingress-Manifest festlegen. Das folgende Manifest beschreibt ein Ingress, das den nginx-Ingress-Controller angibt:

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

Diese Konfiguration wird mit der Ingress v1beta1 API in den GKE-Versionen 1.18 bis 1.21 und der Ingress v1 API in den GKE-Versionen 1.19 und höher unterstützt.

Standard-Ingress-Klasse konfigurieren

Sie können eine Standard-Ingress-Klasse für alle Ingress-Ressourcen in einem Cluster konfigurieren. Dazu erstellen Sie eine IngressClass-Ressource, bei der die Annotation ingressclass.kubernetes.io/is-default-class auf true festgelegt ist.

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

Diese Konfiguration ist für Cluster mit der GKE-Version 1.19 und höher verfügbar.

Verhaltens des GKE-Ingress-Controllers

Ob der GKE-Ingress-Controller bei Clustern der GKE-Version 1.18 oder höher ein Ingress verarbeitet, hängt vom Wert der Annotation kubernetes.io/ingress.class und vom Feld ingressClassName im Ingress-Manifest ab. Weitere Informationen finden Sie unter Verhalten des GKE-Ingress-Controllers.

Nächste Schritte