Managed Kubernetes oder Managed Development

Kubernetes ist Standard für Container-Orchestrierung und -Automatisierung. Viele Unternehmen setzen auf Managed Kubernetes. Dabei gibt es einiges zu beachten.

In Pocket speichern vorlesen Druckansicht 8 Kommentare lesen
Managed Kubernetes oder Managed DevelopmentKubernetes ist der Standard für Container-Orchestrierung und -Automatisierung. Viele Unternehmen setzen auf Managed Kubernetes. Dabei gibt es jedoch einiges zu beachten.

(Bild: iX)

Lesezeit: 12 Min.
Von
  • Markus Eisele
  • Jonas Janz
Inhaltsverzeichnis
Markus Eisele

(Bild: 

Markus Eisele

)

Markus Eisele arbeitet für Red Hat und schreibt gerne und viel über alle Themen rund um Java, Container und Orchestrierung.

Jonas Janz

(Bild: 

Jonas Janz

)

Jonas Janz arbeitet nach langjähriger Erfahrung als Softwarearchitekt als Spezialist für Applikationsentwicklung auf OpenShift für Red Hat.

Es ist unumstritten, dass Kubernetes der Industriestandard für das Orchestrieren und Automatisieren von Containern ist, weshalb immer mehr Unternehmen darauf zurückgreifen. Besonders im Fokus steht die Nutzung von Managed Kubernetes, einem Out-of-the-box-Service. Allerdings sollten Verantwortliche bei der Auswahl, Einführung und dem Einsatz einer Plattform nicht nur technische Aspekte in Betracht ziehen, sondern auch weitere wichtige Faktoren. So gewährleisten sie einen erfolgreichen und produktiven Betrieb, der als Ziel die Fokussierung auf das Kerngeschäft und nicht auf Kubernetes verfolgt. Für ein erfolgreiches Entwicklungsprojekt ist es deshalb essenziell, verschiedene Plattformen miteinander zu vergleichen, um für das eigene Unternehmen die optimale Variante zu finden (siehe Abbildung 1).

Unterschiede zwischen einer Managed Development Platform und einem reinen Managed Kubernetes (Abb. 1).

(Bild: Red Hat)

Einen Kubernetes-Stack eigenständig aufzubauen, ist dabei selten die beste Option. Developer sollten sich auf die Softwareentwicklung konzentrieren, statt viel Zeit und Ressourcen auf die Konfiguration und Administration der Umgebung zu verwenden. Eine Managed-Kubernetes-Plattform kann hier helfen, indem sie nicht nur die Ausführung und Orchestrierung von Services, sondern auch Funktionen wie Compliance, Networking, Disaster Recovery und Change Management abdeckt. Darüber hinaus bietet sie Erweiterungen für Entwicklungsumgebungen und optimierte Kommandozeilenwerkzeuge für die Interaktion mit Kubernetes-Clustern, um einen effizienteren Softwareentwicklungsprozess zu gewährleisten.

iX-tract
  • Managed Kubernetes oder Managed Development Platform: Unternehmen sollten abwägen, welche Plattform für das eigene Unternehmen die beste Option ist.
  • Die Entscheidung geht über technologische Faktoren hinaus und berücksichtigt verschiedene Aspekte wie Kosten, Sicherheit, Governance und Multi-Cloud-Strategien.
  • Eine ganzheitliche Betrachtung ist entscheidend, um einen erfolgreichen Betrieb zu gewährleisten.

Des Weiteren bietet der Einsatz von Managed Kubernetes den Entwicklern zahlreiche Vorteile, die in der Entscheidungsfindung oft keine Berücksichtigung finden. Architekten sollten daher bei der Auswahl das Gesamtbild im Blick behalten und über die Funktionsweisen der Kubernetes-Plattform hinausgehende Aspekte mit einbeziehen.

Ein weiterer wichtiger Punkt bei der Entscheidung zwischen Managed Kubernetes und einer selbst gebauten Plattform sind etwa die Kosten, die über den reinen Aufbau der Plattform hinausgehen. Sobald sie eine entscheidende Rolle in der Wertschöpfungskette spielt, müssen Verantwortliche permanente Evaluierungen der Architektur und eingesetzten Technik durchführen, um den Betrieb zu gewährleisten. In einem Managed-Service-Angebot sind diese Evaluierungen Teil des Produktentwicklungsprozesses, die der Anbieter übernimmt. Bei der selbst gebauten Option müssen Unternehmen zudem berücksichtigen, dass die Komplexität durch die Beteiligung von Dritten wie internen Dienstleistern, Hostern oder Cloud-Anbietern weiter zunimmt. Auch vertragliche Vereinbarungen, wie All-you-can-eat- oder Committed-Spend-Verträge, können zu einer unnötigen und unübersichtlichen Technologielandschaft führen, bei der Unternehmen gezwungen sind, Cloud-Ressourcen zu nutzen, die sie eigentlich nicht benötigen.

