App-Entwicklung Kubernetes im produktiven Einsatz – effizient und sicher
Anbieter zum Thema
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.

Unternehmen müssen heute immer schneller auf veränderte Anforderungen reagieren und neue Lösungen bereitstellen. 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 Cyberkriminelle 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 Lösung
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.
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.
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.
(ID:47472795)