Microsoft et Docker ont
développé la spécification ouverte Cloud Native Application Bundle (CNAB). Il décrit une manière polyvalente de conditionner des applications conteneurisées pour une utilisation dans des environnements hybrides. Ensuite, nous expliquerons pourquoi CNAB était nécessaire et de quoi il s'agit.
/ photo tsuna72 CC BYQu'est-ce que CNAB?
Le Cloud Application Application Bundle est une spécification qui décrit comment empaqueter les composants (API, machines virtuelles, conteneurs) nécessaires pour exécuter des applications cloud dans des environnements distribués. À première vue, cette tâche devrait être résolue par Docker. Cependant,
il est connu que dans le cas des infrastructures hybrides à grande échelle, ses fonctions standard ne suffisent pas.
Ainsi, CNAB est une tentative d'unifier le processus de conditionnement, de déploiement et de gestion du cycle de vie des applications distribuées basées sur Kubernetes, Helm, Swarm, etc., en utilisant un format de package unique. Ces packages sont basés sur JSON et OpenPGP.
Grâce au Cloud Native Application Bundle, le développeur a la possibilité de déployer son application à la fois sur le poste de travail local et dans le cloud public. Chacun des géants de l'informatique a présenté son propre outil, qui démontre les capacités de la spécification. Chez Microsoft, cette solution était le client
Duffle ; chez Docker, l'
application Docker .
Des exemples
Comme nous l'avons dit ci-dessus, la spécification définit une méthode pour empaqueter des applications distribuées de différents formats. CNAB comprend une
définition de package (bundle.json) pour décrire l'application, ainsi qu'une image spéciale (
image d'invocation ) pour l'installer. La définition du package ressemble à ceci (un exemple de la description est dans le
dépôt officiel sur GitHub ):
{ "schemaVersion": "v1.0.0-WD", "name": "helloworld", "version": "0.1.2", "description": "An example 'thin' helloworld Cloud-Native Application Bundle", "maintainers": [ { "name": "Matt Butcher", "email": "technosophos@gmail.com", "url": "https://example.com" } ], "invocationImages": [ { "imageType": "docker", "image": "technosophos/helloworld:0.1.0", "digest": "sha256:aaaaaaa..." } ], "images": [ { "image": "technosophos/microservice:1.2.3", "description": "my microservice", "digest": "sha256:aaaaaaaaaaaa...", "uri": "urn:image1uri", "refs": [ { "path": "image1path", "field": "image.1.field" } ] } ], "parameters": { "backend_port" : { "type" : "int", "defaultValue": 80, "minValue": 10, "maxValue": 10240, "metadata": { "description": "The port that the back-end will listen on" } } }, "credentials": { "kubeconfig": { "path": "/home/.kube/config", }, "image_token": { "env": "AZ_IMAGE_TOKEN", }, "hostkey": { "path": "/etc/hostkey.txt", "env": "HOST_KEY" } } }
Ce bloc décrit les paramètres du package avec l'application et fournit des informations sur où «rechercher» les images installées (le format doit être docker ou oci). De plus, la définition indique la taille de l'image en octets, la plate-forme sur laquelle elle fonctionnera, ainsi que l'architecture et le système d'exploitation.
Et ici, l'image elle-même est décrite directement:
"invocationImages": [ { "imageType": "docker", "image": "technosophos/helloworld:0.1.0", "digest": "sha256:aca460afa270d4c527981ef9ca4989346c56cf9b20217dcea37df1ece8120685" } ]
Sa tâche consiste à installer les composants nécessaires au travail. Ces composants peuvent être des conteneurs, des fonctions, des machines virtuelles et des infrastructures de service.
Les développeurs de Microsoft ont préparé une
vidéo séparée dans laquelle ils ont expliqué comment travailler avec la norme et ont donné plusieurs exemples de code réel.
Ce que pense la communauté informatique
CNAB n'est pas la seule solution de gestion du cycle de vie des applications cloud. Par exemple, pour le même Kubernetes, il existe un gestionnaire Crossplane et un gestionnaire de packages Helm. Cependant, CNAB est la première solution qui couvre plusieurs outils populaires à la fois et est indépendante de la plate-forme. Soit dit en passant, CNAB peut également travailler avec Helm: il existe même un
exemple correspondant sur GitHub.
En raison de cette polyvalence, la communauté informatique a été enthousiasmée par la nouvelle spécification. L'un des fondateurs de Kubernetes - Brendan Burns - a
noté que l'installation d'applications distribuées à l'aide de CNAB ressemble à l'installation d'une application à partir d'un lecteur flash ordinaire. Selon lui, c'est tout aussi simple.
Mais tout le monde n'est pas sûr du succès de la nouvelle solution. Certains utilisateurs craignent que le CNAB n'attende le sort d'autres gestionnaires de paquets qui, en raison du manque d'opérateurs (comme dans Kubernetes), ont été oubliés. Pour dissiper les doutes et discuter de toutes les fonctions possibles, l'un des créateurs de la solution a rejoint le
fil thématique sur Hacker News . Il a répondu à toutes les questions des résidents du site et écouté les propositions d'aménagement.
Jusqu'à présent, le CNAB
est à un stade de développement actif . Microsoft et Docker invitent tous les développeurs à se joindre à eux pour finaliser la spécification et la mettre en production. Deux géants de l'informatique ont l'intention de faire du nouvel outil un standard de l'industrie. Dans le même temps, les représentants des deux sociétés espèrent qu'avec le temps, le Cloud Application Application Bundle se développera indépendamment, quels que soient ses créateurs.
Messages de notre blog d'entreprise:
Messages de notre chaîne Telegram: