開源應用 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)規範上進行合作的原因。
如今的雲原生應用程式通常會使用不同的技術,每個技術都有自己的工具鏈。也許您正在使用 ARM 模板和 Helm 圖表,或在使用 CloudFormation 和 Compose,亦或是 Terraform 和 Ansible。但是,市場上沒有單一的解決方案來定義和打包這些多服務、多格式的分散式應用程式。
CNAB 是一個開源的、與雲無關的規範,用於打包和執行分散式應用程式,旨在解決其中的存在的問題。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: [email protected]
---
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 下載最新版本,並檢視資源庫中提供的一些示例。