Der Einsatz von Managed-Plattformen erfordert nicht nur eine Entscheidung für eine Technik, sondern auch einen Wandel in der Denk- und Arbeitsweise bei der Softwareentwicklung – mit allen Konsequenzen. Die Komplexität bei der Auswahl nimmt zu und es gibt keine einheitlichen Entwicklerschnittstellen mehr. Die Verwaltung von Projekten und Kosten erfordert eine neue Herangehensweise, insbesondere in Bezug auf projektbasierte Verrechnung und ROI-Betrachtungen (Return on Investment). Bei der Wahl vieler einzelner Services im Vergleich zu einer Managed Development Platform steigt die Komplexität und es ist notwendig, diese miteinander zu verbinden. Diese Bastelarbeit erfordert Investitionen und ist häufig der Grund dafür, dass der Austausch von einem einzelnen Service schwierig wird, da diese oft schlecht gewartet und undokumentiert sind. Das widerspricht der anfänglichen Best-of-Breed-Entscheidung, die zur Auswahl der einzelnen Services führte. Denn die Annahme, dass das Wechseln einzelner Services möglich ist, stellt sich nach kurzer Zeit als falsch heraus. Zudem müssen Unternehmen Governance-Herausforderungen bezüglich Technikvielfalt, Sicherheit, Datenhoheit und Einhaltung gesetzlicher und regulatorischer Vorgaben beachten. Es erfordert eine Umstellung der Projekte auf DevOps und DevSecOps im Rahmen eines neuen Architekturkonzepts, was für einige Firmen eine Herausforderung darstellt.

Die Herausforderungen, die die Managed-Kubernetes-Nutzung mit sich bringt, können beziehungsweise müssen Unternehmen mit konkreten Maßnahmen zielgenau adressieren. Sie betreffen vor allem die folgenden Bereiche:

1. GitOps: Governance und Automatisierung für eine höhere Stabilität: GitOps ist eine Entwicklungsmethode, die Git-Repositories als Quelle der Wahrheit nutzt, um Infrastructure as Code (IaC) bereitzustellen und Governance-Prozesse zu etablieren (siehe Abbildung 2). Diese Kombination ergänzt die Automatisierungsmöglichkeiten von Kubernetes und reduziert die Risiken bei der Bereitstellung von Services. Mit GitOps können Entwickler und Betriebsteams die Änderungen nachverfolgen und schnell Störungen erkennen und beheben: GitOps-Workflows verleihen der allgemeinen Sicherheit ein gewisses Maß an Stabilität. Mit einer kostenlosen Entwicklungsumgebung, die regelmäßig neu aufgesetzt wird und ihre Daten löscht, können Unternehmen ihre Entwicklerteams ermutigen, neue Technik zu testen und sich gleichzeitig auf eine IaC-Mentalität zu konzentrieren. So lässt sich die Infrastrukturautomatisierung verbessern und das Anwendungs-Lifecycle-Management optimieren.

Die Struktur eines GitOps-Projekts auf Kubernetes im Überblick (Abb. 2).

(Bild: Red Hat)

2. DevOps und DevSecOps – unverzichtbare Faktoren für eine sichere Entwicklungsplattform: Eine erfolgreiche Nutzung einer dynamischen Entwicklungsplattform erfordert das Schaffen einer starken DevOps-Kultur und -Praxis, die automatisiert ist. Es gibt viele Vorteile, wie die schnelle Entwicklung und schnelle Einführung von Updates. Aber insbesondere in Hinblick auf die zunehmende Anzahl von Sicherheitsvorfällen in der Softwareindustrie zeigt sich deutlich, dass eine DevSecOps-Mentalität unerlässlich ist.

