Freigeben über


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: