バンドルライフサイクル

バンドルは、gitからリソースをオーケストレーションするために使用される内部リソースです。GitRepoがスキャンされると、1つ以上のバンドルが生成されます。

SUSE® Rancher Prime Continuous Deliveryバンドルのライフサイクルを示すために、 multi-cluster/helmをケーススタディとして使用します。

  1. ユーザーは、multi-cluster/helmリポジトリを指すGitRepoを作成します。

  2. `gitjob-controller`はGitRepoから変更を同期し、ポーリングまたはwebhook eventからの変更を検出します。すべてのコミット変更に対して、`gitjob-controller`はgitリポジトリをクローンし、`fleet.yaml`やその他のマニフェストなどのリポジトリからコンテンツを読み取り、SUSE® Rancher Prime Continuous Deliveryバンドルを作成するジョブを生成します。

    イメージ名`rancher/tekton-utils`を持つジョブポッドは、GitRepoと同じネームスペースに配置されます。

  3. その後、`fleet-controller`はバンドルから変更を同期します。ターゲットに応じて、`fleet-controller`はバンドルとターゲットクラスターの組み合わせである`BundleDeployment`リソースを作成します。

  4. その後、`fleet-agent`はSUSE® Rancher Prime Continuous Deliveryコントロールプレーンから`BundleDeployment`を取得します。エージェントは、`BundleDeployment`からダウンストリームクラスターへの Helmチャートとしてバンドルマニフェストをデプロイします。

  5. `fleet-agent`はアプリケーションバンドルを監視し、次の順序でステータスを報告し続けます: bundledeployment > バンドル > GitRepo > クラスター。

この図は、バンドルがデプロイされるまでに通過するさまざまなレンダリングステージを示しています。

バンドルステージ

CLIを使用したバンドルライフサイクルの検証

いくつかのFleet CLIコマンドが、バンドルのデバッグに役立ちます。

Fleet CLIの主要コマンドの動作を説明する図

fleet apply

Applyは、Helmチャート、マニフェスト、またはKustomizeフォルダーなどのKubernetesリソースを含むフォルダーをSUSE® Rancher Prime Continuous Deliveryバンドルリソースにレンダリングします。

git clone https://github.com/rancher/fleet-test-data
cd fleet-test-data
fleet apply -n fleet-local -o bundle.yaml testbundle simple-chart/

`fleet apply`を使用してバンドルを作成する方法に関する詳細情報は、バンドルに関するセクションで見つけることができます。

fleet target

Targetはファイルからバンドルを読み込み、ライブクラスターと連携して`bundledeployment`および`content`リソースを出力します。これはFleetコントローラーが作成するものです。ネームスペースを引数として受け取るため、例えばクラスターリソースをそのネームスペース内で探すことができます。"ターゲティング"中に使用されるデータ構造をダンプすることもできるため、ラベルやクラスター名に関して取られた決定を確認できます。

フリートデプロイ

デプロイは`fleet target`の出力、またはダンプされたバンドルデプロイメント/コンテンツリソースを受け取り、それをクラスターにデプロイします。これはFleet agentが行うことと同様です。ドライランモードでは、helmを使ってインストールするのではなく、生成されるリソースを出力します。コマンドは入力リソースを作成しないため、実行中のFleet agentがデプロイメントをガーベジコレクトする可能性があります。

デプロイコマンドは、エアギャップ(された)クラスターにバンドルを持ち込むために使用できます。

ライフサイクルCLI

Fleet CLIコマンドは、バンドルライフサイクルのデバッグと理解を助けます。以下の例は、CLIを使用した完全なバンドルライフサイクルを示しています:

git clone https://github.com/rancher/fleet-test-data
cd fleet-test-data
fleet apply -n fleet-local -o bundle.yaml testbundle simple-chart/
fleet target --bundle-file bundle.yaml --list-inputs  > bd.yaml
fleet deploy --input-file bd.yaml --dry-run

applyに関する情報は、バンドルリソースの作成を参照してください。