これらのすべてのツールを理解しているように Draft 、 Helm および Ksonnet には、グラフの作成やkubernetes構成の展開などの機能が重複しています。
これらのツールの目的は、アプリケーションとk8s環境を記述および構成することであることを理解しています。
Draftを使用して、Dockerfile、Chartを作成できます。それでも、HelmとKsonnetでも同じことができます。
私の質問は、これらのコンポーネントがCI/CDでパイプラインを作成する場合、順序は何ですか?
例えば、
draft-> ksonnet> helmまたは
ドラフト->ヘルム-> ksonnet
要するに、draftとhelmは多かれ少なかれ補完的であり、ksonnetは直交しており、特にhelmの代替手段を提供します。
詳細な説明では、回答を3つの主要なセクションに分けます。最初のセクションでは、draftおよびhelm相互作用、2番目はksonnetが他と直交する方法を説明し、最後に、これらを尊重してこれらを理解する方法を説明するセクションCI/CDへ。
HelmとDraftは、Kubernetesのパッケージ管理システムとみなすことができるHelmが、本質的にKubernetesアプリケーション開発ツールであるDraftが提供する機能の一部を提供するという意味で補完的です。
DraftとHelmの関係は、Kubernetesアプリケーション開発を簡素化するという目標を追求するために、現在のアプリケーションタイプから推論されたメタデータを使用してHelmチャートを作成することを要約することで要約できます既存のアプリケーションを使用して、アプリケーションの開発バージョンをデプロイ/更新するために、どのようにそれを行うかについて何も知らなくてもよい。
前述のように、HelmはKubernetesベースのアプリケーション用のパッケージ管理システムです。次の機能を提供します。
Helmは、Kubernetesマニフェストのパラメーター化にテンプレート化されたYAMLアプローチを採用し、依存パッケージ間で値を共有およびオーバーライドできます。つまり、想定されるパッケージAはパッケージBに依存します。パッケージAは、パッケージBに設定された構成値を再利用でき、それらのパラメーターを独自の値でオーバーライドできます。特定の展開内のすべてのパッケージの値は、Helmコマンドラインツールを使用してオーバーライドすることもできます。
また、Helmが「Tiller」というクラスター側コンポーネントの可用性に依存して、テンプレートを具体化し、生成されたKubernetesマニフェストをクラスターにデプロイする作業を実際に行うという事実も注目に値します。
Draftの目的は、プロジェクトの実行に必要なHelmチャート/パッケージおよび対応するdockerイメージを迅速に構築およびデプロイすることにより、 Kubernetesアプリケーションの開発を劇的に簡素化する です。
ドラフトインストールガイド は、これらのピースをセットアップして自分で試してみるための詳細を提供します。
Draftは、アプリケーションヘルムチャートとDockerfileの両方を含む高レベルの「パッケージング」形式を提供することでHelmを構築します。後者は、Dockerfileにドッカーイメージを構築する機能を提供します。
最後に、特定のプログラミング言語のサポートが組み込まれており、draft create
を使用して新しいドラフトプロジェクトを最初に作成するときに、使用しているプログラミング言語とフレームワークを推測しようとします。
前述のように、Ksonnetはさまざまな意味でHelmと直交しており、異なる用語でラップされたパッケージ管理に関して本質的に同じ機能を提供します- コアコンセプトドキュメント を参照Draftと互換性がなく、Draftと同じ懸念に対処していないことに注意してください。
KsonnetとHelmは、Kubernetesマニフェストを生成および展開するために相互に互換性のないアプローチを取っているため、直交していると言います。 Helmはテンプレート化されたYAMLを使用しますが、Ksonnetは "データテンプレート"言語Jsonnet を使用してKubernetesマニフェストを生成します。また、Helmの場合のように「依存」パッケージを想定するのではなく、Ksonnetは、依存サービスを構成可能な「プロトタイプ」として表現することにより、依存サービス間の境界線を曖昧にします。最後に、マニフェストテンプレートを確認および展開するクラスター側アプリケーションに依存するのではなく、Ksonnetにはkubectl apply
に類似したapply
サブコマンドがあります。
では、これらの部品はCI/CDワークフローのどこに収まるのでしょうか?基本的に、相互に互換性のない2つのツールセットがあるため、ケースバイケースでそれらを検討してみましょう。
ドラフトデザインのQ&Aセクション によれば、アプリケーションが開発で実行されることを主に関心を持つ開発者からkubernetes、helm、およびdockerを扱う複雑さの多くを抽象化することを目的とした開発者ツールとしてのみ意味されます集まる。
これを念頭に置いて、このツールセットを含むCDアプローチでは、次のことを行う必要があります。
docker
CLIを使用してdockerイメージを構築しますhelm
CLIを使用してHelmパッケージをビルドしますhelm
CLIを使用してHelmリポジトリにHelmパッケージを展開しますhelm
CLIを使用して、適切なステージング/製品KubernetesクラスターにHelmパッケージをインストール/更新します。Ksonnet CDワークフローは、上記のhelm
ワークフローと比較してやや省略されています。
docker
CLIを使用してdockerイメージを構築しますks
CLIを使用してKsonnetマニフェストを適用するHelmを使用すると、アプリケーションのパッケージをHelmレジストリに展開して再使用できますが、Ksonnetマニフェストに 再利用可能なプロトタイプ が含まれている場合、別のKsonnetベースのアプリケーションで使用できます Ksonnetレジストリドキュメント。 で説明されているgitリポジトリで利用可能
つまり、Ksonnet定義がCI/CDでどのように処理されるかは、それらをどのgitリポジトリに格納するか、およびどのように構造化するかに大きく依存します。