Die frühe Zusammenarbeit zwischen Entwicklungs- und Sicherheitsteams im Entwicklungslebenszyklus ermöglicht das frühzeitige Identifizieren und Beheben potenzieller Schwachstellen – bekannt als Shift Left. Es handelt sich dabei um eine Methode, die die Prüfung von Sicherheitsaspekten von Softwareartefakten so früh wie möglich im Entwicklungsprozess etabliert, um eine effektive Integration in die Softwareentwicklung zu gewährleisten.

Eine gute erste Maßnahme, um die Sicherheit von Softwareartefakten zu verbessern, besteht darin, branchenübliche Security-Checks in die CI/CD-Pipelines der Anwendungen einzubeziehen. Zusätzlich ist das SLSA-Konzept (Supply Chain Level of Software Artifacts) ein wichtiger Bereich, in dem die Open-Source-Community aktive Innovationen vorantreibt und Unternehmen dabei helfen kann, die Sicherheitsfähigkeiten zu bewerten und zu verbessern.

3. Weniger ist mehr! Warum umfassende Entwicklungsplattformen Einzeldiensten überlegen sind: Einzeldienste auf dem Cloud-Service-Markt können verlockend sein – doch es ist ratsam, sich auf eine ganzheitliche Entwicklungsplattform zu konzentrieren, anstatt eine Best-of-Breed-Architektur zu wählen. Der ursprüngliche Gedanke, dass sich diese Services nahtlos in das Unternehmen integrieren lassen und man sie bei Bedarf einfach durch einen anderen Service eines weiteren Anbieters ersetzen kann, wird schnell widerlegt, wenn die Integration maßgeschneiderte Bastelarbeit erfordert.

Dieser Fall verlangt nicht nur anfängliche Investitionen in Entwicklungsressourcen und in die laufende Wartung, sondern erhöht auch die Kosten für den Austausch eines Dienstes, wenn die Softwareartefakte im Laufe der Zeit schlecht dokumentiert und unzureichend gepflegt sind. Weniger ist mehr, und es lohnt sich immer, genau zu definieren, welcher Ansatz für die Softwarearchitektur des gegebenen Anwendungsfalls am geeignetsten ist. Trotz der Beliebtheit von Microservices ist es auch wichtig zu evaluieren, ob virtuelle Maschinen ausreichen.

4. Golden Paths und Developer Portals – eine Option für das Streamlining der Softwareentwicklung auf Managed Platforms: Ein sogenannter Golden Path ermöglicht es Entwicklerinnen und Entwicklern, Technologien und Infrastrukturen einfach auszuwählen und zu nutzen, ohne dabei deren zugrunde liegende Technik und Funktionen erlernen zu müssen. Bereitgestellte Tutorials, Templates und Best Practices erleichtern den Einstieg in neue Softwareprojekte. Indem eine Plattform vorgefertigte Bausteine bietet, beschleunigt sie den Entwicklungsprozess, beispielsweise bei der Integration neuer Teammitglieder oder Applikationen. Um diese Service-Level zur Verfügung zu stellen, bieten sich Developer-Portals oder Developer-Kataloge an. Einige Managed Development Platforms enthalten diese Portale bereits, jedoch setzen Unternehmen sie oft nicht vollständig für eigene Services ein. Es ist wichtig, dass zentralisierte Governance- und Architekturabteilungen diese Ressourcen bereitstellen: So stellen sie sicher, dass Entwickler von diesen Services profitieren können und sich gleichzeitig unternehmensweite Architektur- und Technologieentscheidungen praktisch umsetzen lassen.

5. Skalierung der Operations für Managed Kubernetes und Erschließen des Potenzials von Entwicklungsplattformen: Im Bereich Managed Kubernetes ist es wichtig, nicht nur die Entwicklung, sondern auch den Betrieb von Applikationen im Auge zu behalten. Obwohl die Nutzung der Cloud das Infrastrukturmanagement vereinfacht, bleibt die Verantwortung für den Anwendungsbetrieb beim Unternehmen. Skalierbare Prozesse und Wissen sind dabei unerlässlich für den erfolgreichen Einsatz. Besonders bei Managed Development Platforms können alte und unangepasste Prozesse die Softwareentwicklung stark bremsen. Eine gute Möglichkeit, die IT-Operationen zu skalieren, ist die Integration einer Kubernetes-Plattform in das Konfigurationsmanagement der Firma. Ein erster Schritt ist, die Anwendungseigentümer dynamisch über häufige Neustarts ihrer Programme zu benachrichtigen.

