Flux Bootstrap

Ziel

Dieses Dokument beschreibt die initiale Installation von FluxCD mittels Flux Operator sowie die Anbindung eines Git-Repositories an einen Cluster.

Voraussetzungen

  • Kubernetes Cluster verfügbar

  • kubectl konfiguriert

  • Helm installiert

  • Flux Git Repository vorhanden

  • Age Schlüssel vorhanden

Variablen

export GIT_USERNAME=git
export GIT_TOKEN=FIXME
export KEY_FP=78F9A6BF5A56051C803F55A80C55F3BC10960BBA
export CLUSTER_NAME=FIXME

Installation des Flux Operators

helm install flux-operator \
  oci://ghcr.io/controlplaneio-fluxcd/charts/flux-operator \
  --namespace flux-system \
  --create-namespace

Git Zugangsdaten

kubectl create secret generic flux-system \
  --namespace flux-system \
  --from-literal=username=${GIT_USERNAME} \
  --from-literal=password=${GIT_TOKEN}

Age Schlüssel

cat ~/.config/sops/age/keys.txt |
kubectl create secret generic sops-age \
  --namespace=flux-system \
  --from-file=age.agekey=/dev/stdin

Erstellung der FluxInstance

cat << EOF | kubectl create -f -
apiVersion: fluxcd.controlplane.io/v1
kind: FluxInstance
metadata:
  name: flux
  namespace: flux-system
  annotations:
    fluxcd.controlplane.io/reconcileEvery: "1h"
    fluxcd.controlplane.io/reconcileTimeout: "5m"
spec:
  distribution:
    version: "2.9.x"
    registry: "ghcr.io/fluxcd"
  components:
    - source-controller
    - kustomize-controller
    - helm-controller
  cluster:
    type: kubernetes
    size: small
    multitenant: false
    networkPolicy: true
    domain: "cluster.local"
  sync:
    kind: GitRepository
    url: https://codeberg.org/tamay/fluxcd.git
    ref: refs/heads/main
    path: clusters/${CLUSTER_NAME}
    pullSecret: flux-system
EOF

Verifikation

Prüfen ob Flux erfolgreich installiert wurde:

kubectl get fluxinstances -A

kubectl get pods -n flux-system

flux get all -A

Die Kustomizations und GitRepositories sollten den Status Ready besitzen.