Architectuur in vogelvlucht
Hoe de componenten uit dit handboek zich tot elkaar verhouden. Voor de diepte per component: de eigen sectie in de navigatie.
Het landschap
- Cluster (CYSO Gardener-managed,
con-prod): alles draait hier, gescheiden per namespace, uitgerold via Argo CD (GitOps vanaf Codeberg — de GitHub-remotes zijn mirrors die Argo negeert). Argo CD beheert sinds 2026-07 ook zichzelf vanuitcluster-infra/argocd/(gepinde upstream + expliciet delta; zie de cluster-infra-sectie). - Platformen:
Nextcloud-basebeheert de multi-tenant Nextcloud-instances (namespace = kale tenant-naam);React-basezet de bijbehorende WOO PWA-frontend in dezelfde tenant-namespace (co-tenancy). - Cluster-brede voorzieningen (
cluster-infra): external-dns (Cloudflare), cert-manager-config, external-secrets, reflector, en de fuse/seccomp-voorzieningen waar de CI-runners van afhangen. - CI (
talos): forgejo-runners voor Codeberg Actions, op het productiecluster achter default-deny egress met een allowlist-proxy. Twee klassen:con-ci(host-jobs) encon-ci-oci(container-jobs en imagebuilds). - Observability (
monitoring): kube-prometheus-stack met per alert een runbook; alerts routeren naar Slack. - Identiteit (
KeyCloak): SSO via realmcommonground, declaratief beheerd (Keycloak Operator + Argo CD). - Applicatieconfiguratie (
openwoo-app-config): de gevalideerde OpenWoo-config, in CI gegate vóór die een tenant bereikt;cluster-configbevat out-of-band mutatiescripts en RCA's.
Rode draden
- GitOps vanaf Codeberg — wijzigingen gaan via een repo, Argo CD sync't; niets handmatig behalve secrets (SOPS/age) en expliciet gedocumenteerde uitzonderingen.
- Namespace-conventies — tenant-namespaces zijn de kale tenant-naam; platformcomponenten hebben eigen namespaces.
- Least privilege — scoped tokens, geen privileged pods, secrets nooit in git (alleen SOPS-versleuteld).