2019年8月13日更新: dappプロジェクトの名前がwerfに変更され、そのコードがGoに書き換えられ、ドキュメントが大幅に改善されました。

したがって、dappは、 CI / CDプロセスを実装および保守するためのオープンソースプロジェクトとしてFlantで作成されたRubyで作成されたツールです。 彼は何を許可していますか?
組立イメージ
初めてdappについて説明したとき( post 、 video )、このユーティリティを使用してDockerコンテナのイメージを構築することについて話していました。 レポート全体を再説明するわけではありませんが、dappの主な機能をリストします(Dappfileで説明されているイメージ構成を使用)。これにより、イメージを迅速かつ効率的に組み立てることができます。
- イメージアセンブリの4つの段階(
before_install
、install
、before_setup
、setup
)、その結果はキャッシュされます(イメージの再組み立ての速度を大幅に向上させます)。 - ビルド中に使用されるが、最終イメージから除外されるディレクトリをマウントするための「外部コンテキスト」。
- Gitとの思慮深い作業。新しいビルドでイメージにデルタのみを追加(
git patch apply
)し、これらのパッチの内容をキャッシュします。 - 「アーティファクト」-サードパーティ製ツールをプロジェクトのアセンブリ段階で使用できますが、最終イメージに含めることはできません。 キャッシュはアーティファクトに対してもサポートされています( Docker 17.06の最近のリリースでは、この機能はマルチステージビルドの登場によりあまり重要ではなくなりました) 。
- Chefサポート。レシピ(クックブック)に従ってDockerイメージでシステムを構成できます。
Ansibleのサポートで後者を補完することを計画し、この問題の関連性は増加しているだけですが、実際の実装はまだ意図に遅れています。
Kubernetesでの展開
しかし、継続的な統合とアプリケーション配信のプロセスの他のコンポーネントの分野で、イメージアセンブリの範囲を超えてdappの機能を拡張するという別の重要な方向に進みました。 dappの初期展開サポートは、コンテナのオーケストレーションに使用するKubernetesシステムとの統合の可能性を示しました(最近、より詳細に説明しました:「 小規模プロジェクトでのKubernetesでの経験(レビューおよびビデオレポート) 」) 。 この機能の本質は次のとおりです。
- Kubernetesの場合、YAML構成が準備されます。YAML構成は、目的の回路(生産、ステージング、テストなど)ごとに異なる場合があり、アプリケーションおよびインフラストラクチャコード(たとえば、
backend.yaml
、frontend.yaml
ファイル、特別なディレクトリ.kube/
)。 - 作成された構成は
kubectl
ユーティリティにkubectl
れ、必要なKubernetesクラスターにクラスターに記述されたインフラストラクチャが展開されます(ここでも、クラスターは回路ごとに異なる場合があります)。 - Dockerで作成されたイメージはKubernetesインフラストラクチャに展開されます。
技術的には、これは
dapp kube deploy
を使用して実装されます( 2019年8月13日更新:デプロイメントの詳細については、werfのドキュメントを参照)。これは、基本的にKubernetesパッケージマネージャー-Helmのラッパーであり、次のことができます。
- パラメーターをHelmに渡す機能を補完および拡張します(秘密の値とファイルを追加し、テンプレートでこれらのファイルを読み取るためのヘルパーがあります)。
-
Dappfile
コンパイルされたイメージをHelmに統合しDappfile
(イメージ名をコンパイルするためのヘルパーがあります)。
注 :私たちはGitLab CIを使用して展開しています。これは、最近の記事「GitLab CIによる本番環境での継続的な統合と配信」で書かれています:「 パート1:パイプライン 」、「 パート2:困難を克服する 」。
追加情報
2019年8月13日更新
- 「 WerfはKubernetesのCI / CDツールです(レビューおよびビデオレポート) 」 (Dmitry Stolyarov、2019年5月27日、DevOpsConf) 。
- 前述のレポート「CI / CDのDockerイメージをdappと一緒にすばやく便利に組み立てる(レビューとビデオ)」:FlantテクニカルディレクターDmitry Stolyarovのスピーチからの投稿とビデオ 。dappの最初の「チャンバー」プレゼンテーションが行われました。
- 「 dappを使用してプロジェクトを構築します。 パート1:Java ";
- 「 dappを使用してプロジェクトを構築します。 パート2:JavaScript(フロントエンド) ";
- “ dappとGitLab CIを使用してKubernetesでアプリケーションをビルドおよびインストールします ”;
- “ dappで練習します。 パート1:単純なアプリケーションの構築 ";
- “ dappで練習します。 パート2. Helmを使用したKubernetesでのDockerイメージの展開 ";
- 公式技術文書 -werf.io ;
- このドキュメントでは、 Getting Startedの説明に特別な注意が必要です。
- Telegramの公式サポートグループはwerf_ruです。
はい、これはオープンソースです!
dappのソースコードはRubyで記述され、無料のApache License 2.0の下でGitHubに公開されています(Moby / Docker、Kubernetes、Helmなどのような緊密なプロジェクトでも使用されています) 。
2019年8月13日更新: dappプロジェクトの名前がwerfに変更され、そのコードがGoに書き換えられ、ドキュメントが大幅に改善されました。
dapp を使用してプロジェクトに参加することに興味のあるDevOpsエンジニアおよびオープンソース愛好家を招待 します 。 それを探検し、質問をします(ここにコメントを書くことができます) 。 問題を指摘し、 改善を提案します。 ご清聴ありがとうございました!