5 minutes reading time (936 words)

Container - Wie sieht eine moderne Enterprise Container Umgebung aus?

container

Als der Trend zur Virtualisierung aufkam, waren viele Firmen zunächst skeptisch. In Modernisierungsprojekten mussten Betriebsteams und Stakeholder noch überzeugt werden, dass Applikationen auf virtuellen Servern bereitgestellt werden können und keine dedizierten Server mehr erforderlich sind. Mit der Zeit und der Betriebserfahrung drehte sich aber die Ausgangslage. Heute muss niemand mehr von der Virtualisierung überzeugt werden. Im Gegenteil, heute müssen konkrete Anforderungen einen dedizierten Server rechtfertigen.

Derzeit erleben wir eine ähnliche Situation beim Einsatz von Containertechnologien. Die Vorteile liegen auf der Hand, z.B.:

  • Gegenüber klassischen VMs sind Container sehr schlank und sparen dadurch Ressourcen auf den Virtualisierungshosts ein
  • Container können in mehreren Instanzen laufen und sehr schnell gestartet werden
  • Containerimages sind problemlos zwischen Umgebungen oder Systemen zu migrieren ohne dass Kompatibilitätsprobleme auftreten

Dennoch sind Container gerade bei Großkunden noch die Ausnahme. Viele Konzerne haben in ersten PoCs Erfahrungen gesammelt, die flächendeckende Umsetzung ist aber noch lange nicht vollzogen. Warum ist das so? Aus unserer Erfahrung unterschätzen viele Firmen die Komplexität eines solchen nachhaltigen Wandels. Es reicht eben nicht aus, lediglich eine Containerplattform aufzubauen, damit sich messbare Verbesserungen einstellen. Stattdessen sollte die Art und Weise, wie eine IT Abteilung arbeitet, verändert werden. Es muss die gesamte Lieferkette betrachtet werden, vom Entwickler, der den Code erstellt bis hin zum Administrator, der für den Betrieb einer Applikation verantwortlich ist.

In dieser Blogserie werden wir aufzeigen, wie eine moderne Containerplattform aussehen kann und welche Prozesse die Voraussetzung für einen sicheren Betrieb sind.

Wie also sieht eine optimale Containerplattform aus? Zunächst geht es nicht darum, welche Produkte eingesetzt werden können. Eine Produktauswahl ist von vielen Faktoren abhängig, es würde den Artikel weg vom Kern führen, nämlich einen Überblick über die Zusammensetzung einer Containerplattform zu geben. Trotzdem haben wir exemplarisch einige Produkteabgebildet um schon einmal einen ersten Einblick zu erhalten. 

Aus unserer Sicht ist eine hybride Containerarchitektur am sinnvollsten. Bei hybriden Umgebungen kann sinnvoll auf Business oder Compliance Anforderungen reagiert werden. Eine temporäre Skalierung eines Services ist vermutlich kostengünstiger in der Cloud umzusetzen. Wobei es durchaus sein kann, dass Compliance Regeln einen On-Premises Betrieb eines Services erfordern. Die meisten Konzerne haben bereits einen primären Cloud Anbieter ausgewählt. Aus unserer Sicht ist es bei unserer Containerplattform egal, welcher Anbieter gewählt wird. Alle großen Cloud Provider, wie Azure, AWS oder Google, unterstützen Containertechnologien.

Nun möchten wir auf die einzelnen Komponenten der Architektur eingehen:

Repository
Der entwickelte Code wird in ein On-Premises oder Cloud Repository eingecheckt, getestet und in verschiedenen Builds verwaltet. Gängige Repositories sind z.B. GitHub, Bitbucket oder GitLab. Im Repository liegt noch kein Containerimage, sondern der Code selbst, welcher nach gängigen SW Entwicklungsmethoden verwaltet wird.

