🐥
fluxをkindにインストールして使う
fluxとは
GitOpsツール。
fluxでは、flux専用のリポジトリを作成し、そこにデプロイしたいマニフェストファイル一式を入れておくイメージ。
GitOpsなので、Git上の差分を検知して自動的にデプロイをかける。
ArgoCD違いは、やはり専用のリポジトリを作る必要があるというところでしょうか。あとは、fluxではGUIは用意されていないはず。
インストール
クラスタ作成
kind create cluster
前提チェック
flux check --pre
► checking prerequisites
✔ Kubernetes 1.24.7-eks-fb459a0 >=1.20.6-0
✔ prerequisites checks passed
初期化
Github上にfleet-infraリポジトリが、./clusters/my-clusterにマニフェストファイルが作成されている
資格情報をあらかじめセットしておく
export GITHUB_TOKEN=<your-token>
export GITHUB_USER=<your-username>
flux bootstrap github \
--owner=$GITHUB_USER \
--repository=fleet-infra-kind \
--branch=main \
--path=./clusters/my-cluster \
--personal
このコマンドでクラスタにflux-system namespaceが作成されて、いくつかPodがデプロイされる。やり直したい場合、一度flux-namespaceを消してしまうと手っ取り早いかも。
このような感じで作成される
使ってみる
gitclone
git@github.com:vampire-yuta/fleet-infra-kind.git
cd fleet-infra-kind
PodInfoマニフェストファイルを組み入れる
flux create source git podinfo \
--url=https://github.com/stefanprodan/podinfo \
--branch=master \
--interval=30s \
--export > ./clusters/my-cluster/podinfo-source.yaml
リポジトリへPush
git add -A && git commit -m "Add podinfo GitRepository"
git push
デプロイ
flux create kustomization podinfo \
--target-namespace=default \
--source=podinfo \
--path="./kustomize" \
--prune=true \
--interval=5m \
--export > ./clusters/my-cluster/podinfo-kustomization.yaml
git add -A && git commit -m "Add podinfo Kustomization"
git push
状況確認
flux get kustomizations --watch
出力結果
podinfoなるものがデプロイされている様子が分かる
NAME REVISION SUSPENDED READY MESSAGE
flux-system main/b1a4792 False True Applied revision: main/b1a4792
flux-system main/b1a4792bb4694c207a4779b8799a67d087f8b38f False Unknown Reconciliation in progress
flux-system main/b1a4792bb4694c207a4779b8799a67d087f8b38f False Unknown Reconciliation in progress
flux-system main/b1a4792bb4694c207a4779b8799a67d087f8b38f False Unknown Reconciliation in progress
flux-system main/b1a4792bb4694c207a4779b8799a67d087f8b38f False Unknown Reconciliation in progress
podinfo False False waiting to be reconciled
podinfo False False waiting to be reconciled
flux-system main/b1a4792 False True Applied revision: main/8537aa0
flux-system main/8537aa0 False True Applied revision: main/8537aa0
podinfo False Unknown Reconciliation in progress
podinfo False Unknown Reconciliation in progress
podinfo False Unknown Reconciliation in progress
podinfo False Unknown Reconciliation in progress
podinfo False True Applied revision: master/8615cb7
podinfo master/8615cb7 False True Applied revision: master/8615cb7
クラスタにもデプロイされている
yuta main ~ fleet-infra-kind 1 kubectl -n default get deployments,services
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/podinfo 2/2 2 2 107s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 10m
service/podinfo ClusterIP 10.96.126.23 <none> 9898/TCP,9999/TCP 107s
参考
Discussion