Verpackungskünstler: Kubernetes paketieren mit kpt

Bei Kubernetes kommt es auf die Verpackung an. Das Paketierungs-Framework kpt packt neuerdings quelloffen mit an und ein.

In Pocket speichern vorlesen Druckansicht 2 Kommentare lesen
Verpackungskünstler: Kubernetes paketieren mit dem Management-Framework kpt

(Bild: Nice to meet you / Shutterstock.com)

Lesezeit: 3 Min.
Von
  • Silke Hahn

Unter dem Radar existiert schon seit Längerem ein Tool namens "kpt" (sprich: kept) zum Paketieren von Kubernetes-Manifestdateien, das Google nun als Open Source unter die Apache Software License 2.0 gestellt hat. In einem aktuellen Blogbeitrag erblickt es nun das Licht der Öffentlichkeit. Hinter den Kulissen schrauben die Google-Entwickler schon seit 2014 an dem Management-Framework, die aktuelle Version ist kpt 0.1.0.

Bei kpt handelt es sich um ein Open-Source-Tool, das ein Standardformat zum Bündeln, Veröffentlichen, Anpassen, Aktualisieren und Anwenden von Konfigurationsmanifesten verwendet. Es ist um eine "as-data"-Architektur herum aufgebaut, lässt sich dem Blogeintrag entnehmen, die die Kubernetes-Ressourcenkonfiguration bündelt, und sei "ein Format für Menschen und Maschinen".

Im Klartext bedeutet das, dass Anwendungen den Paketinhalt unter Verwendung standardisierter Datenstrukturen lesen und schreiben können sollen. Entwicklern und Administratoren eröffne das eine Reihe neuer Möglichkeiten, und kpt bietet dafür Befehle für die grundlegenden Funktionen: Mit $ kpt pkg get soll sich jedes in einem GitHub-Repository vorhandene Verzeichnis als kpt-Paket einsetzen lassen. Diese Pakete können Anwender beliebig an ihre Bedürfnisse anpassen und später durch Zusammenführen von Aktualisierungen aus dem Upstream-Bereich beziehen – der Aufruf hierfür erfolgt über $ kpt pkg update.

Mit $ kpt cfg set können Automatisierungstools High-Level-Aufträge durchführen, indem sie Paketdaten nach Vorgabe umwandeln und validieren. Es soll auch möglich sein, dass Organisationen ihre eigenen Tools und Automatisierungsabläufe entwickeln; kpt unterstützt das mit dem Befehl $ kpt fn. $ kustomize build & kubectl apply wiederum bindet existierende Tools in die Automatisierung ein. Und bestehende Anwendungen, die Konfigurationen erzeugen, können mit dem Befehl $ helm template selbst kpt-Pakete zusammenstellen und von diesen aus die hier dargestellten Features umsetzen.

Konfigurationsmanifeste dienen bei Kubernetes dazu, ausrollbare High-Level-Systeme und wiederverwendbare Blueprints zu erzeugen. Die Manifeste sind in Bereichen der Infrastruktur, aber auch kundenspezifisch für Standardsoftware und Produktangebote gängig, sie lassen sich zu Paketen bündeln. Die Konfigurationsmanifeste von Kubernetes haben sich mehr oder weniger zu einem Industriestandard entwickelt. Jedoch ist es für Teams nicht immer ganz leicht, aus bestehenden größeren Paketen tragfähige Bundles durch Forks auszukoppeln oder aus bestehendem Code Bundles neu zu generieren.

Theoretisch müsste jedes noch so kleine abgezweigte Päckchen erneut den gesamten Prozess aus Anpassung, Validierung, Prüfung und Deployment neu durchlaufen. Dafür und für spezielle Anwendungsszenarien hat jedoch nicht jedes Team Ressourcen. Die Wahl der Paketierung ist daher keine triviale Entscheidung, es gibt verschiedene Ansätze über Templates und DSLs (Domain-specific Languages). kpt bietet einen weiteren, für manche Teams vielleicht hilfreichen Ansatz.

Mehr Details und ein Praxisbeispiel zum Nachbauen lassen sich der Ankündigung von Google entnehmen. Der Code von kpt steht auf GitHub zum Download bereit. (sih)