Build Pipeline
Um aus dem eingecheckten Code einen Container zu erstellen, muss dieser in ein Image transformiert werden. Diesen Task übernimmt die Build Pipeline. Anhand von Inputfiles wird der Container in manuell oder durch Automatismen erstellt und getestet. Gespeichert wird ein fertiger Container in einer Registry. Für eine automatisierte Build Pipeline kommen unter anderem Produkte wie Jenkins, Codeship oder Bamboo in Frage.
Die Build Pipeline ist sicherlich neben der Orchestrierung die wichtigste Komponente und die größte Veränderung in der Containerwelt. Die Entwicklung einer Build Pipeline erfordert Zeit, die sich aber in kurzer Zeit durch kürzere Test und Deployment Zeiten auszahlt. Der hohe Automatisierungsgrad steigert auch gleichzeitig die Qualität.

Registry
Die Registry beinhaltet Container Images und stellt diese der Container Engine zur Verfügung. Registries können öffentlich zugänglich oder privat für einen bestimmten Nutzerkreis zugänglich sein. Genauso kann man sich auch hier für einen Cloud Anbieter entscheiden oder eine Registry lokal betreiben. Wie bei den anderen Komponenten hat man die Qual der Wahl und kann z.B. Docker Hub, Nexus oder AWS ECR als Registry verwenden.

Container Engine
Die Container Engine ist das eigentliche Herzstück der Containerplattform. Sie ist Schnittstelle und setzt Befehle um und hier laufen die Container letztendlich. Der marktübliche Standard ist sicherlich die Docker Engine.

Orchestrierung
Um Container ausfallsicher und vernünftig zu betreiben, gibt es den Orchestrieungslayer, der bestimmt welche Container wo mit wie vielen Instanzen etc. laufen. Auch hier gibt es zahlreiche Produkte wie Kubernetes, OpenShift oder Docker Swarm. Es gibt Master und Worker Nodes die z.B. bei Docker Swarm auch im Mix zwischen Windows und Linux betrieben werden können. Alternativ sind auch hier Cloud Dienste wie z.B. Azure AKS verfügbar.

Systems Management
In einer Enterprise Umgebung unbedingt benötigt werden entsprechende Managementsysteme für die aufgezählten Komponenten. Die meisten Hosts werden linuxbasiert sein, auch wenn es grundsätzlich möglich ist, z.B. einen Docker Swarm mit einem Windows Host zu betreiben. Es werden also Systeme wie z.B. Satellite zum patchen der Umgebung benötigt. Genauso wichtig ist aber z.B. Role Based Access Control (RBAC) – also wer darf was. Hier werden die meisten Konzerne vermutlich eine Active Directory Umgebung einsetzen. Diese muss auch entsprechend mit der Containerplattform verbunden werden. Dinge wie Monitoring, Logging oder Backup/Restore dürfen natürlich auch nicht vergessen werden.

Fazit
Wer eine Containerplattform erfolgreich einführen und betreiben möchte, hat die Qual der Wahl. Neben der Fragestellung, welche Produkte eingesetzt werden oder wie Arbeitsweisen verändert werden können, muss meistens auch Knowhow aufgebaut werden. Mit dem Einsatz von Containertechnologien ändern sich bisherige Arbeitsabläufe rasant. Der klassische Infrastruktur-Admin muss sich mit Komponenten aus der SW Entwicklung auseinandersetzen. Es wird alles Script basiert umgesetzt und vollautomatisiert. Dies ist nicht nur für Windows Administratoren eine Umstellung. Der Einsatz von Containern ist prädestiniert für ein DevOps Team, das die Plattform aufbaut, betreibt und weiterentwickelt. Derzeit gibt es zahlreiche Hersteller die immer wieder neue Funktionalitäten veröffentlichen. Was auf der einen Seite ein großer Vorteil ist, erfordert auf der anderen Seite auch ein Umdenken in der Organisation der IT Teams.

In unseren nächsten Artikeln beschreiben wir, wie man eine Hybride Containerplattform (On-Premises und Cloud) aufbaut. 

Hybrid Container deployment mit Jenkins
ESAE Serie Teil 2 – Kundensituation und Architektu...

Related Posts

 

Comments

No comments made yet. Be the first to submit a comment
Guest
Dienstag, 15. Oktober 2019