Fleet入門 ~ArgoCDじゃないマルチクラスタ向けGitOpsツール Fleet とは~

384 Views

August 28, 25

スライド概要

RancherJP Online Meetup #07 の LTスライド
https://rancherjp.connpass.com/event/365378/

#Kubernetes #Rancher #GitOps #Fleet

profile-image

嫁と子供と酒で出来ているインフラエンジニア。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

2025-08-28 RancherJP Online Meetup #07 LT Fleet 入門 ~ArgoCD じゃないマルチクラスタ向け GitOps ツール Fleet とは~ やっさん @yassan168 #rancherjp

2.

今日のゴール ArgoCD以外のGitOpsツールとして Rancherならすぐ使える Fleet について、 コンセプトや使い所を知ってもらう。

3.

おことわり Fleet 自体はRancher無しでも利用 可。 が、今回はRancherと組み合わせて使った 場合に限定して話します。

4.

アーキテクチャの説明 ざっくりな図 Git リポジトリ Downstream Cluster A BundleDeployment(指示) fleet-agent K8s API pull fleet-controller + gitjob デプロイリソース の状態を通知 デプロイリソース の状態を通知 Downstream Cluster B K8s API BundleDeployment(指示) Fleet Manager(=Rancher) fleet-agent K8s API

5.

主要コンポーネントの説明 コンポーネントと役割 fleet-controller / gitjob 管理クラスタ側のコントローラ群。 Git を監視・取得し、スキャン内容から Bundle を生成、対象クラスタご とに BundleDeployment を作成。 fleet-agent 下流クラスタに 1 Pod。 管理クラスタの自クラスタ用 Namespace にある BundleDeployment を watch し、テンプレート(Helm/Kustomize/Raw YAML)をレンダリング& 適用

6.

主要カスタムリソースの説明 GitRepo サイズ制約 に 注意(上限 gzip圧縮し て 1MB 未満 ) リポジトリとスキャン対象を記述。 paths を使ってフィルタ可能(=分割して管理出来る)。 リポジトリ中のfleet.yaml/Chart.yaml/kustomization.yaml から自動で 判定。これを元にBundleを作成。 Bundle / BundleDeployment Bundleはリポジトリの論理なデプロイ単位に分けたリソースの集合。 BundleDeploymentは、クラスタ固有のカスタマイズをしたBundleの状態 とデプロイリソース状態も管理。 Cluster / ClusterGroup クラスタ または クラスタのグループ化 の定義。 Workspace(fleet-default/fleet-local)の概念と紐付き。

7.

大事なポイント 基本思想 GitOps × 大規模な”多”クラスタ 二段階 Pull モデル 1. Fleet Controller(Rancher) が Gitリポジトリ から取り込み 2. Downstream Cluster の Fleet Agent が Fleet Controller の K8s API を読み、指示(BundleDeployment)に基づいて自身のクラスタへ適用 デプロイについて ● GitRepoを元にGitリポジトリをBundle としてまとめる ○ ○ Raw YAML(単純なマニフェスト)・Kustomise・Helmは混在してOK 最終的にはHelmに変換して、レンダリングして適用している ● Bundleを対象クラスタごとの BundleDeployment に改変し ロールアウト状況を監視

8.

Fleet v0.13の話 正確にはGitOpsからズレるが、、、 • HelmOpsって概念が爆誕 • Helmチャートを直接使った管理方法が追加 • Helmのvalueについては、Downstream Cluster 側のConfigMap・Secretsを使って 最終的に改変出来る(ただし、罠が増えるので注意) • OCIストレージへの対応 • Bundleはカスタムリソースである事からetcdの制約でサイズが1MB上限 • OCIストレージを使うことでその上限から開放される

9.

あ、うち、 大規模な”多”クラスタじゃないんで、、、

10.

大規模な”多”クラスタじゃなくてもアリ。 Fleetにあうのは、、 クラスタ横断で同一に保ちたい基盤とCRD本体を ルールベースにまとめて配布・維持したい場所 ArgoCDにあうのは、、 アプリとその周辺(CR実体・SLO/監視・ネットワークの穴あけ)を、 頻繁な変更と素早いロールバックで安全に運用したい場所 Fleet向き ● ● ● ● ● 対象はCluster/Globalスコープか 全クラスタで同一にしたいか 変更は月次以下か 失敗時の影響がクラスタ全体に及ぶか CRDそのものか ArgoCD向き ● ● ● ● ● Namespaceスコープ中心か 週次〜日次で変えるか(リリースが多い) ロールバック即時が欲しいか 監視/Alertがサービス固有か CR(CRDの実体)か

11.

参考 ● 用語:https://fleet.rancher.io/glossary ● コンセプト ○ https://fleet.rancher.io/concepts ● アーキテクチャ ○ ○ ○ ○ ○ ○ https://fleet.rancher.io/0.13/architecture https://fleet.rancher.io/0.13/ref-bundle-stages https://fleet.rancher.io/0.13/resources-during-deployment https://fleet.rancher.io/0.13/gitrepo-content#using-helm-values https://fleet.rancher.io/0.13/namespaces https://fleet.rancher.io/oci-storage ● Fleet利用する際のGitリポジトリサンプル ○ https://github.com/rancher/fleet-examples ● Best Practices - Argo CD - Declarative GitOps CD for Kubernetes https://argo-cd.readthedocs.io/en/stable/user-guide/best_practices/ ● Top 30 Argo CD Anti-Patterns to Avoid When Adopting Gitops https://codefresh.io/blog/argo-cd-anti-patterns-for-gitops/ ●

12.

おまけ。 今回のLT向けに構築した環境のスクショ Windows11 on WSL2 & Rancher Desktopで、 Rancher DesktopのK8sはオフにして、K3dでクラスタを作ったクラスタで 構成。