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.classfest. 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
- Weitere Informationen zum Load-Balancing in Google Cloud
- Konfiguration von Ingress für interne Application Load Balancer
- Konfigurieren von Ingress für externe Anwendungs-Load-Balancer
- GKE Ingress mit NGNIX Ingress implementieren