1. 程式人生 > >開源應用 Docker App 加入 CNAB 規範,實現雲原生應用的統一管理

開源應用 Docker App 加入 CNAB 規範,實現雲原生應用的統一管理

screenshot

出品丨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)規範上進行合作的原因。

screenshot

如今的雲原生應用程式通常會使用不同的技術,每個技術都有自己的工具鏈。也許您正在使用 ARM 模板和 Helm 圖表,或在使用 CloudFormation 和 Compose,亦或是 Terraform 和 Ansible。但是,市場上沒有單一的解決方案來定義和打包這些多服務、多格式的分散式應用程式。


CNAB 是一個開源的、與雲無關的規範,用於打包和執行分散式應用程式,旨在解決其中的存在的問題。CNAB 將跨不同工具鏈的多服務分散式應用程式的管理統一為一種單一的、一體化的打包格式。

screenshot

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 下載最新版本,並檢視資源庫中提供的一些示例。