Von A nach B

Kompose vereinfacht das Umziehen von Docker Compose nach Kubernetes

Dominik Mohilo

© Shutterstock.com / MAGNIFIER

Das Tool Kompose kommt frisch aus dem Brutkasten der Entwickler von Kubernetes. Mit dem Werkzeug, das ab sofort offiziell Teil des Open-Source-Systems für automatisches Deployment, Skalieren und Verwalten containerisierter Anwendungen ist, können Nutzer ihre Docker-Compose-Anwendungen ganz einfach nach Kubernetes umziehen.

Kubernetes erfreut sich anhaltender Beliebtheit, was sich auch in der immer größer werdenden Anzahl an Tools für Kubernetes widerspiegelt. Frisch aus dem Kubernetes Inkubator kommt nun Kompose, das ab sofort offiziell Teil von Kubernetes ist. Das Tooling hilft Entwicklern, ihre Docker-Compose-Anwendungen nach Kubernetes umzuziehen. Der Startschuss für das Projekt fiel vor etwas mehr als einem Jahr beim Unternehmen Skippbox (nun Teil von Bitnami). Durch die Mitarbeit von Google und Red Hat ist das Projekt auf seine heutige Größe angewachsen, mittlerweile hat es 21 Helfer und über 850 Commits wurden eingereicht.

Kompose 1.0.0

Mit der nun veröffentlichten Version Kompose 1.0.0 wurden einige Änderungen umgesetzt. Eine davon war die Kompatibilität mit Docker Compose Version 3. Die dort neu implementierten Keys, bspw. deploy oder pid, werden damit ebenfalls in das Kubernetes-Äquivalent konvertiert. Eine vollständige Liste, welche Keys von Kompose unterstützt werden, gibt es auf der Homepage von Kompose.

Eine weitere Neuerung, die für die erste Hauptversion implementiert wurde, ist der sogenannte Docker Push and Build Support. Ist ein build-Key Teil der Datei docker-compose.yaml, erstellt und pusht Kompose das Image zum entsprechenden Docker Repository, damit es Kubernetes zum Gebrauch zur Verfügung steht.

Kompose – Die Architektur

Die Architektur von Kompose besteht aus drei Ebenen, nämlich dem Loader, dem Transformer und dem Outputter. Eines der nächsten Ziele wird es sein, jede Ebene mit einem genau definierten Interface auszustatten. Bislang sind lediglich die Interfaces für den Loader und den Transformer definiert.

Die Architektur von Kompose / Quelle: Kubernetes

Der Loader liest die Ursprungsdatei und konvertiert sie in ein KomposeObject, was nichts anderes ist als eine (Kompose-)interne Repräsentation sämtlicher Container, die die Ursprungsdatei enthielt. Der Transformer konvertiert das KomposeObject ins Target– bzw. Output-Format, aktuell gibt es Sets von Kubernetes/Openshift-Objekten. Der Outputter nimmt das Resultat dieser Konvertierung und führt die angegebene Aktion aus, zum Beispiel das direkte Deployment von Artefakten nach Kubernetes oder OpenShift.

Derzeit werden von Kompose nativ nur Objekte für Kubernetes und OpenShift unterstützt, allerdings ist es theoretisch möglich, den Transformer für andere Objekte zu erweitern. Ein typisches KomposeObject sieht wie folgt aus (Quelle: kobject.go):

// KomposeObject holds the generic struct of Kompose transformation
type KomposeObject struct {
	ServiceConfigs map[string]ServiceConfig
}

// ServiceConfig holds the basic struct of a container
type ServiceConfig struct {
	ContainerName string
	Image         string
	Environment   []EnvVar
	Port          []Ports
	Command       []string
	WorkingDir    string
	Args          []string
	Volumes       []string
	Network       []string
	Labels        map[string]string
	Annotations   map[string]string
	CPUSet        string
	CPUShares     int64
	CPUQuota      int64
	CapAdd        []string
	CapDrop       []string
	Entrypoint    []string
	Expose        []string
	Privileged    bool
	Restart       string
	User          string
}

Ausblick

Ziel von Kompose war es von Anfang an, die bestmögliche Werkzeugkiste für die Nutzung von Docker-Compose-Dateien mit Kubernetes und (spätestens seit der Involvierung von Red Hat in das Projekt) OpenShift zur Verfügung zu stellen. Dieses wurde früher erreicht, als eigentlich geplant, denn die offizielle Roadmap spricht von Ende Oktober als Deadline für das Verlassen des Kubernetes Inkubators.

Für die Zukunft des Tools ist in jedem Fall geplant, sämtliche Docker Compose Keys zu ihre Kubernetes-Äquivalent zu konvertieren. Außerdem sollen zukünftige Versionen von Kompose generell rückwärtskompatibel sein.

Kompose hat bereits über 1500 Stars auf GitHub gesammelt, über 100 Forks wurden schon durchgeführt. Wie beliebt der Converter ist, zeigt auch das interessante Portfolio an Integrationen: Jad Chamoun und Jo Haddad haben etwa ein Web Interface für Kompose erstellt, das Kompose UI. Eine Live-Demo gibt es auf composetokube.com.

Lesen Sie auch: Kubernetes 1.7: Großes Sicherheitsupdate für Googles Orchestrierungswerkzeug

Weitere Informationen zu Kompose gibt es auf der offiziellen Homepage des Projektes, dort gibt es auch eine vollständige Liste der Integrationen und einen User Guide. Wie üblich ist das Projekt auch auf GitHub vertreten und im Blogeintrag von Charlie Drage, Softwareentwickler bei Red Hat, gibt es alle relevanten Neuigkeiten zum aktuellen Release.

Geschrieben von
Dominik Mohilo
Dominik Mohilo
Dominik Mohilo studierte Germanistik und Soziologie an der Goethe-Universität in Frankfurt. Seit 2015 ist er Redakteur bei S&S-Media.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.