Der Microservices-Betrieb Kubernetes im produktiven Einsatz – effizient und sicher

Autor / Redakteur: Steffan Henke * / Stephan Augsten

In der App-Entwicklung setzen sich Microservices durch. Die meisten Unternehmen sind technisch zwar gut aufgestellt, unterschätzen aber häufig die organisatorischen Auswirkungen des Microservice-Betriebs im großen Maßstab – vor allem in den Bereichen Kultur, Komplexität und Sicherheit.

Firmen zum Thema

In Container-Clustern kann ein Unternehmen leicht den Überblick verlieren.
In Container-Clustern kann ein Unternehmen leicht den Überblick verlieren.
(Bild: helloitsammiel / Unsplash)

Das hat gerade das Jahr 2020 gezeigt: Eine höhere Flexibilität gewährleisten agile Entwicklungsmethoden für Anwendungen, die auf Microservices basieren. Diese wurden häufig bereits vor der Pandemie eingeführt, doch die Dynamik hat sich dadurch deutlich beschleunigt.

Laut einer Umfrage stieg unter Nginx-Anwendern der Anteil der Unternehmen, die Microservices bereits produktiv einsetzen, im vergangenen Jahr von 40 auf 60 Prozent. Dabei kommen Container mehr als doppelt so häufig zum Einsatz wie andere moderne App-Technologien.

Der De-facto-Standard für die Verwaltung containerisierter Apps ist Kubernetes, wie eine Studie der Cloud Native Computing Foundation (CNCF) aus dem Jahr 2020 zeigt. Demnach nutzen 91 Prozent der Befragten Kubernetes, 83 Prozent davon in der Produktion.

Herausforderungen in drei Bereichen

Bei der Einführung von Kubernetes bereiten sich viele Unternehmen gut auf die erheblichen architektonischen Veränderungen vor. Doch von den organisatorischen Auswirkungen des Betriebs moderner App-Technologien im großen Maßstab sind sie oft überrascht. Erhebliche Herausforderungen entstehen meist in drei Bereichen:

• Kultur

Selbst wenn App-Teams moderne Ansätze wie agile Entwicklung und DevOps nutzen, bleiben sie in der Regel dem Gesetz von Conway unterworfen. Demnach sind „Organisationen, die Systeme entwerfen, […] gezwungen, Entwürfe zu erstellen, die die Kommunikationsstrukturen dieser Organisationen abbilden.“

Mit anderen Worten: Verteilte Teams entwickeln verteilte Anwendungen. Die Teams arbeiten dabei meist unabhängig voneinander, nutzen aber Ressourcen gemeinsam. Durch diese Struktur können sie zwar schnell arbeiten, doch fördert dies auch die Bildung von Silos. Das führt oft zu schlechter Kommunikation, Sicherheitslücken, Tool-Wildwuchs, inkonsistenter Automatisierung und Auseinandersetzungen zwischen den Teams.

• Komplexität

Um Microservices in Unternehmensqualität zu implementieren, sind eine Reihe wichtiger Komponenten nötig, die für Transparenz, Sicherheit und Traffic-Management sorgen. In der Regel verwenden Teams dazu Infrastruktur-Plattformen, native Cloud-Dienste und Open-Source-Tools. Diese erfüllen zwar viele Anforderungen, können aber auch jeweils zu einer höheren Komplexität beitragen.

Erschwerend kommt hinzu, dass verschiedene Teams innerhalb eines Unternehmens oft unterschiedliche Strategien für dieselben Aufgaben wählen . Oder sie verwenden weiterhin veraltete Prozesse und Tools, trotz der veränderten Anforderungen an die Bereitstellung und den Betrieb moderner Microservices-basierter Anwendungen.

Die CNCF Cloud Native Interactive Landscape zeigt ein gutes Beispiel für die Komplexität der Infrastruktur, die zur Unterstützung von Microservices nötig ist. Diese Vielzahl unterschiedlicher Technologien hat häufig zur Folge, dass man von der gewählten Infrastruktur abhängig ist, Schatten-IT entsteht, Tools unkontrolliert zum Einsatz kommen und die mit der Wartung der Infrastruktur betrauten Personen überfordert werden.

• Sicherheit

Die Sicherheitsanforderungen bei Cloud-nativen und herkömmlichen Anwendungen unterscheiden sich erheblich. Daher sind bisherige Strategien wie Perimeterschutz bei Kubernetes nicht praktikabel. Das große Gesamtsystem und die verteilte Natur von containerisierten Apps erweitern die mögliche Angriffsfläche erheblich. Zudem führt die Abhängigkeit von externen SaaS-Anwendungen dazu, dass Cyber-Kriminelle viel mehr Möglichkeiten erhalten, Malware einzuschleusen oder Informationen zu stehlen.

Die bereits in den Bereichen Kultur und Komplexität dargestellten Herausforderungen – insbesondere die unkontrollierte Verbreitung von Tools – wirken sich auch direkt auf die Sicherheit und Widerstandsfähigkeit moderner Apps aus. Die Verwendung verschiedener Tools zur Lösung desselben Problems ist nicht nur ineffizient, sondern stellt auch ein großes Problem für SecOps-Teams dar. Denn sie müssen jede Komponente richtig konfigurieren und absichern – oder die Nutzung bestimmter Tools verhindern.

Effiziente und sichere Anwendungen

