Skip to content

Architecture overview

The platform has four layers, each with one clear tool and owner.

Layer Responsibility Tool (type)
Provisioning Cloud resources and VMs Terraform/Terragrunt
Cluster Operating system and Kubernetes Immutable, API-driven distribution
Delivery Getting Git state into the cluster GitOps controller (Argo CD)
Applications Each app's code and image Per-repository CI

Compute is hybrid: the cluster runs on owned hardware, and what is worth managed (image registry, IaC state, secret storage) lives in the cloud.

flowchart TB
    iac["IaC: provisions cloud and VMs"] --> cluster["Kubernetes cluster"]
    gitops["GitOps controller"] -- "reconciles continuously" --> cluster
    repos["gitops.* repositories"] --> gitops
    cloud["Cloud: registry, state, secrets"] -. "federated identity" .-> cluster

Golden rule: only the delivery layer changes cluster state. Provisioning and bootstrap are triggered manually; from the GitOps controller onwards everything is continuously reconciled and any drift is reverted.

Patterns in detail: GitOps, identity and secrets, two-tier IaC, agents and chat.