Bereitstellen eines Eingangsdatencontrollers
Gilt für: AKS auf Azure Stack HCI 22H2, AKS unter Windows Server
Ein Eingangsdatencontroller ist eine Kubernetes-Ressource, die innerhalb des Kubernetes-Clusters externen Zugriff auf Dienste ermöglicht. Das Feature „Ingress“ ermöglicht es einem Operator, einen Dienst für externe Netzwerkanforderungen verfügbar zu machen, in der Regel HTTP oder HTTPS. Sie konfigurieren den Zugriff, indem Sie eine Reihe von Regeln zur Festlegung der eingehenden Verbindungen festlegen, die bestimmte Dienste erreichen.
Ein Eingangscontroller ist Software, die konfigurierbares Datenverkehrsrouting für Kubernetes-Dienste bereitstellt. Mithilfe von Ressourcen für eingehende Kubernetes-Daten werden Eingangsregeln und Routen für einzelne Kubernetes-Dienste konfiguriert. Durch Verwendung eines Eingangsdatencontrollers und von Eingangsregeln kann eine einzelne IP-Adresse zum Weiterleiten von Datenverkehr an mehrere Dienste in einem Kubernetes-Cluster genutzt werden.
Nachdem Sie den Controller in Ihrer Umgebung bereitgestellt haben, können Sie das Eingangsmanifest erstellen und bereitstellen. Derzeit verwenden Sie den Ingress in AKS Arc mithilfe des NGINX-Eingangscontrollers. Informationen zum Installieren, Konfigurieren und Verwenden des NGINX-Eingangscontrollers finden Sie unter Installation mit Manifesten.
Ingress unterscheidet sich von NodePort und LoadBalancer auf besondere Weise und verbessert das Routing von Datenverkehr zu Ihrem Cluster auf kostengünstigere Weise. Durch das Definieren von NodePort-Diensten werden zahlreiche zufällige Ports erstellt, und das Definieren von LoadBalancer-Diensten erhöht die Kosten für Cloudressourcen mehr als gewünscht. Wenn Sie einen Eingangsdatencontroller definieren, konsolidieren Sie die Regeln für das Routing von Datenverkehr in einer einzelnen Ressource, die als Teil Ihres Clusters ausgeführt wird. Mit NodePort und LoadBalancer können Sie einen Dienst verfügbar machen, indem Sie diesen Wert im Typ des Diensts angeben, während Ingress eine unabhängige Ressource für den Dienst ist. Ingress wird separat vom Dienst definiert, erstellt und zerstört.
Je nach Anwendungsfall können Sie Ingress auf unterschiedliche Weise bereitstellen. Ingress-Ressourcen werden verwendet, um die Konfiguration innerhalb des Eingangsdatencontrollers zu aktualisieren, um zu bestimmen, wie er funktioniert.
Verwenden von Ingress, um Dienste über extern erreichbare URLs verfügbar zu machen
Ein Beispiel für die Verwendung des Eingangs wird im folgenden YAML-Manifest gezeigt. Die ingress.class
anzeige in den Metadaten (in diesem Beispiel ingress-nginx
), und mit dieser Einstellung kann der NGINX-Eingangscontroller wissen, was er überwachen und aktualisieren muss:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: hello-world
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: test.example.com
http:
paths:
- path: /hello-world
pathType: Prefix
backend:
service:
name: hello-world
port:
number: 8080
Der spec
Abschnitt enthält Informationen zu den Konfigurationen. In diesem Beispiel wird eine Regel (oder eine Regelsatz) definiert und enthält die folgenden Elemente:
- Der Host, auf den die Regeln angewendet werden.
- Gibt an, ob der Datenverkehr HTTP oder HTTPS ist.
- Der überwachte Pfad.
- Der interne Dienst und der Port, an den der Datenverkehr gesendet wird.
Verwenden von Ingress zum Lastenausgleich des Datenverkehrs
Im folgenden Beispiel wird dem Manifest ein weiterer Pfad hinzugefügt, der den Lastenausgleich zwischen verschiedenen Back-Ends einer Anwendung zulässt. In diesem Beispiel kann der Operator den Datenverkehr aufteilen und ihn auf Grundlage des beschriebenen Pfads an verschiedene Dienstendpunkte und Bereitstellungen senden. Hinter jedem Pfad befindet sich eine Bereitstellung und ein Dienst, der für Endpunkte hilfreich ist, die mehr Datenverkehr erhalten:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: hello-world-and-earth
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: test.example.com
http:
paths:
- path: /hello-world
pathType: Prefix
backend:
service:
name: hello-world
port:
number: 8080
- path: /hello-earth
pathType: Prefix
backend:
service:
name: hello-earth
port:
number: 8080
Verwenden von Ingress, um HTTP-Datenverkehr an mehrere Hostnamen unter derselben IP-Adresse weiterzuleiten
Sie können für jeden Host eine andere Ingress-Ressource verwenden, wodurch Sie den Datenverkehr mit mehreren Hostnamen steuern können. Um eine andere Eingangsressource zu verwenden, verweisen Sie auf mehrere Hostnamen auf dieselbe öffentliche IP-Adresse, die für den LoadBalancer-Dienst verwendet wird. In der folgenden Manifestdatei wurde eine Produktionsversion von hello-world
hinzugefügt. Der Hostname prod.example.com
wird verwendet, und der Datenverkehr wird auf den neuen Dienst hello-world-prod
verwiesen. Der Datenverkehr erfolgt über die IP-Adresse des Lastenausgleichs und wird basierend auf dem Hostnamen und dem von Ihnen bereitgestellten Pfad weitergeleitet:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: hello-world-prod
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: test.example.com
http:
paths:
- path: /hello-world
pathType: Prefix
backend:
service:
name: hello-world-test
port:
number: 8080
- host: prod.example.com
http:
paths:
- path: /hello-world
pathType: Prefix
backend:
service:
name: hello-world-prod
port:
number: 8080
Nächste Schritte
Weitere Informationen finden Sie in den folgenden Links: