Flux
Flux
Flux is a set of continuous and progressive delivery solutions for Kubernetes that are open and extensible.
The latest version of Flux brings many new features, making it more flexible and versatile.
Flux is a CNCF Graduated project.
GitOps
ImageOps できる
デプロイ方法: 作成するリソース
flux-system: 本体
flux CRD: 以下の2つをKustomization形式で書く
GitRepository
同期するリポジトリ
HelmRepository
Helm でインスtーるするアプリ
Exmaple
code: 構成.txt
my-k8s-gitops/
├── apps/
│ ├── base/
│ │ └── ollama/
│ │ ├── source.yaml
│ │ ├── release.yaml
│ │ └── kustomization.yaml
│ └── overlays/
│ ├── dev/
│ │ └── ollama/
│ │ ├── kustomization.yaml
│ │ └── values.yaml
│ ├── stg/
│ │ └── ollama/
│ │ ├── kustomization.yaml
│ │ └── values.yaml
│ └── prod/
│ └── ollama/
│ ├── kustomization.yaml
│ └── values.yaml
└── clusters/
├── dev/
│ └── apps.yaml
├── stg/
│ └── apps.yaml
└── prod/
└── apps.yaml
code: (bash)
# 全てのクラスターで実行
flux create source git flux-system \
--url=https://github.com/<your-user>/<your-repo> \
--branch=main \
--interval=1m
# devクラスターで実行
flux create kustomization cluster \
--source=flux-system \
--path="./clusters/dev" \
--prune=true \
--interval=5m
app環境ごとの設定
code: clusters/dev/app.yaml
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: apps
namespace: flux-system
spec:
interval: 5m
path: ./apps/overlays/dev
prune: true
sourceRef:
kind: GitRepository
name: flux-system
postBuild:
substitute:
ENVIRONMENT: dev
code: app/ollama/release.yaml
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: ollama
namespace: flux-system
spec:
interval: 10m
targetNamespace: ollama
chart:
spec:
chart: ollama # チャート名のみ
sourceRef:
kind: HelmRepository
name: bitnami install:
createNamespace: true
values:
replicaCount: ${REPLICA_COUNT}
他のアプリ追加
code: (bash)
# 例: nginxを追加
mkdir -p apps/nginx
cat <<EOF > apps/nginx/source.yaml
apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: bitnami
namespace: flux-system
spec:
interval: 10m
url: https://charts.bitnami.com/bitnami
EOF
cat <<EOF > apps/nginx/release.yaml
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: nginx
namespace: flux-system
spec:
interval: 10m
targetNamespace: nginx
chart:
spec:
chart: nginx
sourceRef:
kind: HelmRepository
name: bitnami
install:
createNamespace: true
EOF
CLI
code: (bash)
# 同期: 特定アプリ
flux reconcile helmrelease ollama