Flux CD Flux CD

Flux をインストールしてクラスターを bootstrap する

Flux CLI をインストールし、事前チェックを実行し、Flux が Git から自分自身を管理するように bootstrap します。

10 min learn.level.初級

このガイドでは、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 ですべてが削除されます。

人気のガイド