Blogs
Effizientes Traffic Management: Verwendung von NGINX Ingress Controller mit KubeOps PLATFORM
Effizient Traffic Managen: NGINX Ingress Controller und KubeOps PLATFORM
In aktuellen Kubernetes-Landschaften ist das Managen und Umleiten von Traffic wichtiger denn je. Der speziell für Kubernetes designte NGINX Ingress Controller bietet präzise Kontrolle über allerlei eingehenden Datenverkehr. Dieser Blogpost bietet eine Übersicht über den NGINX Ingress Controller und dessen Integration in die KubeOps PLATFORM.
Kubernetes‘ stetig wachsendes Ökosystem hat neue Herausforderungen ins Traffic Management gebracht. Traditionelle Methoden mögen ihren Zweck nach wie vor erfüllen, doch können sie nicht immer den Ansprüchen derzeitiger Microservice-Strukturen dienen. Diese zeitgenössischen Bedürfnisse werden vom NGINX Ingress Cotroller addressiert und dessen Integrierung in KubeOps PLATFORM beschleunigt die Kubernetes-bezogenen Aufgaben.
Was ist ein Ingress-Controller?
Grundsätzlich ist ein Ingress Controller eine wichtige Komponente innerhalb des Kubernetes-Systems. Er überwacht und managed Zugriffe auf die Services im Kubernetes-Cluster, typischerweise den HTTP-Traffic. Kurz gesagt bildet er eine Brücke zwischen externem Datenverkehr und Cluster-internen Services.
Während Kubernetes selbst fundamentale Routing-Möglichkeiten mit sich bringt, verstärkt ein Ingress Controller diese mit fortgeschrittenen Routing-Rules und -Mechanismen. Dies gewährleistet nicht nur einen flüssigeren Traffic-Flow, sondern reiht sich zudem mit den Skalierbarkeits- und Flexibilitätsmandaten von Kubernetes ein. Einfach ausgedrückt kann ein Service zwar eine einzelne Anwendung bereitstellen, der Ingress Controller jedoch kann den Datenverkehr mehrerer Services leiten und das basierend auf verschiedenen Bedingungen wie dem Pfad oder der Domäne.
Zweck eines Ingress-Controllers:
- Manövriert Traffic an Kubernetes Services weiter ohne, dass mehrer Load Balancer benötigt werden.
- Aktiviert Pfad-basiertes Routing: So kann die /api an den Backend Service leiten, während / an den Frontend Service weiterleiten kann
- Etabliert SSL-Termination, JWT-Validation, Rate Limiting und zahlreiche andere Funktionen.
- Reduziert die Anzahl an genutzten Load Balancern und spart somit auch möglicherweise Kosten.
- Erlaubt Routing Rules von einem Punkt aus zu verwalten.
- Verteilt eingehenden Verkehr an mehrere Pods.
- Bietet Content Cashing am Ingress Point.
- Support von Custom Annotations für eine erweiterte Funktionalität.
Features des NGINX Controllers:
- NGINX, welches durch exzellente Performance als Webserver bereits bekannt ist bietet nun auch den gleichnamigen Ingress Controller für Kuberenetes
- Kann mehrere Anfragen gleichzeitig bewältigen
- Weite Auswahl an Konfigurationsmöglichkeiten
- Von aktiver Open Source Community unterstützt
- Benötigt weniger Ressourcen während der Ausführung
- Hat Stabilität bei hohen Traffic-Bedingungen bewiesen
- Beinhaltet eingebauten Prometheus-Support für Monitoring
- Bietet Sitzungsbeständigkeit
- Enthält rate-limiting
- Nutzung von Least Connections und IP Hash für Load Balancing
Einrichten des NGINX Ingress Controllers auf der KubeOps PLATFORM:
Die Integration in KubeOps PLATFORM setzt ein paar YAML-Konfigurationen voraus.
Erste Schritte:
In platform.yaml:
ingress: true #Das muss gesetzt sein!
Wenden Sie die Settings an mit:
kubeopsctl apply -f "platform.yaml"
Nach diesen anfänglichen Konfigurationen müssen weitere Änderungen vorgenommen werden, damit der NGINX Controller ordnungsgemäß funktioniert.
Konfigurationsdetails für den NGINX Ingress Controller:
Weitere Schritte sind durchzuführen:
Zur Lokalisierung des Service:
kubectl get service -A | grep ingress-nginx-controller
Um den Service-Typ zu „NodePort“ zu ändern:
kubectl patch service ingress-nginx-controller -n kubeops -p '{"spec":{"type":"NodePort"}}'
Für speziellere Ports, so etwa 30080 und 30443:
kubectl patch service ingress-nginx-controller -n kubeops --type=json -p '[{"op":"replace","path":"/spec/type","value":"NodePort"}, {"op":"add","path":"/spec/ports/0/nodePort","value":30080}, {"op":"add","path":"/spec/ports/1/nodePort","value":30443}]'
Um externe IPs hinzuzufügen anhand des Beispiels „192.168.0.1“:
kubectl patch service ingress-nginx-controller -n kubeops -p '{"spec":{"externalIPs":["192.168.0.1"]}}'
Das Managen von Kubernetes-Komponenten kann kompliziert sein. Gerade das Traffic-Management ist dabei jedoch essenziell. Der NGINX Ingress Controller schafft in diesem Bereich Abhilfe und kann zusammen mit KubeOps PLATFORM Kubernetes-Deployment-Herausforderungen bedeutend vereinfachen. Während Kubernetes ein Zentralknoten vieler Infrastrukturen bleibt, werde auch derartige Tools und Plattformen immer wichtiger.