使用CNAB和Duffle创建您的云代码安装程序

在构建代码时,需要以一种尽可能减少安装和运行的方式来交付它。 在传统的应用程序世界中,这很容易,您可以在构建结束时将安装程序作为目标,并将代码交付到存储库,商店以及系统和服务管理平台。 但是在云中,事情变得更加困难,尤其是当您构建依赖于云托管的编排平台,在Kubernetes上运行或部署在服务网格中的分布式系统时。

Terraform和Helm之类的工具有助于交付交付给Kubernetes的部署,Azure的ARM模板处理构建资源组,而Dockerfile用于从图像库构造容器。 需要的是一个可以将所有这些元素组合在一起的工具,它描述了整个分布式应用程序,然后使用该描述来处理对任何云的部署。

[ 到云端! 实际的容器迁移 | InfoWorld的Docker初学者指南中深入研究炙手可热的开源框架。 ]

介绍CNAB

微软和Docker一直在合作制定一个规范该规范可以处理服务描述和基于容器的应用程序的部署。 Cloud Native Application Bundle(CNAB)是捆绑交付应用程序所需的组件以及应如何安装该应用程序的详细信息的一种方式。

CNAB的一个关键方面是它与云无关。 不需要与特定的云平台一起使用。 也没有要求它以任何特定的业务流程层为目标。 重要的是它使用了容器,因此您的代码可以交付到在IaaS上运行的本地系统或云平台。 CNAB捆绑包可以很厚,包含部署和运行应用程序所需的所有文件,也可以很薄,仅包含需要部署的文件和映像的定义以及映像存储库的位置。

两种类型的捆绑包都有它们的位置。 如果您将CNAB当作传统的桌面安装程序来对待,因为它可能会在连接可能成为问题的网络边缘上运行的系统中使用,则您可能需要使用粗捆绑包。 但是,如果您要部署到具有高带宽连接到映像存储库的Azure或Amazon Web Services上,那么细捆绑包将可以很好地工作。 无论哪种方式,都可以对分发包进行签名,以确保仅使用受信任的映像来部署应用程序。

CNAB捆绑软件的核心是调用映像 ,它是一个容器,该容器承载用于运行安装,编排协调器,部署映像以及连接到云资源的命令。 您还可以使用它来托管部署代码所需的应用程序。 例如,可以使用一份Helm副本来处理捆绑商品中的所有图表。 CNAB定义了调用映像的目录结构,其中包含用于图表和服务网格定义的部分。

Duffle:CNAB参考实现

使用新的部署规范,有助于参考实施。 对于CNAB,那就是Duffle,这是CNAB bundles的命令行安装程序 。 Duffle是用Go语言编写的,它为您提供了一个工具来构建CNAB捆绑软件和从捆绑软件安装应用程序。 CNAB捆绑软件需要包含所谓的调用映像 ,该映像托管用于安装应用程序的指令的运行文件。 尽管CNAB文档中的大多数示例都是用标准的Unix Shell脚本语言编写的,但是可以用您选择的语言编写该文件。 您获取运行文件并将其复制到用于调用映像的Dockerfile中,以供Duffle使用。

Duffle的build命令将文件放入其目录中,并使用PGP向CNAB内容添加加密签名来构造一个签名的JSON文件。 它包含一个指向用于安装应用程序的调用映像的指针。

构建捆绑包后,可以将其交付给目标系统,然后再次运行Duffle进行安装。 CNAB不仅定义安装细节,还可以描述更新和卸载,因此您也可以使用Duffle来处理这些细节。 CNAB的一个有用方面是可以在安装上运行状态检查的选项,可让您检查安装是否正确。

Duffle团队已将不同CNAB捆绑软件的库组合在一起,因此您可以了解如何构建自己的更复杂的安装。 其中包括一个捆绑包,该捆绑包使用Terraform在Azure上的VM上设置IaaS安装,不仅配置VM,还配置其网络和Azure存储帐户。 同样,有一个捆绑包使用Ansible处理相同的过程。 另一个示例捆绑包使用Azure ARM模板创建一个在Azure容器实例中运行的容器,另一个示例捆绑包在Azure Kubernetes服务上构建一个Kubernetes群集,通过Helm部署代码并为其部署的Kubernetes群集设置基于角色的访问控制。

使用Duffle构建CNAB捆绑软件

构建CNAB捆绑软件需要一些脚本知识,例如大多数现代的devops工具-它可以自动执行代码安装。 Visual Studio Code扩展使用Duffle并支持共享代码段和预定义模板,从而帮助构建捆绑包。 它旨在使用Duffle定义来构建CNAB捆绑软件,并且可以与本地存储库一起修改现有捆绑软件。 其更有用的功能之一是向Duffle安装程序添加适当凭据的一组工具,因此您可以使用它们将应用程序部署到公共云实例。

微软还为基于Duffle的安装程序整合了概念验证GUI 。 Duffle-bag通过使用HTML进行格式化将文本文件添加到包中来扩展CNAB模型。 除了底层Duffle流程生成的消息之外,这些消息还可以包含对正在安装的代码的描述以及成功或失败消息。 它是Duffle的一个简单的基于Electron的包装器,并且因为它可以通过GitHub获得,所以包装供应商应该易于自定义。

通过为云托管的分布式应用程序提供标准的安装程序,Microsoft和Docker所做的工作不仅仅使开发人员能够轻松地部署自己的代码:它们还提供了供供应商用来交付自己的应用程序,提供云和容器的机制。一种新的经济模式。 使用CNAB和Duffle,可以通过云市场销售签名的安装程序,这些市场可以组装复杂的云架构,其方式与预配置的VM已将软件交付给虚拟基础架构的方式相同。

分析公司RedMonk的创始人之一James Governor形容2018年为Kubernetes获胜的一年 。 尽管他的评论很可能是即兴发表的推文,但其核心还是有一定道理。 如果Kubernetes是云基础设施大战的胜利者,那么CNAB很可能是开放分布式云如何通过选择商业软件行业来密封其胜利的方法。

From: https://www.infoworld.com/article/3326824/create-your-cloud-code-installer-with-cnab-and-duffle.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值