BLOG | NGINX

Reduzieren Sie die Komplexität mit produktionsreifem Kubernetes

NGINX-Teil-von-F5-horiz-schwarz-Typ-RGB
Jenn Gile Miniaturbild
Jenn Gile
Veröffentlicht am 05. Februar 2021

Redakteur – Dieser Beitrag ist Teil einer 10-teiligen Serie:

  1. Reduzieren Sie die Komplexität mit produktionsreifem Kubernetes (dieser Beitrag)
  2. So verbessern Sie die Ausfallsicherheit in Kubernetes mit erweitertem Verkehrsmanagement
  3. So verbessern Sie die Sichtbarkeit in Kubernetes
  4. Sechs Möglichkeiten zur Sicherung von Kubernetes mit Traffic-Management-Tools
  5. Leitfaden zur Auswahl eines Ingress-Controllers, Teil 1: Identifizieren Sie Ihre Anforderungen
  6. Leitfaden zur Auswahl eines Ingress-Controllers, Teil 2: Risiken und Zukunftssicherheit
  7. Leitfaden zur Auswahl eines Ingress-Controllers, Teil 3: Open Source vs. Standard vs. Kommerziell
  8. Leitfaden zur Auswahl eines Ingress-Controllers, Teil 4: Optionen für den NGINX Ingress Controller
  9. So wählen Sie ein Service Mesh aus
  10. Leistungstests für NGINX-Ingress-Controller in einer dynamischen Kubernetes-Cloud-Umgebung

Sie können den kompletten Blogsatz auch als kostenloses E-Book herunterladen: Kubernetes vom Test zur Produktion bringen .

2020 war ein Jahr, das nur wenige von uns jemals vergessen werden. Durch die abrupte Schließung von Schulen, Unternehmen und öffentlichen Diensten waren wir plötzlich von unseren Gemeinden isoliert und in Ungewissheit über unsere Sicherheit und finanzielle Stabilität gestürzt. Stellen Sie sich nun für einen Moment vor, dies wäre im Jahr 2000 oder sogar 2010 passiert. Was wäre anders? Technologie . Ohne die hochwertigen digitalen Dienste, die für uns selbstverständlich sind – Gesundheitsversorgung, Video-Streaming, Tools für die Remote-Zusammenarbeit – wäre eine Pandemie eine ganz andere Erfahrung. Was unterscheidet die Technologie des Jahres 2020 von der der vergangenen Jahrzehnte? Container und Microservices .

Microservices- Architekturen – die im Allgemeinen Container und Kubernetes nutzen – fördern Geschäftswachstum und Innovation, indem sie die Markteinführungszeit für digitale Erlebnisse verkürzen. Ob neben herkömmlichen Architekturen oder als eigenständige Lösung – diese modernen App-Technologien ermöglichen überlegene Skalierbarkeit und Flexibilität, schnellere Bereitstellungen und sogar Kosteneinsparungen.

Wir stellten fest, dass die meisten unserer Kunden bereits vor 2020 damit begonnen hatten, Microservices als Teil ihrer Strategie zur digitalen Transformation einzuführen, aber die Pandemie hat die App-Modernisierung wirklich beschleunigt. Unsere Umfrage unter NGINX-Benutzern im Jahr 2020 ergab, dass 60 % der Befragten Microservices in der Produktion verwenden (gegenüber 40 % im Jahr 2019) und dass Container mehr als doppelt so beliebt sind wie andere moderne App-Technologien.

