NGINX Ingress Controller Version 2.0: Das müssen Sie wissen

NGINX | 27. Dezember 2021

Im Oktober haben wir Version 2.0 von F5 NGINX Ingress Controller veröffentlicht (nginxinc/kubernetes-ingress) und damit Unterstützung für Kubernetes 1.22 sowie Version 1 der Ingress API (networking.k8s.io/v1) hinzugefügt. Vielleicht fragen Sie sich jetzt: Na und?

Die Antwort auf die Frage „Na und?“ ist vielschichtig. Wir nähern uns ihr, indem wir drei miteinander verknüpfte Fragen beantworten:

Lesen Sie weiter, um die Antworten zu erfahren, und schalten Sie ein bei „Ihr Schlachtplan für den Fall, dass Kubernetes-Versionen angreifen“ am 11. Januar 2022.

Warum sind Kubernetes-Releases so wichtig?

Die Antwort auf diese Frage ist einfach und zugleich kompliziert. Das Kompatibilitätsmanagement für Kubernetes ist anspruchsvoll, da Kubernetes-Administratoren drei Kategorien der Versionierung verwalten müssen:

  1. Die Kubernetes-Plattform selbst – Mit jeder neuen Version stellt das Kubernetes-Team die Wartung einer älteren Version ein. Eine solche Version weiterhin zu verwenden, ist für Ihre Risikomanagementstrategie problematisch und erschwert die Fehlerbehebung, da keine Unterstützung durch das Kubernetes-Team mehr verfügbar ist. Derzeit pflegt das Kubernetes-Projekt Release-Zweige für die drei neuesten Nebenversionen (1.20, 1.21 und 1.22). Kubernetes 1.19 und neuere Versionen erhalten etwa 1 Jahr lang Patch-Support, während Kubernetes 1.18 und ältere Versionen etwa 9 Monate lang Patch-Support erhielten. (Der kürzere Zeitraum für 1.18 und ältere Versionen ist darauf zurückzuführen, dass Kubernetes früher viermal statt wie heute dreimal pro Jahr veröffentlicht wurde).
  2. Die Kubernetes-APIs – Mit jeder Kubernetes-Version kommen neue APIs hinzu und veraltete werden als überholt gekennzeichnet. Änderungen an APIs wirken sich auf die zugehörigen Ressourcen und Tools aus. Wenn Sie Ihre Kubernetes-Plattform aktualisieren, müssen Sie möglicherweise auch die APIs aktualisieren.
  3. Die Tools, die Sie in Kubernetes bereitgestellt haben – Eine wesentliche Änderung an Kubernetes oder seinen APIs kann dazu führen, dass Ihre Tools – beispielsweise ein Ingress-Controller – und die zugehörigen Ressourcen nicht mehr ordnungsgemäß funktionieren.

Sie müssen also drei Zeitpläne im Blick behalten: einen für Kubernetes, einen für die Ingress-API und einen für den NGINX Ingress Controller. Damit Kubernetes weiterhin funktioniert, müssen Sie den optimalen Punkt finden, an dem die Kubernetes-Version mit den APIs und dem NGINX Ingress Controller kompatibel ist. Wenn Sie eine der drei Komponenten aktualisieren, ohne zuvor die Kompatibilität zu prüfen, kann dies drastische Folgen haben. Wenn nicht alle drei Komponenten miteinander kompatibel sind … herzlichen Glückwunsch, Sie haben Ihre Anwendungen lahmgelegt!

Was ist die Ingress-API und warum ist networking.k8s.io/v1 wichtig?

Die Ingress-API ermöglicht es einem Ingress-Controller, Ihre Kubernetes-Anwendungen sicher zugänglich zu machen. Die networking.k8s.io/v1-API (auch bekannt als Ingress-API v1) wurde mit Kubernetes 1.19 eingeführt. Zu diesem Zeitpunkt unterstützte Kubernetes sowohl v1beta1 als auch v1 – und stellte automatisch eine Version als die jeweils andere dar. Diese im Hintergrund wirkende Kompatibilität der API-Versionen bietet Ihnen betriebliche Vorteile, kann jedoch Ihre Planung erschweren.

