Zum Hauptinhalt springen
Version: 3.0.0-alpha (Diátaxis)

Mit Flux bereitstellen (GitOps)

Diese Anleitung erklärt, wie Sie FluxCD auf einem Kubernetes-Hikube-Cluster aktivieren und konfigurieren, um Ihre Anwendungen nach dem GitOps-Ansatz bereitzustellen: ein Git-Repository als einzige Wahrheitsquelle für den Zustand Ihres Clusters.

Voraussetzungen

  • Ein bereitgestellter Kubernetes-Hikube-Cluster (siehe Schnellstart)
  • kubectl konfiguriert für die Interaktion mit der Hikube-API
  • Ein erreichbares Git-Repository mit Ihren Kubernetes-Manifesten
  • Die kubeconfig des Child-Clusters abgerufen

Schritte

1. Git-Repository vorbereiten

Organisieren Sie Ihr Git-Repository mit einer Verzeichnisstruktur, die Ihre Kubernetes-Manifeste enthält:

k8s-manifests/
├── namespaces/
│ └── production.yaml
├── apps/
│ ├── frontend/
│ │ ├── deployment.yaml
│ │ ├── service.yaml
│ │ └── ingress.yaml
│ └── backend/
│ ├── deployment.yaml
│ └── service.yaml
└── config/
└── configmaps.yaml
Tipp

Flux synchronisiert alle YAML-Manifeste, die im Zielverzeichnis und seinen Unterverzeichnissen gefunden werden. Organisieren Sie Ihre Dateien logisch, um die Wartung zu erleichtern.

2. FluxCD-Addon aktivieren

Ändern Sie die Konfiguration Ihres Clusters, um FluxCD mit der URL Ihres Repositorys zu aktivieren:

cluster-gitops.yaml
apiVersion: apps.cozystack.io/v1alpha1
kind: Kubernetes
metadata:
name: my-cluster
spec:
controlPlane:
replicas: 3

nodeGroups:
general:
minReplicas: 2
maxReplicas: 5
instanceType: "s1.large"
ephemeralStorage: 50Gi
roles:
- ingress-nginx

addons:
certManager:
enabled: true
ingressNginx:
enabled: true
hosts:
- app.example.com
fluxcd:
enabled: true
valuesOverride:
gitRepository:
url: "https://github.com/company/k8s-manifests"
branch: "main"
Hinweis

Für private Git-Repositories konfigurieren Sie die SSH- oder Token-Authentifizierung im Child-Cluster nach der Bereitstellung von Flux.

3. Cluster-Konfiguration anwenden

kubectl apply -f cluster-gitops.yaml

# Warten, bis der Cluster und die Addons bereit sind
kubectl get kubernetes my-cluster -w

4. Synchronisation beobachten

Prüfen Sie, ob Flux Ihr Git-Repository korrekt synchronisiert:

export KUBECONFIG=cluster-admin.yaml

# GitRepository prüfen
kubectl get gitrepositories -A

# Kustomizations prüfen (Flux-Reconciliation)
kubectl get kustomizations -A

# Synchronisierungsdetails
kubectl describe gitrepository -A

# Flux-Pods prüfen
kubectl get pods -n flux-system

Erwartetes Ergebnis:

NAMESPACE     NAME            URL                                          READY   STATUS                  AGE
flux-system flux-system https://github.com/company/k8s-manifests True Fetched revision: main 5m
NAMESPACE     NAME            READY   STATUS                  AGE
flux-system flux-system True Applied revision: main 5m

5. Eine Anwendung über Git bereitstellen

Um eine Anwendung bereitzustellen oder zu aktualisieren, pushen Sie einfach die Manifeste in Ihr Git-Repository:

apps/my-app/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: app
image: registry.example.com/my-app:v1.0.0
ports:
- containerPort: 8080
resources:
requests:
cpu: "100m"
memory: "128Mi"
limits:
cpu: "500m"
memory: "256Mi"
# Aus Ihrem lokalen Repository
git add apps/my-app/deployment.yaml
git commit -m "deploy: add my-app v1.0.0"
git push origin main

Flux erkennt die Änderungen automatisch und wendet die Manifeste im Cluster an:

# Reconciliation beobachten
kubectl get kustomizations -A -w

# Prüfen, ob die Anwendung bereitgestellt ist
kubectl get pods -l app=my-app
Tipp

Standardmäßig synchronisiert Flux das Repository jede Minute. Um eine sofortige Reconciliation zu erzwingen:

kubectl annotate --overwrite gitrepository flux-system -n flux-system reconcile.fluxcd.io/requestedAt="$(date +%s)"

Überprüfung

Validieren Sie, dass die GitOps-Pipeline durchgängig funktioniert:

# Globaler Flux-Status
kubectl get gitrepositories,kustomizations -A

# Flux-Logs bei Problemen
kubectl logs -n flux-system deploy/source-controller --tail=30
kubectl logs -n flux-system deploy/kustomize-controller --tail=30

# Von Flux bereitgestellte Ressourcen prüfen
kubectl get all -l kustomize.toolkit.fluxcd.io/name=flux-system
Warnung

Wenn die Synchronisation fehlschlägt, prüfen Sie:

  • Die Erreichbarkeit des Git-Repositorys vom Cluster aus
  • Die Gültigkeit der YAML-Manifeste im Repository (eine ungültige Datei blockiert die Reconciliation)
  • Die Logs der Flux-Controller, um den genauen Fehler zu identifizieren

Weiterführende Informationen