Kubernetes ist der De-facto-Standard für die Verwaltung containerisierter Apps, wie die Umfrage der Cloud Native Computing Foundation (CNCF) aus dem Jahr 2020 zeigt. Diese ergab, dass 91 % der Befragten Kubernetes verwenden – 83 % davon in der Produktion. Bei der Einführung von Kubernetes bereiten sich viele Unternehmen auf umfangreiche Änderungen in der Architektur vor, sind dann aber überrascht, welche organisatorischen Auswirkungen der Einsatz moderner App-Technologien im großen Maßstab für sie hat. Wenn Sie Kubernetes einsetzen, sind Sie wahrscheinlich schon auf alle drei dieser geschäftskritischen Hindernisse gestoßen:

  • Kultur
    Auch wenn App-Teams moderne Ansätze wie agile Entwicklung und DevOps übernehmen, unterliegen sie normalerweise weiterhin Conways Gesetz , das besagt, dass „Organisationen Systeme entwerfen, die ihre eigene Kommunikationsstruktur widerspiegeln“. Mit anderen Worten: Verteilte Anwendungen werden von verteilten Teams entwickelt, die unabhängig arbeiten, aber Ressourcen gemeinsam nutzen. Diese Struktur ist zwar ideal, um den Teams schnelles Arbeiten zu ermöglichen, sie fördert jedoch auch die Bildung von Silos. Zu den Folgen zählen eine schlechte Kommunikation (die wiederum Konsequenzen hat), Sicherheitslücken, die Verbreitung von Tools, inkonsistente Automatisierungspraktiken und Konflikte zwischen Teams.
  • Komplexität
    Um Microservices-Technologien auf Unternehmensebene zu implementieren, müssen Organisationen eine Reihe kritischer Komponenten zusammenstellen, die Transparenz, Sicherheit und Verkehrsmanagement bieten. Normalerweise verwenden Teams Infrastrukturplattformen, Cloud-native Dienste und Open-Source-Tools, um diesen Bedarf zu decken. Zwar gibt es für jede dieser Strategien ihre Berechtigung, doch jede hat auch Nachteile, die zur Komplexität beitragen können. Und allzu oft wählen verschiedene Teams innerhalb einer einzigen Organisation unterschiedliche Strategien, um dieselben Anforderungen zu erfüllen, was zu „operativen Schulden“ führt. Darüber hinaus wählen Teams Prozesse und Tools zu einem bestimmten Zeitpunkt aus und verwenden sie weiterhin, unabhängig von den sich ändernden Anforderungen an die Bereitstellung und Ausführung moderner, auf Microservices basierender Anwendungen mit Containern.

    Die CNCF Cloud Native Interactive Landscape ist ein gutes Beispiel für die Komplexität der Infrastruktur, die zur Unterstützung von auf Microservices basierenden Anwendungen erforderlich ist. Unternehmen müssen sich mit einer großen Bandbreite unterschiedlicher Technologien vertraut machen. Dies kann zu Infrastrukturabhängigkeit, Schatten-IT, Tool-Wildwuchs und einem steilen Lernprozess für die mit der Wartung der Infrastruktur beauftragten Personen führen.

  • Sicherheit
    Die Sicherheitsanforderungen für Cloud-native und herkömmliche Apps unterscheiden sich erheblich, da Strategien wie abgeschottete Sicherheit in Kubernetes nicht umsetzbar sind. Aufgrund des großen Ökosystems und der verteilten Natur von Container-Apps ist die Angriffsfläche viel größer und durch die Abhängigkeit von externen SaaS-Anwendungen haben Mitarbeiter und Außenstehende viel mehr Möglichkeiten, Schadcode einzuschleusen oder Informationen abzugreifen. Darüber hinaus haben die in den Bereichen Kultur und Komplexität beschriebenen Konsequenzen – insbesondere die zunehmende Verbreitung von Tools – direkte Auswirkungen auf die Sicherheit und Ausfallsicherheit Ihrer modernen Apps. Die Verwendung unterschiedlicher Tools in Ihrem Ökosystem zur Lösung desselben Problems ist nicht nur ineffizient – es stellt auch eine enorme Herausforderung für SecOps-Teams dar, die lernen müssen, wie sie die einzelnen Komponenten richtig konfigurieren.

Die Lösung: Produktionstaugliches Kubernetes

Wie bei den meisten organisatorischen Problemen liegt die Antwort zur Bewältigung der Herausforderungen von Kubernetes in einer Kombination aus Technologie und Prozessen. Im weiteren Verlauf dieses Beitrags konzentrieren wir uns auf die Technologiekomponente. Halten Sie aber Ausschau nach zukünftigen Blogs zu Prozessen und anderen Themen.

Da Kubernetes eine Open-Source-Technologie ist, gibt es zahlreiche Möglichkeiten, sie zu implementieren. Während einige Organisationen es vorziehen, ihr eigenes Vanilla-Kubernetes zu entwickeln, schätzen viele die Kombination aus Flexibilität, Vorgabemäßigkeit und Support, die von Diensten wie Amazon Elastic Kubernetes Service (EKS), Google Kubernetes Engine (GKE), Microsoft Azure Kubernetes Service (AKS), Red Hat OpenShift Container Platform und Rancher bereitgestellt wird.