Mit der Veröffentlichung von Kubernetes 1.22 wurde v1 zur einzigen Version der Ingress-API. Das ist von Bedeutung, denn da Ingress-API v1 nun die maßgebliche Version ist, gelten alle Betaversionen (extensions/v1beta1 und networking.k8s.io/v1beta1) als veraltet. Für Organisationen, die Ingress-API v1 noch nicht eingeführt haben, ist das zwar mit Umstellungen verbunden, doch wir bei NGINX sehen diese Änderung als positives Zeichen. Dass die Ingress-API die Betaphase verlässt, signalisiert ihre Weiterentwicklung zu einer ausgereiften und vollständig umgesetzten API. Warum ist diese Änderung nun wichtig? Das hängt mit der Versionsverwaltung zusammen. Angenommen, Sie aktualisieren einen bestehenden Cluster auf Kubernetes 1.22, verwenden aber weiterhin v1beta1-Ressourcen für Ingress … herzlichen Glückwunsch, Sie haben Ihre Ingress-Ressourcen außer Funktion gesetzt!

Wie wirkt sich NGINX Ingress Controller 2.0 auf bestehende Kunden aus?

Da der NGINX Ingress Controller eng mit der Ingress API verknüpft ist, hatte die Veröffentlichung von v1 erhebliche Auswirkungen auf unser Produkt – und damit auch auf Sie als unsere Kunden –, weshalb wir bei der Versionsnummer des NGINX Ingress Controllers von 1.x auf 2.x gesprungen sind. Wir haben die Architektur des NGINX Ingress Controllers 2.0 überarbeitet, um die Ingress API v1 zu nutzen und vollständige Kompatibilität mit Kubernetes 1.22 zu gewährleisten.

Wenn Sie den NGINX Ingress Controller verwenden, müssen Sie umgehend einige versionsabhängige Maßnahmen ergreifen, um zu verhindern, dass Kubernetes, Ihre Ingress-Ressourcen oder der NGINX Ingress Controller nicht mehr funktionieren:

  • Kubernetes 1.18 und früher:
    • Stellen Sie sicher, dass Sie NGINX Ingress Controller 1.12 verwenden, damit Ihnen der größtmögliche Funktionsumfang zur Verfügung steht. (Wenn Sie ein Upgrade auf NGINX Ingress Controller 2.0 durchführen, müssen Sie auch ein Upgrade auf Kubernetes 1.19 oder höher durchführen.)
    • Erstellen Sie einen Plan für die Migration auf eine neuere Version von Kubernetes (und NGINX Ingress Controller) innerhalb der nächsten Monate, da Kubernetes 1.18 nach der nächsten Kubernetes-Version nicht mehr unterstützt wird.
  • Kubernetes 1.19–1.21:
    • Führen Sie ein Upgrade auf NGINX Ingress Controller 2.0 durch.
    • Wenn Sie Ihre Ingress-bezogenen Ressourcen noch nicht zu networking.k8s.io/v1 migriert haben (siehe die Versionshinweise zu NGINX Ingress Controller 2.0), sollten Sie jetzt einen Plan dafür erstellen. Kubernetes 1.19–1.21 unterstützt alle aktuellen Versionen der Ingress-API (sowohl v1beta1 als auch v1). Dadurch haben Sie die Möglichkeit, die Ressourcen direkt zu konvertieren.
    • Falls noch nicht geschehen, migrieren Sie Ihre Ingress- und IngressClass-Ressourcen umgehend zu networking.k8s.io/v1.
      • Wenn Sie die veraltete Annotation „kubernetes.io/ingress.class“ in Ihren Ingress-Ressourcen verwenden, empfehlen wir Ihnen, zum Feld „ingressClassName“ zu wechseln.
      • Nutzen Sie unsere Dokumentation und Beispiele (verfügbar mit networking.k8s.io/v1 und dem Feld ingressClassName der Ingress-Ressource), um Ihre Aktualisierungen zu planen.
  • Kubernetes 1.22:
    • Stellen Sie sicher, dass Sie bereits NGINX Ingress Controller 2.0 verwenden, da frühere Versionen von NGINX Ingress Controller nicht mit Kubernetes 1.22 kompatibel sind und die Ingress API v1 nicht unterstützen.

Eine (nicht ganz so) kurze Geschichte des NGINX Ingress Controllers

Seit seiner ersten Veröffentlichung im Jahr 2016 hat sich der NGINX Ingress Controller von einem noch jungen Tool zu einer leistungsstarken Lösung für Kubernetes-Netzwerke entwickelt. Werfen wir einen Blick auf seine Entwicklung von der Markteinführung bis heute.

