Der Beitrag ist vom Oktober 2015
Die Softwarelandschaft rund um Docker und Container verändert sich derzeit sehr schnell. Deshalb ist es nützlich sein, eine kurze Umschau zu halten. Beim Gedankenaustausch mit einem Kunden (der seine Umgebung nach und nach in Microservices aufteilt und diese per Mesos orchestriert) und der Anfrage eines anderen Kunden wurde für mich (wieder) deutlich, dass eine mandantenfähige Plattform für Container künftig von Kunden immer häufiger nachgefragt werden wird. Während der erste Kunde sicher von einer Bereitstellung "on demand" profitieren würde (durchgeführt von seiner Orchestrierungsschicht) könnten wir dem anderen Kunden auf Basis so einer Plattform vielleicht die gewünschten Services (nicht Server) - ebenfalls "on demand" - zur Verfügung stellen.
Dass mein aktueller Favorit für so eine Plattform Triton von Joyent ist, sollte nicht zu schwer zu erraten sein. Trotzdem ist es sinnvoll, sich die anderen Anbieter anzusehen, die sich anschicken, ähnliche Plattformen anzubieten.

Photon zusammen mit Bonneville kommt Triton tatsächlich am nächsten. In diesem Video lässt sich das Zusammenspiel von Photon gut nachvollziehen. Bonneville liefert einen Docker-Daemon, welcher im Backend mit der vSphere-Infrastruktur kommuniziert und über vSpheres Instant-Clone Funktion Container provisioniert. Das erlaubt es Benutzern, einfach per Docker-Client VMs/Container zu starten. Photon dient dabei als Betriebsystem für die VMs/Container. Dabei stellt es i. W. eine Linux-Distribution von VMWare dar, welche auf den Einsatz als Basis für Docker- und Rkt-Container optimiert worden ist. Leider ist noch nicht viel mehr über Project Bonneville bekannt - also in welcher Form es geliefert wird, wie es lizensiert wird, etc. VMWare - und viele andere Anbieter argumentieren, dass die Sicherheit von Docker-Containern nicht ausreichen würde, um sie ohne weiteres in einer multi-tenant Umgebung laufen zu lassen. "Ohne weiteres" heisst bei diesen Anbietern übersetzt "ohne virtuelle Maschine drumherum". Dass Docker-Container im Bezug auf die Sicherheit noch einigen Aufholbedarf haben, ist unbestritten. Das führt z. B. zu solchen Auswüchsen wie dem Docker Security Cheat Sheet oder dem Docker Security Benchmark. Erst kürzlich sind User-Namespaces, die in OpenVZ und Virtuozzo seit Jahrzehnten für Sicherheit sorgen, in einer Beta-Version von Docker aufgenommen worden. Triton geht einen anderen Weg, der es erlaubt, den Docker-Container auf bare-metal in einer multi-tenant Umgebung laufen zu lassen: Der Container wird in eine Solaris-Zone eingesperrt, wodurch sich diese Sicherheitsbedenken in Luft auflösen. Wie Bonneville weiterhin in die vSphere-Umgebung eingebettet ist, ist ebenfalls weitgehend unbekannt. Ob z. B. Funktionen von NSX verwendet werden, wäre durchaus interessant um abschätzen zu können, ob auch Multi-Host Containervernetzung funktioniert.
Nach meiner Kenntnis sind damit die beiden Projekte, die es erlauben, ohne zusätzliche Werkzeuge mit einem Docker-Client Container auf einer Infrastruktur auszurollen, genannt. Über BlueMix von IBM werde ich vielleicht den nächsten Blog-Eintrag schreiben, denn auch hier könnte eine Benutzung per Docker-Client möglich sein (allerdings hatte ich verstanden dass BlueMix auf dem PaaS Cloudfoundry basiert und so - so ähnlich wie Giantswarm - zwar Docker Container "abspielen" kann, aber selbst eigene Werkzeuge verwendet, um diese auszurollen).
Auch an Linux-Distributionen, die sich möglichst optimal als Basis für Container eignen, herrscht derzeit kein Mangel. Intel bringt mit Clear Linux eine Distribution heraus, die bestimmte CPU-Funktionen ideal unterstützt und so eine deutlich höhere Performance verspricht. Wer all diese neuen Linux-Ableger pflegen und warten soll, steht aber auf einem anderen Blatt.
Wieder andere Anbieter versuchen, Kunden den Schritt in die Welt der MicroService Architekturen zu erleichtern, in dem sie Softwarepakete aus verschiedenen Projekten bündeln und so dem Kunden die Arbeit ersparen, diese zu integrieren. Mantl.io von Cisco und Tectonic von CoreOS sind solche Softwarebündel. Diese "Stacks" kümmern sich um verschiedene Aspekte von MicroService Architekturen. Während mantl.io für das Provisionieren von Infrastruktur auf Terraform setzt (welches viele IaaS-Anbieter aber auch Dienste wie die Docker-API unterstützt), verwendet Tectonic CoreOS als Basis. Für die Orchestrierung setzen beide auf Dienste wie Kubernetes oder Mesos/Marathon. Darum herum stellen sie Infrastruktur-Dienste für Service Discovery (etcd), zentrales Logging (ELK) und Container-Networking (flannel, Calico) zur Verfügung.
Dabei sind einige dieser Softwarepakete nur dafür erforderlich, die Komplexität, die dadurch entsteht, dass hier Container innerhalb von virtuellen Maschinen erzeugt und verwaltet werden müssen, abzumildern. Es liegt auf der Hand, dass diese Komplexität bei Systemen wie Triton nicht vorhanden ist, da hier eine virtuellen Maschinen zum Einsatz kommen und jeder Container seine eigene IP-Adresse erhält. Benutzer und Entwickler brauchen sich über Multi-Host Setups überhaupt keine Gedanken zu machen, weil diese Themen vollkommen gekapselt sind und von den Infrastruktur-Diensten von Triton übernommen werden (mit dem Vorteil, dass diese Dienste schon jahrelang produktiv benutzt werden, während die Softwareprojekte in anderen Umgebungen teilweise noch nichteinmal die Version 1.0 erreicht haben).
Wie eingangs beschrieben, sind es nicht nur Kunden, die selbst solche Architekturen aufbauen oder nutzen wollen sondern auch Kundenanforderungen, die mit Hilfe von solchen Plattformen erfüllt werden könnten, die es erforderlich machen, dass wir uns mit diesen Themen beschäftigen. Sicher ist es mit einer solchen Plattform, die bereits mandantenfähig ist einfacher resp. überhaupt erst möglich, z. B. "Redis as a Service" bereitzustellen (weil Redis allein nämlich nicht mandantenfähig ist). Insbesondere, wenn sie die Voraussetzungen für eine Abrechnung "on demand" schon mitbringt.
Links:
Project Photon/Project Bonneville - VMWare
Clear Linux - Intel
Tectonic - CoreOS
mantl.io - Cisco
BlueMix - IBM