Kubernetes-Plattformen können die Inbetriebnahme erleichtern, ihr Schwerpunkt liegt jedoch eher auf der Breite der Dienste als auf der Tiefe. Sie erhalten zwar möglicherweise alle benötigten Dienste an einem Ort, diese bieten jedoch wahrscheinlich nicht den Funktionsumfang, den Sie für eine echte Produktionsbereitschaft im großen Maßstab brauchen. Ihr Schwerpunkt liegt nämlich nicht auf erweiterten Netzwerkfunktionen und Sicherheit. Und genau in diesem Punkt enttäuscht Kubernetes viele Kunden.

Um Kubernetes produktionsreif zu machen, müssen Sie drei weitere Komponenten in dieser Reihenfolge hinzufügen:

  1. Eine skalierbare Ingress-Egress-Ebene, um den Datenverkehr in den Cluster und aus ihm heraus zu leiten
    Dies wird mit einem Ingress-Controller erreicht, einem speziellen Lastenausgleich, der die Komplexität der Kubernetes-Netzwerke abstrahiert und eine Brücke zwischen Diensten innerhalb und außerhalb eines Kubernetes-Clusters schlägt. Diese Komponente erreicht Produktionsqualität, wenn sie Funktionen enthält, die die Ausfallsicherheit erhöhen (z. B. erweiterte Integritätsprüfungen und Prometheus-Metriken), eine schnelle Skalierbarkeit ermöglichen (dynamische Neukonfiguration) und Self-Service unterstützen (rollenbasierte Zugriffskontrolle [RBAC]).

    Topologiediagramm einer Kubernetes-Umgebung mit einem generischen Ingress-Controller, der eine skalierbare Ingress-Egress-Ebene bereitstellt

  2. Integrierte Sicherheit zum Schutz vor Bedrohungen im gesamten Cluster
    Während außerhalb des Clusters eine „grobkörnige“ Sicherheit ausreichen könnte, ist innerhalb des Clusters eine „feinkörnige“ Sicherheit erforderlich. Abhängig von der Komplexität Ihres Clusters gibt es drei Stellen, an denen Sie möglicherweise eine flexible Web Application Firewall (WAF) bereitstellen müssen: auf dem Ingress-Controller, als Proxy pro Dienst und als Proxy pro Pod. Dank dieser Flexibilität können Sie bei sensiblen Apps – wie etwa bei der Abrechnung – strengere Kontrollen anwenden und bei Apps mit geringerem Risiko lockerere Kontrollen.

    Topologiediagramm einer Kubernetes-Umgebung mit einer WAF, die neben einem generischen Ingress-Controller bereitgestellt wird

  3. Eine skalierbare Ost-West-Verkehrsebene zur Optimierung des Verkehrs innerhalb des Clusters
    Diese dritte Komponente wird benötigt, sobald Ihre Kubernetes-Anwendungen eine Komplexität und Skalierung erreicht haben, die mit einfachen Tools nicht mehr zu bewältigen ist. In dieser Phase benötigen Sie ein Service Mesh , ein Orchestrierungstool, das den Anwendungsdiensten innerhalb des Clusters ein noch feineres Verkehrsmanagement und mehr Sicherheit bietet. Ein Service Mesh ist typischerweise dafür verantwortlich, das Anwendungsrouting zwischen Containeranwendungen zu verwalten, autonome mTLS -Richtlinien (Mutual TLS) zwischen Diensten bereitzustellen und durchzusetzen und Einblick in die Anwendungsverfügbarkeit und -sicherheit zu geben.

    Topologiediagramm einer Kubernetes-Umgebung mit einer WAF, die neben einem generischen Ingress-Controller bereitgestellt wird, sowie einem Service Mesh, das eine skalierbare Ost-West-Ebene bereitstellt.

