Dappの公式紹介-DevOps CI / CDメンテナンスユーティリティ

このブログの読者、および最新のHighLoad ++およびRIT ++の訪問者は、dapp DevOpsエンジニア向けのユーティリティについて既に聞いたことがあると思いますが、今では正式に、そして最終的に「ビッグワールド」に提示することにしました。 これに対する正式な権利は、1年以上にわたってdappと協力して生産上の問題を解決してきたという事実によって与えられているため、より多くの使用のために技術が成熟したと考えています。



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







したがって、dappは、 CI / CDプロセスを実装および保守するためのオープンソースプロジェクトとしてFlantで作成されたRubyで作成されたツールです。 彼は何を許可していますか?



組立イメージ



初めてdappについて説明したとき( postvideo )、このユーティリティを使用してDockerコンテナのイメージを構築することについて話していました。 レポート全体を再説明するわけではありませんが、dappの主な機能をリストします(Dappfileで説明されているイメージ構成を使用)。これにより、イメージを迅速かつ効率的に組み立てることができます。



  1. イメージアセンブリの4つの段階( before_install



    install



    before_setup



    setup



    )、その結果はキャッシュされます(イメージの再組み立ての速度を大幅に向上させます)。
  2. ビルド中に使用されるが、最終イメージから除外されるディレクトリをマウントするための「外部コンテキスト」。
  3. Gitとの思慮深い作業。新しいビルドでイメージにデルタのみを追加( git patch apply



    )し、これらのパッチの内容をキャッシュします。
  4. 「アーティファクト」-サードパーティ製ツールをプロジェクトのアセンブリ段階で使用できますが、最終イメージに含めることはできません。 キャッシュはアーティファクトに対してもサポートされていますDocker 17.06の最近のリリースでは、この機能はマルチステージビルドの登場によりあまり重要ではなくなりました)
  5. Chefサポート。レシピ(クックブック)に従ってDockerイメージでシステムを構成できます。


Ansibleのサポートで後者を補完することを計画し、この問題の関連性は増加しているだけですが、実際の実装はまだ意図に遅れています。



Kubernetesでの展開



しかし、継続的な統合とアプリケーション配信のプロセスの他のコンポーネントの分野で、イメージアセンブリの範囲を超えてdappの機能を拡張するという別の重要な方向に進みました。 dappの初期展開サポートは、コンテナのオーケストレーションに使用するKubernetesシステムとの統合の可能性を示しました(最近、より詳細に説明しました:「 小規模プロジェクトでのKubernetesでの経験(レビューおよびビデオレポート) 」) 。 この機能の本質は次のとおりです。



  1. Kubernetesの場合、YAML構成が準備されます。YAML構成は、目的の回路(生産、ステージング、テストなど)ごとに異なる場合があり、アプリケーションおよびインフラストラクチャコード(たとえば、 backend.yaml



    frontend.yaml



    ファイル、特別なディレクトリ.kube/



    )。
  2. 作成された構成はkubectl



    ユーティリティにkubectl



    れ、必要なKubernetesクラスターにクラスターに記述されたインフラストラクチャが展開されます(ここでも、クラスターは回路ごとに異なる場合があります)。
  3. Dockerで作成されたイメージはKubernetesインフラストラクチャに展開されます。


技術的には、これはdapp kube deploy



を使用して実装されます( 2019年8月13日更新:デプロイメントの詳細については、werfのドキュメントを参照)。これは、基本的にKubernetesパッケージマネージャー-Helmのラッパーであり、次のことができます。



  1. パラメーターをHelmに渡す機能を補完および拡張します(秘密の値とファイルを追加し、テンプレートでこれらのファイルを読み取るためのヘルパーがあります)。
  2. Dappfile



    コンパイルされたイメージをHelmに統合しDappfile



    (イメージ名をコンパイルするためのヘルパーがあります)。


:私たちはGitLab CIを使用して展開しています。これは、最近の記事「GitLab CIによる本番環境での継続的な統合と配信」で書かれています:「 パート1:パイプライン 」、「 パート2:困難を克服する 」。



追加情報





2019年8月13日更新





はい、これはオープンソースです!



dappのソースコードはRubyで記述され、無料のApache License 2.0の下でGitHubに公開されています(Moby / Docker、Kubernetes、Helmなどのような緊密なプロジェクトでも使用されています)



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



dapp 使用してプロジェクトに参加することに興味のあるDevOpsエンジニアおよびオープンソース愛好家を招待 します 。 それを探検し、質問をします(ここにコメントを書くことができます)問題を指摘し、 改善を提案します。 ご清聴ありがとうございました!



All Articles