Linux-Container entwickeln und zuverlässig betreiben
Agilität und Geschwindigkeit haben in der IT Priorität. Wie sich Applikationen aller Art sollen möglichst schnell zur Verfügung stellen und an neue Anforderungen anpassen lassen, weiß silicon.de-Gastautor Matthias Pfützner.
Die Digitale Transformation beschleunigt die Welt zusehends. Unternehmen sind daher vorrangig an solchen Technologien interessiert, die sie dabei unterstützen, schnell und zuverlässig innovative Produkte und Services auf den Markt zu bringen. Dazu ist es in vielen Fällen erforderlich, nicht nur die IT-Infrastruktur, sondern auch die Art und Weise anzupassen, wie Applikationen entwickelt und betrieben werden. Flexibilität, Schnelligkeit und Integrationsfähigkeit spielen dabei eine entscheidende Rolle.
In Anwendungsszenarien, in denen diese Eigenschaften gefragt sind, haben sich Linux-Container als eine wichtige Methode für die Softwarepaketierung und Bereitstellung von Anwendungen herauskristallisiert. Linux-Container bieten eine komfortable und effiziente Methode, um neue Applikationen zu entwickeln und auszuliefern. Sie verkapseln und umhüllen in einem nach außen hin abgeschlossenen Paket alle benötigten Komponenten und Konfigurationsangaben.
Technisch betrachtet läuft ein Linux-Container isoliert in einer einzelnen Instanz des Host-Betriebssystems – entweder direkt auf einem physikalischen Server oder in einer virtuellen Maschine.
Darin zeigt sich auch der Unterschied zur Hypervisor-Virtualisierung, bei der die virtuellen Maschinen mit einem kompletten Betriebssystem verzahnt sind und einen entsprechenden Overhead verursachen. Zudem teilen sich auf einem System mehrere Container den Betriebssystem-Kernel, denn die Abhängigkeiten der Anwendungen selbst sind im Applikations-Container enthalten.
Linux-Container im Docker-Format haben sich etabliert
Schon nach kurzer Zeit hat sich das Docker-Format als De-facto-Standard bei Linux-Containern im Markt weitgehend durchgesetzt; dessen Paketierungsformat ist etabliert. Eine wichtige Rolle dabei spielt auch die Unterstützung durch die Open Container Initiative, die an der Standardisierung von Container-Formaten arbeitet.
Die wichtigsten Ziele dabei sind Interoperabilität, Kompatibilität, Offenheit und Portabilität. Die Sicherheit der Container, genauer die Sicherheit der Container-Images und der Container-Inhalte, bildet einen der Schwerpunkte, damit Unternehmen Mission-Critical-Applikationen zuverlässig in Applikations-Containern entwickeln und betreiben können.
Um eine hohe Container-Security sicherzustellen, kommt zunächst einmal die Multi-Tenant-Isolierung zum Einsatz. Sie bewirkt, dass Container keinen Zugriff auf die Ressourcen des zugrundeliegenden Hosts und anderer Container erhalten. Die Integration von SELinux in Docker ermöglicht den Aufbau eines mehrstufigen Sicherheitsmodells, um Container zu isolieren. Darüber hinaus spielt die Zertifizierung eine wichtige Rolle, um die Sicherheit von Container-Images zu verbessern.
So kooperieren beispielsweise Red Hat und Black Duck bei der Bereitstellung sicherer und vertrauenswürdiger Linux-Container. Im Kern geht es hier darum, ein zuverlässiges und wirksames Modell zu etablieren, mit dem gewährleistet ist, dass es in den Containern keine Sicherheitslücken gibt und sie nur zertifizierten Programmcode enthalten.
Diese Überprüfung ist ein wichtiger Bausteine bei der Entwicklung und Implementierung der Container. Die Grundlage dafür bildet eine Integration des Black Duck Hub, der den Programmcode von Containern nach Sicherheitslücken untersucht, und zwar in die Container-Plattform OpenShift von Red Hat. Berichte und Daten zu möglichen Sicherheitslücken sowie zu validierten, sicheren und vertrauenswürdigen Container Images werden via OpenShift Registry bereitgestelllt.
Es gibt auf dem Markt eine Vielzahl von Möglichkeiten, um Linux-Containern im Docker-Format zu erstellen, beispielsweise OpenShift, das sowohl für die Private- als auch die Public-Cloud verfügbar ist. Entwickler haben mit dieser Lösung die Möglichkeit, Erfahrungen bei der Erstellung von Containern zu sammeln.
Sobald es um komplexere Anwendungsszenarien mit einer Vielzahl von Containern und deren Zusammenspiel geht, kommt sehr schnell Kubernetes ins Spiel. Das Tool befasst sich mit der Container-Orchestrierung und dem Container-Management, um eine Vielzahl von Containern mit jeweils unterschiedlichen Applikations-Services zu komplexen, funktionsreichen Applikationsszenarien verknüpfen zu können.
Ausgangspunkt von Kubernetes war ein Google-internes Projekt, um Cloud-Services wie Search und Gmail zu überwachen und zu steuern; wichtig dabei zu wissen ist, dass die gesamte für die Öffentlichkeit zur Verfügung stehende Google-IT-Infrastruktur auf Containern basiert.
Während es bei Google beim Einsatz von Kubernetes in der Top-Down-Perspektive um die Verwaltung eines komplexen Clusters von Linux-Containern als einzelnes System geht, steht bei der Entwicklung neuer Applikationen in Unternehmen zunächst die Bottom-Up-Perspektive im Vordergrund, nämlich eine Vielzahl von Container zu einem Anwendungsszenarium zu verknüpfen und dieses mit Kubernetes zu verwalten.
Applikationsumgebung für Container-as-a-Service
Um Container von der Entwicklung in den produktiven Betrieb zu übernehmen, kommt in vielen Fällen die Open-Source-Cloud-Plattform OpenStack zum Einsatz. Sie bietet die benötigte Rechenleistung sowie die Speicher- und Netzwerkkapazitäten, mit denen Unternehmen oder Service Provider eine Cloud aufbauen können.
Ein wesentliches Kennzeichen von OpenStack ist der modulare Aufbau, das heißt, dass sich innerhalb der großen Funktionsblöcke Compute, Storage und Networking weitere Module einsetzen und mit zusätzlichen Technologien anreichern lassen, beispielsweise mit Applikations-Containern.
Das Verbindungsstück zwischen Containern und OpenStack steuert Kubernetes bei. Mit den Networking-Ressourcen von Kubernetes können IT-Administratoren die auf verschiedenen Hosts laufenden Container miteinander verbinden. Zudem ist es möglich, die OpenStack-Komponente Neutron mit Kubernetes zu verknüpfen.
Durch den Einsatz von Kubernetes Storage Volumes sind Entwickler in der Lage, Stateful-Services gemeinsam mit Applikations-Containern einzusetzen. Auf Basis von Kubernetes-Plugins wie NFS, iSCSI, Gluster oder Ceph ist es möglich, Container mit persistenten Storage-Clustern zu verbinden. Zusammengenommen entsteht so das Fundament für vielfältige Container-as-a-Service-Anwendungsszenarien.
Container bieten damit eine effiziente Möglichkeit, um Applikationen in einer Private oder Hybrid Cloud bereitzustellen. Die Vorteile für Entwickler sind die Portabilität und schnellere Implementierungszeiten in einem breiten Spektrum von Anwendungsszenarien. Mit OpenStack steht eine leistungsfähige und skalierbare Plattform für den zuverlässigen Betrieb von Container-Applikationen bereit.
Matthias Pfützner ist Senior Solution Architect, Account & Cloud – DA(CH) bei Red Hat.
Hyperkonvergente Systeme
Weniger Komplexität, einheitlicher Einkauf, vorintegrierte und aufeinander abgestimmte Komponenten sowie weniger Sorgen und Kosten beim Betrieb durch Abstraktion und Automatisierung, das versprechen die Anbieter "hyperkonvergenter Systeme". Im silicon.de-Special finden sie aktuelle Nachrichten und umfassende Hintergrundartikel zu dem Marktsegment.