Rancher als Aufpasser für die Herde wilder Container

Immer mehr Services wollen installiert, verwaltet und aktuell gehalten werden. Das gestaltet sich manchmal wie das im Zaum halten einer Herde mehr oder minder wilder Kühe. Da ist es nur konsequent, eine Lösung zum Management entsprechender Umgebungen Rancher zu nennen.

In diesem Artikel wollen wir kurz das Projekt Rancher zur Orchestrierung moderner Container-Umgebungen beleuchten. docker container

Immer häufiger wird in modernen IT-Infrastrukturen auf die Separierung von Services gesetzt. Einzelne oder auch komplexere Dienste werden in Docker-Container 'eingesperrt' und können auf diese Weise einfacher und effektiver verwaltet werden. In Cloud-Umgebungen und insbesondere auch bei Platform as a Service Ansätzen spielen Container deshalb eine immer größere Rolle. Und gerade auch in Bereichen, in denen Software entwickelt wird, bietet der Einsatz von Container-Technologie eine Reihe von Vorteilen für die Entwickler bei Deployment, Integration und Testing. Passende Umgebungen oder Systeme stehen schnell und häufig im Self-Service zur Verfügung, ohne dass die IT-Abteilung zeit- und arbeitsaufwändig ganze Server bereit stellen muss.

Dieser Segen ist aber auch gleichzeitig ein Fluch. So schnell und einfach wie Container zur Verfügung gestellt werden können, so schnell wächst ihre Zahl auch an. Schnell sieht man sich also auch mit dutzenden von Docker Containern konfrontiert und spätestens dann stellt sich die Frage: wie gehe ich mit all diesen Services um? Wie verwalte ich eine solche Umgebung? Das Thema der Orchestrierung, der zentralen Steuerung von Deployments, Updates, Skalierung und Verfügbarkeit steht an.

Hier gibt es mittlerweile eine Reihe von mehr oder weniger komfortablen und mehr oder weniger verbreiteten Lösungen, die jeweils eigene Schwerpunkte setzen und auch jeweils eigene Vor- und Nachteile mit sich bringen. Dabei haben alle Ansätze je nach Anforderungssituation ihre Berechtigung. Bekannte Spieler in diesem Umfeld sind Cattle, Mesos oder Kubernetes.

Rancher geht das ganze noch einen Schritt abstrakter an und stellt einen (auch optisch ansprechenden) Rahmen, um viele Anforderungen für Setup und Betrieb einer (oder mehrer) Container-Umgebungen zu adressieren.

Rancher Envs

 

Einige Eckpunkte:

Rancher ist selber Docker Container basiert. Der oder die Master-Server sind Container und der Client Agent ist ein Container, der auf jedem verwendeten Host eingesetzt wird. Der Client Agent muss eine Verbindung zum lokalen Docker Socket haben. So kann dieser neue Container spawnen bzw. erstellen.

 

Rancher ermöglicht einfache Hochverfügbarkeitssetups

Durch die Anbindung der Master an eine externe MySQL Instanz, welche die Informationen über die Mitglieder eines HA-Verbundes vorhält, und die Verwendung eines HAProxy als Loadbalancer mit connection check können Master ausfallen und umgehend aus der externen MySQL Konfiguration neu erstellt werden. So wird das Setup robust gegen das Wegbrechen einzelner Container oder Nodes.

 

Flexibles Management von Client Nodes

Auf jedem Server bzw. in jeder virtuellen Maschine kann der Client Agent (Docker Container s.o.) einfach hinzugefügt oder gelöscht werden. Beim Deaktivieren / Pausieren werden die verwalteten Container automatisch auf andere verfügbare Nodes umgezogen.

 

Separierung von Umgebungen

Möchte man Cattle benutzen, um mehrere Umgebungen (z.B. Integration, Test, Staging, Production) aufzubauen, ist dafür schon alles vorbereitet - Plug&Play sozusagen. Zusätzlich kann man je Umgebung durchaus auch jeweils eigene Orchestrierungswerkzeuge (Kubernets, Cattle, Mesos ...) einsetzen. Neben Umgebungen für unterschiedliche Phasen eines Life-Cycles bei der Entwicklung kann man auf diese Weise auch unterschiedliche Mandanten versorgen und diesen jeweils die Verwendung ihres bevorzugten Container Orchestrierungs-Toolsets ermöglichen.

 

Rolling Upgrade

Das Upgraden von Container / Produkten funktioniert wie bei Kubernetes.

Beispiel: 4 Container in der Image Version 1.2. Man macht einen Upgrade auf 1.4.

Man klickt dafür auf "Upgrade", gibt die neue Version im Feld an und sagt "übernehmen".

Cattle nimmt einen 1.2 Container offline und erstellt einen 1.4 dafür. Dann wartet er, bis der Container online ist und der Healthcheck OK gibt. Ein weiterer 1.2 Container wird durch einen 1.4 ersetzt. Das läuft solange bis alle Container auf 1.4 sind. Nun kann man das neue Produkt testen.  Wenn man damit zufrieden ist, kann man sagen "Upgrade erfolgreich". Dann werden die 4 1.2 Container gelöscht. Falls man Fehler feststellt, kann revoked  werden. Die 1.2 Container werden wieder online genommen und die 1.4 gelöscht.

 

AD/LDAP Anbindung zur Benutzerverwaltung

Die Nutzung von HTTPs ist selbstverständlich. Auch die Anbindung an gängige Authentifizierungsquellen wie Active Directory oder LDAP ist direkt mit an Bord.

 

Intuitive Oberfläche

Die Oberfläche von Rancher ist sehr intuitiv und leicht verständlich. In einer guten Stunde sollte man alles verstanden haben und fühlt sich zu Hause. 

Hier einige Screenshots zur Veranschaulichung.

rancher hosts   rancher catalog

 

Allerdings muss man sagen, dass das Projekt aktuell nicht so groß, erfolgreich und verbreitet ist wie beispielsweise Kubernetes, hinter dem Google steckt. Auf der anderen Seite wirkt es reifer als zum Beispiel Mesos. Es gibt keine PODs wie in Kubernetes, sodass man händisch einstellen muss, dass bestimmte Container gemeinsam auf einem Host laufen bzw. liegen sollen.

 

Alles in allem ist Rancher aber ein vielversprechender und flexibler Ansatz, der sich insbesondere dann lohnt, wenn man eine flexible Container Umgebung verwalten möchte, die unterschiedlichen Anforderungen z.B. von verschiedenen Abteilungen oder Teams gerecht werden muss oder wenn man eine intuitiv und angenehm bedienbare Oberfläche sucht.