CNAB: Microsoft und Docker erklären Packaging-Format für einsatzbereit
Microsoft und Docker haben mit CNAB ein Format zum Paketieren verteilter Applikationen entwickelt, das nach einem Jahr Entwicklung nun loslaufen soll.
- Björn Bohn
Die Unternehmen Microsoft und Docker haben Ende 2018 die Spezifikation Cloud Native Application Bundle (CNAB) vorgestellt – nun hat sie erstmalig Version 1.0 erreicht. Es handelt sich dabei um ein Cloud-agnostisches Format zum Paketieren und Ausführen verteilter Applikationen, das neben Microsoft und Docker mittlerweile auch von Unternehmen wie Pivotal, Bitnami, HashiCorp und Codefresh entwickelt wird. Gleichzeitig geben die Firmen bekannt, das Projekt künftig im Rahmen der Joint Development Foundation (JDF), einer Untergruppierung der Linux Foundation, weiterzuentwickeln.
Der Aufstieg zur Version 1.0 soll eine gewisse Reife symbolisieren, die CNAB als einsatzbereit deklariert. Die Unternehmen wollen sich nun darauf konzentrieren, das Ökosystem der Werkzeuge rund um das Packaging-Format weiterzuentwickeln und mit der aktualisierten Version der Spezifikation in Einklang zu bringen. Dazu zählen die Referenzimplementierung Duffle, mit der Entwickler Pakete bauen, installieren und verwalten können. Microsoft stellt mit Porter einen Builder für CNAB zur Verfügung, der zum Erstellen eines Cloud-Installer für Applikationen dienen soll. Docker App ist hingegen ein speziell ausgerichteter Builder und Installer, der das Docker-Compose-Format nutzt, um Ihre zu definieren.
Die Spezifikation spezifiziert
Im Grunde soll CNAB lediglich festlegen, wie eine Applikation gepackt wird und wie und wo sie am Ende laufen soll. Es soll Cloud-agnostisch und die erstellten Bundles sollen teilbar sein. Laut einem Blogbeitrag von Pivotal soll CNAB auch für Anwender interessant sein, die nicht ausschließlich auf die Container-Orchestrierung Kubernetes setzen. CNAB sei ein Format, das die Nuancen einer bestimmten Laufzeit abstrahiert. Beispielsweise könnten verschiedene Microservices auf Kubernetes laufen, aber andere Teile der App müssen noch auf BOSH bereitgestellt werden oder Terraform-Skripte kommen zum Einsatz, um abhängige Cloud-Services einzurichten. CNAB soll solche Variationen bewältigen können.
Jedes unter der Spezifikation erstellte Bundle verfügt über eine Bundle Definition und ein Invocation Image. Ersteres dient zur Definition, zweites zur Installation der App. Die Bundle Definition ist eine einzelne Datei – bundle.json – die einige Informationen enthält, unter anderem den Namen und die Version des Bundles, aber auch den Speicherort des Invocation Image und andere Parameter.
Ein Bundle gilt als gut gebaut (well formed), wenn seine Definition dem CNAB-Schema folgt und die Images in den richtigen Formaten vorliegen. Ein Bundle gilt als vollständig (complete), wenn es als ein Thick Bundle verpackt ist, und alle Komponenten vorhanden sind, oder wenn es als Thin Bundle verpackt ist und alle Referenzen auflösbar sind. Die Vollständigkeit eines Thin Bundle hängt daher von externen Faktoren wie dem Netzzugang ab.
Weitere Details zur Spezifikation finden sich auf der Projektseite auf GitHub sowie in weiterführenden Blogbeiträgen von Microsoft und Docker. Eine Übersicht an Projekten rund um CNAB bietet die offizielle Website der Spezifikation.
Mehr dazu auf heise Developer:
- Microsoft und Docker wollen verteilte Applikationen mit CNAB revolutionieren
- DockerCon EU 2018: Ein Spagat zwischen Enterprise und Open Source
(bbo)