Flux をインストールしてクラスターを bootstrap する
Flux CLI をインストールし、事前チェックを実行し、Flux が Git から自分自身を管理するように bootstrap します。
このガイドでは、Flux CLI をインストールし、Flux をクラスターに bootstrap し、それが Git リポジトリに何を commit したかを確認します。自由に試せるクラスターに対して kubectl が設定されている必要があります。ローカルの kind や minikube のクラスターが最適で、リポジトリを保持するための GitHub アカウントも必要です。
クラスターを作成して CLI をインストールする
使い捨てのローカルクラスターの場合:
kind create cluster --name flux-demo
kubectl get nodes
Homebrew、または Linux ではインストールスクリプトで Flux CLI をインストールします。
brew install fluxcd/tap/flux
# または
curl -s https://fluxcd.io/install.sh | sudo bash
動作を確認します。
flux --version
リリースページからバイナリをダウンロードすることもできます。Flux は直近 3 つの Kubernetes のマイナーバージョンをサポートしているため、比較的新しいクラスターを使ってください。
事前チェックを実行する
kubectl がクラスターを指している状態で、クラスターに互換性があるかを Flux に尋ねます。
flux check --pre
Kubernetes のバージョンと、前提条件が満たされていることを示す最後の 1 行が表示されるはずです。
personal access token を作成する
bootstrap には、リポジトリの作成、commit の push、deploy key の登録のために、トークンが必要です。GitHub で、repo スコープを持つ classic の personal access token、またはターゲットのリポジトリの Contents と Administration に対する読み書きアクセスを持つ fine-grained のトークンを作成します。現在のシェルにエクスポートします。
export GITHUB_TOKEN=<your-token>
トークンは bootstrap の間だけ CLI によって使われます。デフォルトでは、Flux は長期的なアクセスのために SSH の deploy key を作成し、トークンはクラスターには保存されないため、短い有効期限(数か月ではなく数日)で問題ありません。
Flux を bootstrap する
個人アカウントに対して bootstrap を実行します。リポジトリが存在しない場合は作成されます。
flux bootstrap github \
--owner=<your-github-user> \
--repository=fleet-infra \
--branch=main \
--path=clusters/dev \
--personal
組織の場合は、--personal を省略します。重要なフラグは次のとおりです。
--repositoryは、Flux が自身のマニフェストと、後でアプリケーションの設定を保存する場所です。--pathは、このクラスターが同期するリポジトリ内のフォルダです。クラスターごとに 1 つのパス(clusters/devとclusters/productionなど)を使うと、1 つのリポジトリで多くのクラスターに対応できます。--branchは、Flux が commit し、追跡するブランチです。
このコマンドは、GitHub に接続し、リポジトリを clone し、Flux のマニフェストを生成し、commit して push し、Flux をクラスターにインストールし、コントローラーが準備完了になるのを待ちます。後で出会う 2 つのバリエーションがあります。
--token-authは、SSH の deploy key を生成する代わりに、personal access token 自体を HTTPS 経由で使います。--read-write-keyは、deploy key に書き込みアクセスを与えます。イメージの自動化のように、Flux 自身が commit を push する場合に必要です。
bootstrap は再実行しても安全です。新しい CLI で実行するとコントローラーがアップグレードされ、渡した追加のオプションも反映されます。
インストールを確認する
flux check
kubectl get pods -n flux-system
flux check は、各コントローラーが正常であると報告します。source、kustomize、helm、notification のコントローラーが動作しているのが見えるはずです。次に、Flux が何を commit したかを確認します。
git clone https://github.com/<your-github-user>/fleet-infra.git
cd fleet-infra
tree clusters
clusters/
└── dev/
└── flux-system/
├── gotk-components.yaml # Flux のコントローラーと CRD
├── gotk-sync.yaml # このリポジトリ自身を指す GitRepository と Kustomization
└── kustomization.yaml
gotk は GitOps Toolkit の略です。gotk-sync.yaml の 2 つのオブジェクトが、この構成の中心です。
flux get sources git
flux get kustomizations
flux-system の GitRepository は、リポジトリの場所と追跡するブランチを source-controller に伝えます。flux-system の Kustomization は、そのリポジトリの ./clusters/dev 配下のすべてを適用するよう kustomize-controller に伝えます。そのパスの下に追加したものは、自動的に取り込まれます。次のガイドでアプリケーションをデプロイする仕組みがこれです。
クリーンアップ
Flux をクラスターから削除するには:
flux uninstall
これにより、コントローラーと CRD、そして Flux がクラスター内で管理しているリソースが削除されます。Git リポジトリは削除されません。ローカルでの実験なら、kind delete cluster --name flux-demo ですべてが削除されます。
人気のガイド
-
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、シークレット、テナンシー、イメージの自動化を比較して、適切なツールを選びます。