The GitOps distribution for managed Kubernetes.

Pick your cloud, pick your modules. Flux pulls one signed artifact, and upgrading the whole platform is one line in Git.

Two layers, one version

OpenTofu lays the foundations once. Flux keeps the catalog in step with the signed artifact from then on. One version number moves both.

How it fits together
socle_version = "0.1.0"the only line an upgrade touches
Foundationsapplied onceNetwork, cluster, identities and the bootstrap, from the OpenTofu modules.
Catalogreconciled continuously16 modules à la carte, from the signed Flux artifact.
socle_version pins both the OpenTofu modules, applied once, and the signed Flux artifact, reconciled continuously.

One file per cluster

Under kube, list only what differs from the catalog defaults.

# clusters/prod.tfvars
socle_version = "0.1.0"   # the only line an upgrade touches

aws = {
  region             = "eu-west-3"
  cluster_name       = "acme-prod"
  kubernetes_version = "1.34"
}

kube = {
  argocd     = { domain = "argocd.acme.example" }
  monitoring = { traces = { enabled = true } }
}

Pick your cloud

The catalog

16 modules, 7 of them on by default. Each one is a line under kube: turn it on, give it your values, turn it off.

The catalog in the documentation