2016 (v0.5.0)

NGINX-Ingenieur Michael Pleshakov veröffentlicht den ersten Eintrag in unserem GitHub-Repository (nginxinc/kubernetes-ingress), wodurch NGINX und F5 NGINX Plus als Kubernetes-Ingress-Controller (KIC) eingesetzt werden können.

Der NGINX Ingress Controller hat auf der KubeCon EU 2016 seinen ersten öffentlichen Auftritt. Sehen Sie sich die Aufzeichnung an: Tag 1: Entwicklung einer fortschrittlichen Load-Balancing-Lösung für Kubernetes mit NGINX; KubeCon EU 2016.

2017 (v1.0.0)

Das Projekt erreicht die Produktionsreife und bietet in der auf NGINX Plus basierenden Version unter anderem wichtige Unterstützung für JSON Web Tokens (JWTs).

Auf der NGINX Conf 2017 demonstriert Michael Pleshakov produktionsreife Funktionen, darunter erweitertes Load Balancing, in „NGINX Plus als Ingress-Controller für das Load Balancing von Anwendungen auf Kubernetes verwenden“.

2018

Der NGINX Ingress Controller erhält umfassende Verbesserungen in den Bereichen Transparenz, Benutzerfreundlichkeit und Flexibilität:

  • Mai (v1.2.0) – Das Projekt übernimmt die neue NGINX Plus API, und die nginx-ingress-Images werden in den offiziellen NGINX Docker Hub verschoben. Diese Version bietet erstmals Unterstützung für gRPC, passive Integritätsprüfungen, Helm-Charts und Prometheus.
  • August (v1.3.0) – Kunden von NGINX Plus können jetzt Metriken nach Prometheus exportieren und aktive Integritätsprüfungen nutzen. Darüber hinaus profitieren alle von Verbesserungen an Helm-Charts und zusammenführbaren Ingress-Ressourcen sowie von einer einfacheren Verwaltung benutzerdefinierter Vorlagen (siehe „Ankündigung von NGINX Ingress Controller für Kubernetes Version 1.3.0“).
  • November (v1.4.0) – Unterstützung für TCP/UDP wurde hinzugefügt und ermöglicht die Verwaltung von Datenverkehr auf Layer 4. Weitere Funktionen umfassen die einfachere Entwicklung benutzerdefinierter Annotationen und die Unterstützung des Lastverteilungsalgorithmus „Random with Two Choices“ (siehe „Ankündigung von NGINX Ingress Controller für Kubernetes Version 1.4.0“).

Auf der NGINX Conf 2018 betritt Michael Pleshakov die Bühne für seinen Vortrag „NGINX als Kubernetes Ingress Controller verwenden“. Darin zeigt er, wie man den NGINX Ingress Controller mit Helm bereitstellt, den HTTP- und TCP/UDP-Lastenausgleich konfiguriert, die Umgebung mit Prometheus überwacht und Fehler behebt.

2019

Wir stellen unsere Alternative zu den standardmäßigen Kubernetes-Ingress-Ressourcen vor, mit der sich erweiterte Funktionen einfacher und zuverlässiger umsetzen lassen.

In „The Next Generation of NGINX Ingress Controller“ kehrt Michael Pleshakov zur NGINX Conf 2019 zurück, um VS/VSR für Anwendungsfälle wie Blue-Green-Deployments und A/B-Tests zu demonstrieren.

2020

Neben zahlreichen Verbesserungen an NGINX-Ingress-Ressourcen liegt der Schwerpunkt in diesem Jahr auf der Integration mit Tools aus dem Ökosystem und NGINX-Produkten.

In „Produktionsanwendungen mit NGINX und OpenShift absichern“ zeigt Technical Marketing Engineer Amir Rawdat, wie sich der NGINX Ingress Operator einsetzen, die rollenbasierte Zugriffskontrolle (RBAC) für die funktionsübergreifende Bereitstellung nutzen, containerisierte Anwendungen mit NGINX App Protect absichern und Clients mithilfe von JWTs validieren lassen.

2021

Sicherheit ist ein zentrales Thema, ebenso wie weitere Integrationen in das Ökosystem.

