Skip to main content

Cluster API Operator

The Cluster API Operator manages the lifecycle of Cluster API (CAPI) providers declaratively: instead of running clusterctl init by hand, you declare CoreProvider / BootstrapProvider / ControlPlaneProvider / InfrastructureProvider custom resources and the operator installs and upgrades the matching CAPI controllers.

This is a KubeAid wrapper around the upstream cluster-api-operator chart (version 0.28.0).

Why it's in KubeAid

KubeAid provisions clusters through Cluster API. On the management cluster, kubeaid-cli deploys this chart as the cluster-api-operator Argo CD app and syncs it before the capi-cluster app — it installs the CAPI machinery (core, kubeadm bootstrap and kubeadm control-plane providers) that capi-cluster's Cluster and Machine resources are reconciled by.

Key values / KubeAid-specific configuration

Upstream values go under the cluster-api-operator: key. The wrapper pins:

cluster-api-operator:
core:
cluster-api:
version: v1.11.10
bootstrap:
kubeadm:
version: v1.11.10
controlPlane:
kubeadm:
version: v1.11.10

All three set createNamespace: false — the namespace is created by the Argo CD Application (CreateNamespace=true), not by the operator.

kubeaid-cli overlays per-cluster values from your kubeaid-config repo (argocd-apps/values-cluster-api-operator.yaml): it sets each provider's namespace to the cluster's capi-cluster-<...> namespace and, on providers that use static credentials (i.e. not Azure Workload Identity), points configSecret at the cloud-credentials Secret there.

Infrastructure providers (Hetzner, AWS, Azure, ...) are not listed here; they are brought in per cluster via the capi-cluster chart and its provider subcharts.