Flux CLI で Flux を管理する
ターミナルから、Flux リソースの確認、調査、調整、差分表示、追跡、一時停止、トラブルシューティングを行います。
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 のダッシュボードやコミュニティのダッシュボードを追加しています。
人気のガイド
-
Push と Pull:Flux が Kubernetes にデリバリーする仕組み Git 主導の pull 型デリバリーが、デプロイ、セキュリティ、復旧の方法をどう変えるか。 -
GitRepository と Kustomization で最初のアプリケーションをデプロイする Kustomization リソースを使って Flux を Git のマニフェストに向け、同期の様子を確認します。 -
同期動作を制御する:間隔、prune、ドリフトの修正、ロールバック Flux がいつ変更を適用するか、何を削除するか、どう一時停止するか、失敗したデプロイをどう元に戻すかを決めます。 -
Flux Image Automation でイメージの更新を自動化する 新しいコンテナイメージのタグを Flux に検出させ、Git に commit させます。 -
Flux でマルチクラスターを構成する 共有インフラとクラスターごとの違いを持たせて、1 つのリポジトリから複数のクラスターを管理します。 -
Flux CD と Argo CD:GitOps ツールの選び方 アーキテクチャ、UI、Helm、シークレット、テナンシー、イメージの自動化を比較して、適切なツールを選びます。