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:
- Legen Sie im Ingress-Manifest die Annotation
kubernetes.io/ingress.class
fest. Diese Konfiguration wird für Cluster mit beliebiger GKE-Version unterstützt. - Konfigurieren Sie das Feld
ingressClassName
. - Standard-Ingress-Klasse konfigurieren
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
- Load-Balancing in Google Cloud
- Konfigurieren von Ingress für interne Anwendungs-Load-Balancer
- Konfigurieren von Ingress für externe Anwendungs-Load-Balancer
- GKE Ingress mit NGNIX Ingress implementieren