Flux CD Flux CD

Flux CLI で Flux を管理する

ターミナルから、Flux リソースの確認、調査、調整、差分表示、追跡、一時停止、トラブルシューティングを行います。

10 min learn.level.初級

Flux には、組み込みの Web UI がありません。日々の作業はすべて flux CLI と kubectl を通じて行われ、それがスクリプト化を容易にもしています。このガイドは、Flux が bootstrap 済みで、前のガイドの webapp の Kustomization が存在することを前提としています。

CLI をインストールしてクラスターを確認する

CLI をインストールし(macOS では brew install fluxcd/tap/flux、または curl -s https://fluxcd.io/install.sh | sudo bash)、確認します。

flux --version
flux check --pre   # インストール前:クラスターは互換性がありますか?
flux check         # インストール後:コントローラーは正常ですか?

flux --help でコマンドを一覧表示します。ほとんどのコマンドは、デフォルトで flux-system namespace から読み取ります。あらゆる場所を見るには -A(--all-namespaces)、特定のものには -n <namespace> を追加します。

存在するものを確認する

flux get all -A
flux get sources git
flux get kustomizations
flux get helmreleases -A

各行は、オブジェクトのリビジョン、Ready かどうか、一時停止中かどうか、最新のステータスメッセージを表示します。何かがおかしく見えるとき、flux get all -A は最初に実行する良いコマンドです。オブジェクト同士の関係を見るには:

flux tree kustomization flux-system
flux trace deployment webapp -n webapp

tree は、Kustomization が管理するすべてを一覧表示します。trace は逆方向です。稼働中のオブジェクトが与えられると、それがどの Kustomization、どの Git の source とリビジョンから来たかを示します。

必要に応じて調整する

Flux は、一定の間隔でポーリングします。今すぐ強制するには:

flux reconcile source git flux-system
flux reconcile kustomization webapp --with-source
flux reconcile helmrelease podinfo -n podinfo

--with-source は、適用の前に Git の source を更新するため、プッシュしたばかりの commit がすぐに取り込まれます。

push する前にプレビューする

2 つのコマンドが、クラスターを変更せずにレンダリングして比較します。コードレビューや CI で便利です。

flux build kustomization webapp --path ./apps/webapp --dry-run
flux diff kustomization webapp --path ./apps/webapp

build は、Flux が適用するマニフェストを出力します。diff は、それを稼働中のものと比較します。どちらもローカルのフォルダーから読み取るため、リポジトリの clone から実行してください。

トラブルシューティング

flux logs --all-namespaces --level=error --follow
flux events --for Kustomization/webapp
kubectl describe kustomization webapp -n flux-system

flux logs はコントローラーのログをストリーミングし、flux events は特定のオブジェクトの Kubernetes イベントを表示し、kubectl describe はオブジェクトの状態と最新のエラーを表示します。Kustomization が失敗する一般的な原因は、間違った path、欠けている依存関係(dependsOn を確認)、無効な YAML、wait: true が設定されているときのヘルスチェックの失敗です。GitRepository が詰まっている場合、describe は通常、認証エラーを表示します。

YAML を書かずにリソースを作成する

ほとんどの flux create コマンドは、適用する代わりに YAML を出力できます。出力を Git に commit すれば、すべてが宣言的に保たれます。

flux create source git webapp-config \
  --url=https://github.com/your-org/webapp-config \
  --branch=main --interval=1m --export > webapp-source.yaml

flux create kustomization webapp \
  --source=GitRepository/webapp-config \
  --path=./apps/webapp --prune=true --interval=10m --export > webapp.yaml

--export なしでは、コマンドはオブジェクトを直接適用します。実験にはいいですが、クラスターが Git と同期しなくなります。既存のオブジェクトを YAML としてダンプするには、flux export を使います。

flux export source git --all
flux export kustomization --all

一時停止、再開、クリーンアップ

flux suspend kustomization webapp
flux resume kustomization webapp
flux delete kustomization webapp
flux uninstall

suspend は調整を停止し、resume は再開します。delete は Kustomization を削除し、prune: true の場合は、それが管理しているリソースも削除するため、少し時間がかかることがあります。uninstall は、Flux 自体をクラスターから削除します。その後、flux get kustomizations を実行して確認します。

便利な追加機能

  • flux stats は、Flux のリソースがいくつ存在し、そのうちいくつが準備完了かを要約します。
  • Flux 2.9 では、mirror や schema などのプラグインを備えた、CLI プラグインシステム(flux plugin)が追加されました。お使いのバージョンが提供するものは、flux plugin --help で確認してください。
  • UI がないため、多くのチームは、Flux が公開するメトリクスの上に、Grafana のダッシュボードやコミュニティのダッシュボードを追加しています。

人気のガイド