Ga naar inhoud

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 vanuit cluster-infra/argocd/ (gepinde upstream + expliciet delta; zie de cluster-infra-sectie).
  • Platformen: Nextcloud-base beheert de multi-tenant Nextcloud-instances (namespace = kale tenant-naam); React-base zet 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) en con-ci-oci (container-jobs en imagebuilds).
  • Observability (monitoring): kube-prometheus-stack met per alert een runbook; alerts routeren naar Slack.
  • Identiteit (KeyCloak): SSO via realm commonground, declaratief beheerd (Keycloak Operator + Argo CD).
  • Applicatieconfiguratie (openwoo-app-config): de gevalideerde OpenWoo-config, in CI gegate vóór die een tenant bereikt; cluster-config bevat out-of-band mutatiescripts en RCA's.

Rode draden

  1. GitOps vanaf Codeberg — wijzigingen gaan via een repo, Argo CD sync't; niets handmatig behalve secrets (SOPS/age) en expliciet gedocumenteerde uitzonderingen.
  2. Namespace-conventies — tenant-namespaces zijn de kale tenant-naam; platformcomponenten hebben eigen namespaces.
  3. Least privilege — scoped tokens, geen privileged pods, secrets nooit in git (alleen SOPS-versleuteld).