CNAB Spec
CNAB (Cloud Native Application Bundles) 是关于打包,安装,管理分布式应用的规约。
- https://github.com/deislabs/cnab-spec/blob/master/100-CNAB.md
- 它可以打包多种运行时的安装工具,例如 Helm,Terraform。
- 他可以支持打包到多种后端,各个云平台,甚至离线的环境。例如,openstack, azure, kubernetes, nomad, local docker, aci, 甚至 IoT。
- bundle.json 中定义了元信息,invocation image(简单来说,有点像桌面系统的安装器),可让用户自定义的参数,executable images,以及镜像们所需要的环境变量和密钥。
- bundle.json 是未签名的,bundle.cnab 是签名的。
- thin bundle:只包含了 definition 的包。
- thick bundle:包含了 definition 以及所有经过编码的 invocation image,execution images。
- 一个 bundle 包含了元信息和至少一个 invocation image。invocation image 安装依赖到 host environment。
- run tool:bundle 的入口程序。
- claim: 安装历史,用于追踪 bundle 的安装。
- bundle repositories: 存放 bundle 的仓库。
- image: 可以是 container 镜像,也可以是 VM 镜像。
衍生思考:CNAB 尝试要解决的问题是个很大的命题,如何安装云端的应用程序。我们有太多的工具和工具链,出现一个标准是个好事。