Wie bei den meisten organisatorischen Herausforderungen besteht die Lösung in einer Kombination aus Technologien und Prozessen. Da Kubernetes eine Open-Source-Technologie ist, gibt es zahlreiche Möglichkeiten zur Implementierung. Während einige Unternehmen individuelle Lösungen entwickeln, schätzen andere die Flexibilität, Vorhersagbarkeit und den Support von Diensten.

Dazu gehören etwa „Amazon Elastic Kubernetes Service“ (EKS), „Google Kubernetes Engine“ (GKE), „Microsoft Azure Kubernetes Service“ (AKS), „Red Hat Openshift Container Platform“ oder „Rancher“, mittlerweile unter der Federführung von Suse. Solche Kubernetes-Plattformen erleichtern meist den Einstieg, da sie viele benötigte Dienste aus einer Hand bieten. Doch in der Regel enthalten sie nicht die Funktionen, die für eine produktive Nutzung im großen Maßstab nötig sind.

eBook

Das besondere Leistungsprofil verteilter Arbeitslasten

Container im Rechenzentrum

Container im Rechenzentrum
eBook: Container im Rechenzentrum
(Bild: DataCenter-Insider)

Containerisierte Workloads sind im Rechenzentrum längst kein Ausnahme. Eine strengere Datenschutzgesetzgebung, beginnend mit der DSGVO, hat viele Unternehmen gezwungen, althergebrachte Ansätze zu hinterfragen und die Gesamtheit ihrer IT-Infrastruktur nach Möglichkeit von Grund auf neu zu konzipieren. Das Resultat ist ein wachsender Trend hin zu selbstheilenden, ausfallresistenten Anwendungsarchitekturen, welche redundant ausgelegt sich auf mehrere Datacenter stützen.
Hier ein Auszug aus dem Inhaltsverzeichnis des eBook:

Insbesondere fehlen häufig aktuelle Netzwerk- und Sicherheitsfunktionen, um die notwendige Stabilität und Verfügbarkeit zu gewährleisten. Für den produktiven Einsatz von Kubernetes sollten Unternehmen daher drei Zusatzkomponenten einfügen:

1. Eine skalierbare Ingress-Egress-Ebene zur Leitung des Datenverkehrs in und aus dem Cluster

Ein Ingress-Controller ist ein spezieller Load Balancer, der die Komplexität des Kubernetes-Netzwerks abstrahiert. Er schlägt eine Brücke zwischen den Diensten innerhalb und außerhalb eines Kubernetes-Clusters. Diese Komponente lässt sich produktiv einsetzen, wenn sie Funktionen für hohe Ausfallsicherheit, schnelle Skalierbarkeit und Self-Service enthält. Dazu dienen zum Beispiel erweiterte Zustandsprüfungen und Prometheus-Metriken, eine dynamische Rekonfiguration und rollenbasierte Zugriffskontrolle.

2. Integrierte Sicherheit zum Schutz vor Bedrohungen im gesamten Cluster

Während außerhalb des Clusters allgemeine Sicherheitsvorkehrungen manchmal ausreichen, sind detaillierte Maßnahmen innerhalb des Clusters erforderlich. Je nach Komplexität gibt es drei Stellen, an denen eine flexible Web Application Firewall (WAF) notwendig ist: auf dem Ingress-Controller, als Proxy pro Dienst und als Proxy pro Pod. Eine hohe Flexibilität ist hier nötig, um strenge Kontrollen für sensible Anwendungen wie die Rechnungsstellung und leichtere für Anwendungen mit geringerem Risiko anzuwenden.

3. Skalierbare Ost-West-Verkehrsschicht zur Optimierung des Datenverkehrs innerhalb des Clusters

Diese Komponente wird benötigt, sobald Kubernetes-Anwendungen über das Maß an Komplexität und Skalierung hinausgehen, die Basis-Tools bewältigen können. Dann brauchen Unternehmen ein Service-Mesh. Dabei handelt es sich um ein Orchestrierungs-Tool, das eine noch feiner abgestufte Sicherheit und Verwaltung des Datenverkehrs für Anwendungsdienste innerhalb des Clusters bietet. Ein Service-Mesh ist in der Regel für das Routing-Management zwischen containerisierten Anwendungen verantwortlich. Es sorgt für die Bereitstellung und Durchsetzung autonomer Service-zu-Service-Richtlinien für gegenseitiges TLS (mTLS) sowie für Einblicke in die Verfügbarkeit und Sicherheit der Apps.

Darauf ist zu achten

Bei der Auswahl dieser Komponenten sollten Unternehmen auf Portabilität und Transparenz achten. Plattformunabhängige Komponenten reduzieren die Komplexität und verbessern die Sicherheit, da Teams weniger Tools nutzen und absichern müssen. Zudem lassen sich Workloads je nach Geschäftsanforderungen einfacher verlagern.

Steffan Henke
Steffan Henke
(Bild: F5)

Die Bedeutung von Sichtbarkeit und Überwachung kann gar nicht hoch genug eingeschätzt werden. Integrationen mit Tools wie „Grafana“ und „Prometheus“ schaffen eine einheitliche Sicht auf die Infrastruktur. Dies gewährleistet, dass Teams Probleme erkennen, bevor sich diese auf Kunden auswirken. So lassen sich Kubernetes-basierte Anwendungen auf sichere und effiziente Weise produktiv einsetzen.

* Steffan Henke ist Technical Solutions Engineer, NGINX, bei F5.

Artikelfiles und Artikellinks

(ID:47496048)