Microsoft和Docker已经
开发了Cloud Native Application Bundle(CNAB)开放规范。 它描述了打包容器化应用程序以在混合环境中使用的通用方法。 接下来,我们将解释为什么需要CNAB及其含义。
/照片tsuna72 CC BY什么是CNAB?
Cloud Native Application Bundle是一个规范,描述了如何打包在分布式环境中运行云应用程序所需的组件(API,虚拟机,容器)。 乍看之下,此任务应由Docker解决。 然而,
众所周知 ,在大规模混合基础设施的情况下,其标准功能还不够。
因此,CNAB试图统一使用单个包格式的基于Kubernetes,Helm,Swarm等的分布式应用程序的打包,部署和生命周期管理过程。 这些软件包基于JSON和OpenPGP。
使用Cloud Native Application Bundle,开发人员可以获得将其应用程序部署在本地工作站和公共云中的机会。 每个IT巨头都介绍了自己的工具,该工具演示了规范的功能。 在Microsoft,此解决方案是
Duffle客户端;在Docker,则是
Docker应用程序 。
例子
如上所述,规范定义了一种用于打包各种格式的分布式应用程序的方法。 CNAB包括用于描述应用程序的程序
包定义 (bundle.json),以及用于安装该程序的特殊映像(
调用映像 )。 包定义如下所示(描述示例
在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" } } }
该块描述了应用程序软件包的参数,并提供了有关在何处“搜索”已安装映像的信息(格式必须为docker或oci)。 此外,该定义还指示了以字节为单位的图像大小,将在其上运行的平台以及体系结构和操作系统。
在这里直接描述图像本身:
"invocationImages": [ { "imageType": "docker", "image": "technosophos/helloworld:0.1.0", "digest": "sha256:aca460afa270d4c527981ef9ca4989346c56cf9b20217dcea37df1ece8120685" } ]
它的任务是安装工作所需的组件。 这些组件可以是容器,功能,虚拟机和服务框架。
Microsoft的开发人员准备了单独的
视频 ,他们在其中讲述了如何使用该标准,并提供了一些有关真实代码的示例。
IT社区的想法
CNAB不是唯一的云应用程序生命周期管理解决方案。 例如,对于相同的Kubernetes,有一个Crossplane管理器和一个Helm软件包管理器。 但是,CNAB是第一个同时涵盖多种流行工具且与平台无关的解决方案。 顺便说一下,CNAB也可以与Helm合作:GitHub上甚至有一个
相应的示例 。
由于这种多功能性,IT界一直热衷于新规范。 Kubernetes的创始人之一Brendan Burns
指出 ,使用CNAB安装分布式应用程序类似于从普通闪存驱动器安装应用程序。 据他说,这同样容易。
但是并非所有人都对新解决方案的成功感到确定。 一些用户担心,CNAB正在等待其他软件包管理器的命运,由于缺少操作员(例如Kubernetes),它们被遗忘了。 为了消除疑虑并讨论所有可能的功能,该解决方案的创建者之一加入了
Hacker News的
主题线程 。 他回答了现场居民的所有问题,并听取了有关开发的建议。
迄今为止,CNAB
处于活跃的发展阶段 。 Microsoft和Docker都邀请所有开发人员加入他们,以最终确定规范并将其发布到生产环境中。 一对IT巨头打算使新工具成为行业标准。 同时,两家公司的代表都希望,随着时间的流逝,Cloud Native Application Bundle将独立开发,而不论其创建者如何。
我们公司博客中的帖子:
来自我们的电报频道的帖子: