Cómo simplificar la implementación de aplicaciones en la nube: introdujo una nueva especificación abierta

Microsoft y Docker han desarrollado la especificación abierta Cloud Native Application Bundle (CNAB). Describe una forma versátil de empaquetar aplicaciones en contenedores para su uso en entornos híbridos. A continuación, explicaremos por qué se necesitaba CNAB y qué es.


/ foto tsuna72 CC BY

¿Qué es el CNAB?


Cloud Native Application Bundle es una especificación que describe cómo empaquetar los componentes (API, máquinas virtuales, contenedores) necesarios para ejecutar aplicaciones en la nube en entornos distribuidos. A primera vista, Docker debería resolver esta tarea. Sin embargo, se sabe que en el caso de las infraestructuras híbridas a gran escala, sus funciones estándar no son suficientes.

Por lo tanto, CNAB es un intento de unificar el proceso de empaquetado, implementación y gestión del ciclo de vida de aplicaciones distribuidas basadas en Kubernetes, Helm, Swarm, etc., utilizando un formato de paquete único. Estos paquetes están basados ​​en JSON y OpenPGP.

Usando el paquete de aplicaciones nativas de la nube, el desarrollador tiene la oportunidad de implementar su aplicación tanto en la estación de trabajo local como en la nube pública. Cada uno de los gigantes de TI introdujo su propia herramienta, que demuestra las capacidades de la especificación. En Microsoft, esta solución era el cliente Duffle ; en Docker, la aplicación Docker .

Ejemplos


Como dijimos anteriormente, la especificación define un método para empaquetar aplicaciones distribuidas de varios formatos. CNAB incluye una definición de paquete (bundle.json) para describir la aplicación, así como una imagen especial ( imagen de invocación ) para instalarla. La definición del paquete se ve así (un ejemplo de la descripción está en el repositorio oficial en 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" } } } 

Este bloque describe los parámetros del paquete con la aplicación y proporciona información sobre dónde "buscar" las imágenes instaladas (el formato debe ser acoplable u oci). Además, la definición indica el tamaño de la imagen en bytes, la plataforma en la que funcionará, así como la arquitectura y el sistema operativo.

Y aquí la imagen en sí se describe directamente:

 "invocationImages": [ { "imageType": "docker", "image": "technosophos/helloworld:0.1.0", "digest": "sha256:aca460afa270d4c527981ef9ca4989346c56cf9b20217dcea37df1ece8120685" } ] 

Su tarea es instalar los componentes necesarios para el trabajo. Estos componentes pueden ser contenedores, funciones, máquinas virtuales y marcos de servicio.

Los desarrolladores de Microsoft prepararon un video separado en el que explicaron cómo trabajar con el estándar y dieron varios ejemplos sobre código real.

Lo que piensa la comunidad de TI


CNAB no es la única solución de gestión del ciclo de vida de las aplicaciones en la nube. Por ejemplo, para el mismo Kubernetes hay un administrador de Crossplane y un administrador de paquetes Helm. Sin embargo, CNAB es la primera solución que cubre varias herramientas populares a la vez y es independiente de la plataforma. Por cierto, CNAB también puede trabajar con Helm: incluso hay un ejemplo correspondiente en GitHub.

Debido a esta versatilidad, la comunidad de TI se ha entusiasmado con la nueva especificación. Uno de los fundadores de Kubernetes, Brendan Burns, señaló que instalar aplicaciones distribuidas usando CNAB se asemeja a instalar una aplicación desde una unidad flash ordinaria. Según él, es igual de fácil.

Pero no todos están seguros del éxito de la nueva solución. Algunos usuarios están preocupados de que CNAB esté esperando el destino de otros administradores de paquetes que, debido a la falta de operadores (como en Kubernetes), fueron olvidados. Para disipar dudas y discutir todas las funciones posibles, uno de los creadores de la solución se unió al hilo temático en Hacker News . Respondió todas las preguntas de los residentes del sitio y escuchó las propuestas de desarrollo.

Hasta ahora, el CNAB se encuentra en una etapa activa de desarrollo . Tanto Microsoft como Docker están invitando a todos los desarrolladores a unirse a ellos para finalizar la especificación y lanzarla a producción. Un par de gigantes de TI tienen la intención de hacer de la nueva herramienta un estándar de la industria. Al mismo tiempo, los representantes de ambas compañías esperan que con el tiempo el paquete de aplicaciones nativas de la nube se desarrolle de forma independiente, independientemente de sus creadores.



Publicaciones de nuestro blog corporativo:


Publicaciones de nuestro canal de Telegram:

Source: https://habr.com/ru/post/es436536/


All Articles