Achten Sie bei der Auswahl dieser Komponenten auf Portabilität und Sichtbarkeit. Plattformunabhängige Komponenten verringern die Komplexität und verbessern die Sicherheit. Ihre Teams müssen weniger Tools erlernen und sichern und die Arbeitslasten lassen sich basierend auf Ihren Geschäftsanforderungen einfacher verlagern. Die Bedeutung von Sichtbarkeit und Überwachung kann kaum hoch genug eingeschätzt werden. Durch die Integration mit gängigen Tools wie Grafana und Prometheus wird eine einheitliche „Single Pane of Glass“-Ansicht Ihrer Infrastruktur erstellt, die sicherstellt, dass Ihr Team Probleme erkennt, bevor sie von Ihren Kunden entdeckt werden. Darüber hinaus gibt es weitere ergänzende Technologien, die für produktionsreifes Kubernetes nicht unbedingt erforderlich sind, jedoch integraler Bestandteil der modernen App-Entwicklung sind. Wenn Unternehmen beispielsweise bereit sind, herkömmliche Apps zu modernisieren, besteht einer der ersten Schritte darin, Microservices mit einem API-Gateway zu erstellen .

Wie NGINX helfen kann

Unsere Kubernetes-Lösungen sind plattformunabhängig und umfassen die drei Komponenten, die Sie zur Aktivierung von Kubernetes in Produktionsqualität benötigen: NGINX Ingress Controller als Ingress-Egress-Ebene, NGINX App Protect als WAF und NGINX Service Mesh als Ost-West-Ebene.

Topologiediagramm der Kubernetes-Umgebung mit NGINX App Protect WAF, bereitgestellt neben einem NGINX Ingress Controller und NGINX Service Mesh

Diese Lösungen können Kubernetes zu Ihrem besten Freund machen, indem sie Sie in vier Schlüsselbereichen unterstützen:

  • Automatisierung – Bringen Sie Ihre Apps schneller und sicherer auf den Markt
    Stellen Sie Apps bereit, skalieren Sie sie, sichern Sie sie und aktualisieren Sie sie mithilfe der Verkehrsrouting- und App-Onboarding-Funktionen des NGINX Ingress Controllers in Verbindung mit der automatischen Bereitstellung von NGINX Plus-Sidecars durch NGINX Service Mesh.
  • Sicherheit – Schützen Sie Ihre Kunden und Ihr Unternehmen vor bestehenden und neuen Bedrohungen
    Reduzieren Sie potenzielle Fehlerquellen, indem Sie NGINX App Protect überall im Cluster bereitstellen und gleichzeitig NGINX Service Mesh und NGINX Ingress Controller verwenden, um die End-to-End -Verschlüsselung zwischen den Diensten zu steuern und durchzusetzen.
  • Leistung – Bieten Sie die digitalen Erlebnisse, die Ihre Kunden und Benutzer erwarten
    Bewältigen Sie mühelos Verkehrsspitzen und Sicherheitsbedrohungen ohne Leistungseinbußen mit NGINX-Lösungen, die andere WAFs, Ingress-Controller und Load Balancer übertreffen.
  • Einblick – Entwickeln Sie Ihr Geschäft weiter und bieten Sie Ihren Kunden einen besseren Service
    Erhalten Sie gezielte Einblicke in die App-Leistung und -Verfügbarkeit von NGINX Ingress Controller und NGINX Service Mesh mit detaillierten Traces, um zu verstehen, wie Anfragen in Ihren Microservices-Apps verarbeitet werden.

Produktionsvorbereitung mit NGINX

NGINX Ingress Controller ist als kostenlose 30-Tage-Testversion verfügbar und enthält NGINX App Protect zum Schutz Ihrer Container-Apps. Wir empfehlen, das stets kostenlose NGINX Service Mesh (zum Download unter f5.com verfügbar) hinzuzufügen, um Ihre Testversion optimal zu nutzen. Heute können Sie Ihre eigene Lizenz (BYOL) in die Cloud Ihrer Wahl mitbringen.


„Dieser Blogbeitrag kann auf Produkte verweisen, die nicht mehr verfügbar und/oder nicht mehr unterstützt werden. Die aktuellsten Informationen zu verfügbaren F5 NGINX-Produkten und -Lösungen finden Sie in unserer NGINX-Produktfamilie . NGINX ist jetzt Teil von F5. Alle vorherigen NGINX.com-Links werden auf ähnliche NGINX-Inhalte auf F5.com umgeleitet."