Welche Infrastruktur für die eigene Container-Spielwiese? Die Auswahl ist groß.

Für Newbies wie mich, die hands on in the schöne „neue“ Container-Welt einsteigen wollen, stellt sich die Frage: „Auf welcher Infrastruktur baue ich meine Sandbox auf?“.
Kurz zur Präzisierung: Mit Container-Welt meine ich Docker und Kubernetes. Das ist für’s erste mein Fokus.

Die Auswahl ist groß.
Man kann durchaus Gefahr laufen, sich spontan für irgendein Linux mit einem aktuellen Kernel zu entscheiden. Passt ja.
Im anderen Extrem kann man sich aber auch im Lesen von Doku verlieren und vom Hundertsten ins Tausendste kommen.

Es hilft, sich zu fragen: „Was sind eigentlich meine Anforderungen?“.

Mein Ziel ist es, eine klassische Continuous Integration Pipeline mit Git, Jenkins, SonarQube und Nexus Repository auf Cloud-Infrastruktur bereitzustellen.
Die Bereitstellung soll mit Infrastructure-as-Code-Mitteln realisiert werden und sowohl eine Minimalinstallation auf meinem Notebook als auch ein fully fledged Deployment in die AWS oder Azure Cloud unterstützen.

Meine weiteren Anforderungen sind:

  • Das Betriebssystem für Docker/Kubernetes soll einem der Hauptparadigmen von Containern folgen und ebenfalls immutable sein.
  • Um in der Entwicklungs-Stage der CI-Plattform flexibel zu bleiben, möchte ich aber doch eine gewisse Flexibilität in Bezug auf die eingesetzten Versionen von Kernkomponenten wie zum Beispiel Docker haben.
  • Ich möchte das Rad nicht neu erfinden und from scratch anfangen sondern etablierte Lösungen und best practices nutzen.
  • Das auszuwählende OS soll komfortabel in der Bedienung sein. Features, die mir das Leben leichter machen und meine Produktivität steigern sind herzlich willkommen.

Und darum…
… fiel meine Wahl auf Container Linux von CoreOS.

Inzwischen hat Red Hat CoreOS akquiriert und man wird sehen müssen, wie und wo sich Container Linux insbesondere in Bezug auf Atomic in das Produktportfolio von Red Hat einfügt.

Container Linux erfüllt alle meine Anforderungen. Um nur einen Teil der zusätzlichen Goodies, die CL mitrbringt zu nennen:

  • Komfortable Installations- und Provisionierungsoptionen von Vagrant Boxen über Tectonic Installer bis Terraform (bezüglich Tectonic Installer und Terraform wahlweise bereits miteinander integriert)
  • Ein flexibles Staging Modell mit Stable, Beta und Alpha Channels
  • Den Addon-Manager torcx, falls man in der eigenen Dev Stage doch einmal die Immutabilität aufweichen möchte, um z.B. eine aktuellere Docker Version zu testen
  • Out of the box ein Release und Update Management mit Rollback Features
  • Service/Demon Konfiguration mittels file drop-ins

Nächster Schritt: vagrant up Container Linux auf meiner Notebook VirtualBox