In seiner NGINX-Sprint-2.0-Session „Microservices mit End-to-End-Verschlüsselung meistern“ zeigt Softwareentwickler Aidan Carson, wie sich der Netzwerkrand mit dem NGINX Ingress Controller absichern, eine sichere Zugriffskontrolle zwischen Diensten mit NGINX Service Mesh einrichten und der ausgehende Datenverkehr mithilfe beider Produkte durch mTLS schützen lässt.

Nächster Schritt: Testen Sie den NGINX Ingress Controller

Wenn Sie sich entschieden haben, dass ein Open-Source-Ingress-Controller die richtige Wahl für Ihre Anwendungen ist, können Sie mit dem auf NGINX Open Source basierenden NGINX Ingress Controller in unserem GitHub-Repository schnell loslegen.

Für große Produktionsumgebungen empfehlen wir Ihnen, unseren kommerziellen, auf NGINX Plus basierenden NGINX Ingress Controller auszuprobieren. Er ist im Rahmen einer kostenlosen 30-tägigen Testversion erhältlich, die NGINX App Protect umfasst.


Teilen
Schlagwörter: 2021, Tech

Über den Autor

Ähnliche Blogbeiträge

Die Zukunft von NGINX: Zurück zu unseren Open-Source-Wurzeln
NGINX | 23.08.2022

Die Zukunft von NGINX: Zurück zu unseren Open-Source-Wurzeln

Beim NGINX Sprint 2022 besinnen wir uns auf unsere Open-Source-Wurzeln. Erfahren Sie mehr über die Initiativen, die wir im kommenden Jahr verfolgen, und teilen Sie uns mit, was Sie sich wünschen.

Ein Leitfaden zur Auswahl eines Ingress-Controllers, Teil 1: Ermitteln Sie Ihre Anforderungen
NGINX | 08.09.2021

Ein Leitfaden zur Auswahl eines Ingress-Controllers, Teil 1: Ermitteln Sie Ihre Anforderungen

Ein Ingress-Controller kann eines der leistungsstärksten Tools in Ihrem Kubernetes-Stack sein. Erfahren Sie, wie Sie Ihre Ingress-Anforderungen ermitteln, um die beste Option auszuwählen.

Bereitstellung des NGINX Ingress Controllers auf Amazon EKS: So haben wir getestet
NGINX | 16.08.2021

Bereitstellung des NGINX Ingress Controllers auf Amazon EKS: So haben wir getestet

Wir haben kürzlich den Lösungsleitfaden zum NGINX Ingress Controller um Empfehlungen zur Dimensionierung für Amazon Elastic Kubernetes Service (EKS) ergänzt. In diesem Blogbeitrag erläutern wir, wie wir diese Empfehlungen erarbeitet haben, und stellen Ihnen alle Informationen zur Verfügung, die Sie benötigen, um selbst ähnliche Tests durchzuführen.

Protokollierung des Datenverkehrs zwischen NGINX und Upstream-Servern bei CDN77
NGINX | 12.12.2018

Protokollierung des Datenverkehrs zwischen NGINX und Upstream-Servern bei CDN77

Bei der Fehlersuche bei Datenverkehrsproblemen zwischen NGINX und Upstream-Servern konnte CDN77 die benötigten Daten nur aus dem Fehlerprotokoll mit aktivierter Debug-Ausgabe beziehen, was die Leistung beeinträchtigt und riesige Dateien erzeugt. Daher entwickelte das Team ein neues benutzerdefiniertes Modul, das ausschließlich die benötigten Daten protokolliert.

Ankündigung von NGINX Plus R16
NGINX | 05.09.2018

Ankündigung von NGINX Plus R16

NGINX Plus R16 ist eine einheitliche, elastische Ingress- und Egress-Schicht für Anwendungen, die die Funktionen eines Load Balancers, API-Gateways und einer WAF vereint und neue Features wie clusterfähige Ratenbegrenzung, Schlüssel-Wert-Speicher, „Random with Two Choices“, verbessertes UDP-Load-Balancing und vieles mehr bietet.

5 Gründe für den Umstieg auf softwarebasiertes Load Balancing
NGINX | 13.10.2016

5 Gründe für den Umstieg auf softwarebasiertes Load Balancing

Entdecken Sie fünf Gründe für den Wechsel zu einem softwarebasierten Load Balancer wie NGINX Plus, darunter Kosteneinsparungen, die Einführung von DevOps und eine einheitliche Lösung für alle Umgebungen.