6. Wahl der richtigen Plattform für Multi-Cloud-Umgebungen: Um in einer schnelllebigen Umgebung handlungsfähig zu bleiben, ist es für Unternehmen unerlässlich, auf schnelle Änderungen der Serviceangebote und Preismodelle in der Cloud-Plattform zu reagieren. Für den Aufbau und Betrieb von Geschäftsanwendungen braucht es mehrere Cloud-Umgebungen, einschließlich privater, öffentlicher und Edge-Cloud-Umgebungen. Managed-Development- und Managed-Kubernetes-Plattformen sind in dieser Hinsicht allein häufig nicht ausreichend.

Doch während Managed-Kubernetes-Plattformen des Öfteren von Unternehmen benötigte Funktionen vermissen lassen – und externe Services von Anbietern brauchen –, bieten Managed Development Platforms ein ganzheitliches Paket von Services und Integrationen an. So lassen sie sich unabhängig von ihrer Umgebung betreiben. Durch viele Integrationen mit vorhandenen Diensten sind Managed-Development-Plattformen unabhängig von spezifischen Anbietern für öffentliche, private oder Edge-Cloud-Umgebungen. Bei der Entscheidung für eine Plattform sollten Unternehmen stets daran denken, dass es für die spätere Migration wichtig ist, über spezifische Dienste der Umgebung informiert zu sein. Verfolgt man das Ziel, seine Anwendungen unabhängig von der zugrunde liegenden Infrastruktur betreiben zu können, sollten Kernanwendungen in der Lage sein, nahtlos in Hybrid-Cloud-Umgebungen betrieben zu werden, um Störungen zu vermeiden. Unternehmen sollten auf Abstraktionen, offene Standards und APIs setzen, um Unabhängigkeit und Interoperabilität gewährleisten zu können.

Wenn Unternehmen auf der Suche nach Managed Kubernetes oder Managed Development Platforms sind, sollten sie besonders auf eine Bereitstellung von Diensten und Umgebungen durch einen Self-Service achten. Das ermöglicht effektives Skalieren, ohne Kompromisse bei Governance oder Sicherheit einzugehen.

Ein wichtiger Faktor für einen schnelleren Entwicklungszyklus ist der Einsatz von Portals oder Web-Interfaces. Um Infrastructure as Code (IaC) etablieren zu können, müssen Manifeste in einer Sprache geschrieben werden, die sowohl für Menschen als auch für Maschinen gut lesbar ist. Hierbei hat sich YAML (Yet Another Markup Language) als Industriestandard etabliert. Für Code in Produktion sollte es stets eine Vorgabe sein, dass sämtliche Anforderungen an die Infrastruktur in einer solchen Sprache formuliert und über eine Versionskontrolle verteilt werden (GitOps). Allerdings kann die händische Erstellung von YAML-Zeilen mühsam sein, daher sollten Entwicklerinnen und Entwickler hierfür Command-Line-Tools oder spezialisierte Entwicklungsumgebungen (IDEs) frei einsetzen dürfen.

Schließlich ist Security ein entscheidender Aspekt von Managed-Development-Plattformen, wobei sichere Standardkonfigurationen Zeit und Handarbeit einsparen können. Eine vollständig gemanagte Development-Plattform ermöglicht Unternehmen, die Sicherheitsfunktionen im Kern der Plattform zu nutzen und durch die Integration von bestehenden Sicherheitstools zu erweitern – das macht Entwicklung effektiver und sicherer.

Die Wahl einer Managed-Plattform – sei es nur Kubernetes in Verbindung mit anderen Services oder eine vollständige Entwicklungsplattform – erfordert weit mehr als nur einen Technologievergleich. Die Komplexität dieser Systeme in Verbindung mit den Prozessen und der sie einsetzenden Organisation erfordert eine Entscheidung, die mehrere Unternehmensbereiche treffen müssen, um den Erfolg der Plattform sicherzustellen. Auch wenn eine Managed Development Platform Dienste abstrahiert, die sonst eine individuelle Integration und Operation erfordern würden, sind dennoch eine Organisation und Prozesse erforderlich, um die angebotenen Vorteile der Plattform vollständig nutzen zu können.

Die Architektur von Software sollte nicht nur die Laufzeitumgebung selbst, sondern immer alle funktionalen und nicht-funktionalen Anforderungen des Projekts berücksichtigen, um letztlich eine rundum optimale Lösung zu erreichen.

(map)