开源应用 Docker App 加入 CNAB 规范,实现云原生应用的统一管理

开源应用 Docker App 加入 CNAB 规范,实现云原生应用的统一管理

出品丨Docker公司(ID:docker-cn)
编译丨小东
每周一、三、五,与您不见不散!


Docker App 是我们在2018 DockerCon 美国大会上简要介绍的一款新工具。我们一直致力于“Docker APP”的开发,使容器应用程序更易于在不同团队和不同环境之间共享和管理,我们还将其进行开源处理,这样您就可以从 GitHub 下载 Docker APP 了,浏览 https://github.com/docker/app 下载 Docker APP 源码。


当我们与其他人谈论分享与合作这个问题时,我们开始意识到,这是一个其他人也在为之努力的普遍问题。这就是为什么我们很高兴与微软在全新的 Cloud Native Application Bundle(CNAB)规范上进行合作的原因。

开源应用 Docker App 加入 CNAB 规范,实现云原生应用的统一管理

如今的云原生应用程序通常会使用不同的技术,每个技术都有自己的工具链。也许您正在使用 ARM 模板和 Helm 图表,或在使用 CloudFormation 和 Compose,亦或是 Terraform 和 Ansible。但是,市场上没有单一的解决方案来定义和打包这些多服务、多格式的分布式应用程序。


CNAB 是一个开源的、与云无关的规范,用于打包和运行分布式应用程序,旨在解决其中的存在的问题。CNAB 将跨不同工具链的多服务分布式应用程序的管理统一为一种单一的、一体化的打包格式。

开源应用 Docker App 加入 CNAB 规范,实现云原生应用的统一管理

CNAB 规范的更多详情可以在 cnab.io 上找到,我们正在积极寻找有兴趣参与规范的人们,以及有兴趣围绕规范构建工具的人们。Docker App 的最新版本就是一个实现当前 CNAB 规范的工具。这意味着它既可以为 Compose 构建 CNAB 包(可以与任何其他 CNAB 客户端一起使用),也可以安装、升级和卸载任何其他 CNAB 包。


在 Docker Hub 上共享 CNAB 包

单独的 Compose 文件的局限在于它们无法在 Docker Hub 或 Docker Trusted Registry 上进行共享。Docker App 很好的解决了这个问题。这是一个简单的 Docker 应用程序,它启动了一个非常简单的 Prometheus 应用栈:

version: 0.1.0
name: monitoring
description: A basic prometheus stack
maintainers:
 - name: Gareth Rushgrove
   email: garethr@docker.com
---
version: '3.7'
 
services:
 prometheus:
   image: prom/prometheus:${versions.prometheus}
   ports:
     - ${ports.prometheus}:9090
 
 alertmanager:
   image: prom/alertmanager:${versions.alertmanager}
   ports:
     - ${ports.alertmanager}:9093
---
 
ports:
   prometheus: 9090
   alertmanager: 9093
versions:
   prometheus: latest
   alertmanager: latest

保存为“monitoring.dockerapp”后,我们就可以构建一个 CNAB 包并在 Docker Hub 上共享它。

$ docker-app push --namespace

现在在另一台机器上,我们仍然可以与共享应用程序进行交互。 例如,让我们使用“inspect”命令来获取有关我们应用程序的信息:

$ docker-app inspect/monitoring:0.1.0
monitoring 0.1.0
 
Maintained by: Gareth Rushgrove
 
A basic prometheus stack
 
Services (2) Replicas Ports Image
------------ -------- ----- -----
prometheus  1    9090 prom/prometheus:latest
alertmanager 1       9093 prom/alertmanager:latest
 
Parameters (4)       Value
--------------       -----
ports.alertmanager   9093
ports.prometheus     9090
versions.alertmanager latest
versions.prometheus  latest

Compose 文件中的所有信息都存储在 Docker Hub 上的 CNAB 包中。您可能注意到了,它也是参数化的,因此可以在运行时替换它的值来满足部署要求。我们也可以直接从 Docker Hub 安装应用程序。

docker-app install/monitoring:0.1.0 --set ports.alertmanager=9095

使用 Docker App 安装 Helm 图表

到目前为止,存在一个问题,那就是“docker-app”和现在的 CNAB 包如何与 Helm 图表相关联呢?好消息是他们可以很好地进行关联!下面是一个使用“docker-app”和 CNAB 包来安装 Helm 图表的示例。(注:以下示例使用的是 CNAB 示例包中的“hellohelm”示例。)

$ docker-app install -c local bundle.json
Do install for hellohelm
helm install --namespace hellohelm -n hellohelm /cnab/app/charts/alpine
NAME:  hellohelm
LAST DEPLOYED: Wed Nov 28 13:58:22 2018
NAMESPACE: hellohelm
STATUS: DEPLOYED
 
RESOURCES:
==> v1/Pod
NAME             AGE
hellohelm-alpine 0s

下一步!

如果您想开始使用 Docker App 构建应用程序,那么您可以从 github.com/docker/app 下载最新版本,并查看资源库中提供的一些示例。

上一篇:Mirantis 收购 Docker EE| 云原生生态周报 Vol. 28


下一篇:移动支付技术架构及应用模式探讨