fbpx

分散型アプリケーションのパッケージングと実行を行うクラウド非依存なオープンソース仕様Cloud Native Application Bundle (CNAB)とdocker-app #docker

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

DockerCon US 2018で少しご紹介したdocker-appは新しいツールです。私達は、異なるチームや異なる環境でよりシンプルに共有し、より簡単に管理できるコンテナアプリケーションを作成する docker-app に取り組んでまいりました。 GitHub の https://github.com/docker/app でdocker-appのソースを公開していますので、今すぐにでもダウンロードしてお使いいただけます。

私達が「アプリケーション」と呼ぶ広い領域で他の人達との話し合った結果、共有やコラボレーションで経験した問題は誰もが直面している根本的なものであると認識しました。Microsoft社と Cloud Native Application Bundle (CNAB) 仕様について共同作業できることを嬉しく思います。

現在のクラウドネイティブなアプリケーションでは通常、それぞれ独自のツールチェーンを持つさまざまな技術を使用しています。おそらく、読者の皆さんは、ARMテンプレートとHelm Chart、またはCloudFormationとDocker Compose、またはTerraformとAnsibleを使用していることでしょう。これらのマルチサービス・マルチフォーマットの分散アプリケーションを定義してパッケージ化する方法は、単一のソリューションが市場に存在していません。

CNABはこれらの問題のいくつかを解決することを目指した、分散アプリケーションをパッケージ化して実行するための、オープンソースでクラウド非依存の仕様です。CNABは、さまざまなツールチェーンにわたるマルチサービスの分散アプリケーションの管理を、単一のオールインワンパッケージ形式に統一します。

CNABの暫定的な仕様はcnab.ioでご覧いただけます。また私たちは、CNABの仕様そのものに貢献してくださる方や、仕様に関するツールの作成に興味がある方を歓迎いたします。docker-appの最新リリースは、現在のCNAB仕様を実装したツールの1つです。つまり、Docker Compose用のCNABバンドル(他のCNABクライアントと併用可能)を作成することと、他のCNABバンドルをインストール・アップグレード・アンインストールすることの両方に使うことができます。

Docker HubでCNABバンドルを共有する

スタンドアロンのDocker Composeファイルの限界の1つは、Docker HubまたはDocker Trusted Registryで共有できないことです。docker-appはこの問題も解決しています。これは非常にシンプルなPrometheusのスタックを起動する、シンプルなDocker アプリケーションです:


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 <garethr@docker.com>
 
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

Docker Composeファイルのすべての情報は、Docker HubのCNABに格納してあります。また、見ての通りパラメータ化してあるので、実行時にデプロイ条件に合わせて値を置き換えることができます。アプリケーションを直接Docker Hub から、インストールすることもできます:


docker-app install [あなたのネームスペース]/monitoring:0.1.0 --set ports.alertmanager=9095

docker-appを使用してHelm Chartをイントールする

私達のこれまでの会話で出てきた疑問の1つは、docker-appと現在のCNABがHelm Chartとどのように関係しているかです。嬉しいことに、それらは一緒にとてもうまく動作します。これは、Helm ChartをパッケージングするCNABバンドルをインストールするdocker-appの使用例です。次は、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

次のステップ

もし、CNABの仕様の技術的な詳細(実際にどのように動作するのか、もしくは仕様の設計やツールの構築への貢献)に興味がおありなら、cnab.ioで仕様を確認いただけます。

docker-appでアプリケーションを初めて構築するのであれば、github.com/docker/appから最新のリリースをダウンロードし、リポジトリに用意している事例をご確認ください。


原文; Docker App and CNAB

新規CTA