Kubernetes Controller und CRDs

Controller

Ein Kubernetes Controller beobachtet den aktuellen Cluster-Zustand und stellt sicher, dass er dem gewünschten Zustand (desired state) entspricht. Controller laufen in einer kontinuierlichen Reconciliation-Loop:

Ist-Zustand beobachten → mit Soll-Zustand vergleichen → Differenz ausgleichen

Eingebaute Controller (alle im kube-controller-manager):

Custom Resource Definitions (CRDs)

CRDs erweitern die Kubernetes-API um eigene Ressourcentypen. Damit kann man beliebige Konzepte als Kubernetes-Objekte abbilden (z.B. HelmRelease, GitRepository, Certificate).

kubectl get crds
kubectl describe crd helmreleases.helm.toolkit.fluxcd.io
kubectl api-resources
kubectl api-resources | grep flux

Operator Pattern

Ein Operator kombiniert eine CRD mit einem zugehörigen Controller:

  1. CRD definiert das Schema der neuen Ressource.
  2. Controller beobachtet Instanzen dieser Ressource und führt die gewünschten Aktionen aus.

Beispiel: Der Flux Helm-Controller beobachtet HelmRelease-Objekte und installiert/aktualisiert die entsprechenden Helm-Charts automatisch.

# Flux CRDs anzeigen
kubectl get crds | grep fluxcd
# helmreleases.helm.toolkit.fluxcd.io
# gitrepositories.source.toolkit.fluxcd.io
# kustomizations.kustomize.toolkit.fluxcd.io

# Instanzen einer CRD
kubectl get helmreleases
kubectl get gitrepositories