6 Fleet #
Fleetは、ユーザがローカルクラスタをより細かく制御できるようにするとともに、GitOpsを通じて常時監視を行えるようにすることを目的に設計されたコンテナ管理およびデプロイメントエンジンです。Fleetはスケール能力に重点を置いているだけでなく、クラスタに何がインストールされているかを正確に監視するための高度な制御と可視性もユーザに提供します。
Fleetは、生のKubernetes YAML、Helmチャート、Kustomize、またはこれら3つの組み合わせのGitからデプロイメントを管理できます。ソースにかかわらず、すべてのリソースは動的にHelmチャートに変換され、すべてのリソースをクラスタにデプロイするエンジンとしてHelmが使用されます。その結果、ユーザはクラスタの高度な制御、一貫性、監査能力を実現できます。
Fleetの仕組みについては、こちらのページを参照してください。
6.1 Helmを使用したFleetのインストール #
FleetはRancherにビルトインされていますが、Helmを使用して、スタンドアロンアプリケーションとして任意のKubernetesクラスタにインストールすることもできます。
6.2 RancherでのFleetの使用 #
Rancherは、Fleetを使用してアプリケーションを管理対象クラスタ全体にデプロイします。Fleetを使用した継続的デリバリにより、大量のクラスタで実行されるアプリケーションを管理するために設計された、大規模なGitOpsが導入されます。
FleetはRancherと統合してその一部として機能します。Rancherで管理されるクラスタには、インストール/インポートプロセスの一部としてFleetエージェントが自動的にデプロイされるため、クラスタはすぐにFleetで管理できるようになります。
6.3 Rancher UIでのFleetへのアクセス #
FleetはRancherにプリインストールされており、Rancher UIの[Continuous Delivery (継続的デリバリ)]オプションで管理されます。継続的デリバリに関する追加情報、およびFleetのトラブルシューティングに関する他のヒントについては、こちらを参照してください。
[Continuous Delivery (継続的デリバリ)]セクションは次の項目で構成されます。
6.3.1 Dashboard (ダッシュボード) #
すべてのワークスペースにわたるすべてのGitOpsリポジトリの概要ページ。リポジトリのあるワークスペースのみが表示されます。
6.3.2 Git repos (Gitリポジトリ) #
選択したワークスペース内のGitOpsリポジトリのリスト。ページ上部のドロップダウンリストを使用してアクティブなワークスペースを選択します。
6.3.3 Clusters (クラスタ) #
管理対象クラスタのリスト。デフォルトでは、Rancherで管理されているすべてのクラスタがfleet-default
ワークスペースに追加されます。fleet-local
ワークスペースにはローカル(管理)クラスタが含まれます。ここから、クラスタをPause
(一時停止)
またはForce Update
(強制的に更新)
したり、クラスタを別のワークスペースに移動したりすることができます。クラスタを編集すると、クラスタのグループ化に使用するラベルや注釈を更新できます。
6.3.4 Cluster groups (クラスタグループ) #
このセクションでは、セレクタを使用してワークスペース内のクラスタのカスタムグループを作成できます。
6.3.5 Advanced (詳細) #
[Advanced (詳細)]セクションでは、ワークスペースやその他の関連するFleetリソースを管理できます。
6.4 Rancher Dashboardを使用してRancherおよびFleetとともにKubeVirtをインストールする例 #
fleet.yaml
ファイルを含むGitリポジトリを作成します。defaultNamespace: kubevirt helm: chart: "oci://registry.suse.com/edge/kubevirt-chart" version: "0.2.4" # kubevirt namespace is created by kubevirt as well, we need to take ownership of it takeOwnership: true
Rancher Dashboardで、☰ > [Continuous Delivery (継続的デリバリ)] > [Git Repos (Gitリポジトリ)]に移動して、[
Add Repository (リポジトリの追加)
]をクリックします。リポジトリの作成ウィザードの指示に従ってGitリポジトリを作成します。[Name (名前)]、[Repository URL (リポジトリのURL)](前の手順で作成したGitリポジトリを参照)を指定し、適切なブランチまたはリビジョンを選択します。より複雑なリポジトリの場合は、[Paths (パス)]を指定して、1つのリポジトリで複数のディレクトリを使用します。
[
Next (次へ)
]をクリックします。次の手順では、ワークロードをデプロイする場所を定義できます。クラスタの選択では複数の基本オプションがあります。クラスタをまったく選択しないことも、すべてのクラスタを選択することも、特定の管理対象クラスタやクラスタグループ(定義されている場合)を直接選択することもできます。[Advanced (詳細)]オプションを使用すると、YAML経由でセレクタを直接編集できます。
[
Create (作成)
]をクリックします。リポジトリが作成されます。今後、ワークロードはリポジトリ定義に一致するクラスタにインストールされ、同期が維持されます。
6.5 デバッグとトラブルシューティング #
ナビゲーションの[Advanced (詳細)]セクションでは、下位レベルのFleetリソースの概要が表示されます。バンドルは、Gitからのリソースのオーケストレーションに使用される内部リソースです。Gitリポジトリがスキャンされると、バンドルが1つ以上生成されます。
特定のリポジトリに関連するバンドルを見つけるには、[Git Repos (Gitリポジトリ)]の[Detail
(詳細)]ページに移動し、[Bundles (バンドル)
]タブをクリックします。
クラスタごとに、作成されたBundleDeploymentリソースにバンドルが適用されます。BundleDeploymentの詳細を表示するには、[Git
Repos (Gitリポジトリ)]の[Detail (詳細)]ページの右上にある [Graph
(グラフ)
]ボタンをクリックします。[Repo (リポジトリ)
]>[Bundles
(バンドル)]>[BundleDeployments]のグラフがロードされます。グラフ内のBundleDeploymentをクリックすると詳細が表示され、[Id
(ID)
]をクリックするとBundleDeployment YAMLが表示されます。
Fleetのトラブルシューティングのヒントに関する追加情報については、こちらを参照してください。
6.6 Fleetの例 #
Edgeチームは、Fleetを使用してEdgeプロジェクトをインストールする例を含むリポジトリを維持しています。
Fleetプロジェクトには、Gitリポジトリ構造のすべてのユースケースをカバーするfleet-examplesリポジトリが含まれています。