3n.nl / haven-lab
Haven is de VNG-standaard voor platformonafhankelijke cloudhosting van overheidsapplicaties. Dit lab draait de volledige keten thuis: een Haven-compliant Kubernetes-cluster, de Haven+ platformdiensten en daarbovenop Open Zaak — op een pc die 's avonds ook gewoon een spelletje draait.
architectuur
Van onder naar boven: één fysieke machine, daarin zes virtuele machines die samen het cluster vormen, daarop de platformlaag en de toepassingen. Links wordt alles vanuit git beheerd; rechts komt het verkeer binnen door één sluis, Tailscale. Niets staat open op internet.
tussenstand · 10 oktober
De keten staat: de Haven-checker geeft 15 van 15, de Haven+-platformdiensten komen uit git via Flux, en daarbovenop draaien Open Zaak en Open Notificaties met een zaaktypencatalogus, API-clients met autorisaties en demodata — allemaal als desired state: één script, één job, herhaalbaar op een leeg cluster. Eén identiteit (Keycloak) voor alles met een browser; API's op een ondertekend token per toepassing.
Een toezichthouder krijgt meldingen van burgers en verzoeken van marktpartijen. Een onderzoek kan vragen om gegevens bij een leverancier te vorderen. Dat materiaal is ruw en bevat ook wat niet relevant is; een forensisch team verzamelt en filtert het, en pas de gefilterde set gaat naar de behandelaar. De vraag is of die scheiding een werkafspraak is of een eigenschap van het systeem. In dit lab is het het laatste.
lagen
Haven schrijft een configuratie van Kubernetes voor; de Haven Compliancy Checker toetst die met vijftien verplichte checks. Drie daarvan eisen een echte hoogbeschikbare opzet: minstens drie control-plane-nodes, drie workers en meerdere beschikbaarheidszones. Op één fysieke machine haal je dat alleen met virtuele machines. Vandaar de scheiding tussen host en cluster.
NixOS op een externe USB-SSD. De hele machine staat beschreven in een flake; een push naar main is de uitrol. Incus draait de VM's, de host exporteert NFS en is de Tailscale-subnet-router.
NixOS 26.05 · disko · Incus · nfs · TailscaleZes Talos Linux-VM's: een onveranderlijk besturingssysteem zonder SSH, alleen een API. Drie zones via node-labels, de API achter één virtueel adres. MetalLB, nfs-csi en metrics-server vullen aan wat een cloud normaal levert.
Talos 1.13 · talhelper · Flannel · MetalLB · csi-driver-nfsDe referentie-PaaS van VNG, gedeployed met Flux vanuit een fork van gitops-flux. Identiteit, certificaten, databases, observability en back-up zijn daarmee gestandaardiseerd op OpenID Connect, OpenTelemetry en de Gateway API.
Istio · cert-manager · Keycloak · CNPG · Loki/Mimir/Tempo/Grafana · VeleroCommon Ground-componenten als tenants op het platform. Open Zaak als zaakregister, Open Notificaties voor gebeurtenissen, een kleine werkplek als rollen-UI. De demo-casus: een melding die via een onderzoek uitmondt in een beoordeling, met een forensische stap ertussen.
Open Zaak · Open Notificaties · Werkplek · Open Formulieren (later)rollen en gereedschap
In een echte overheidsorganisatie liggen deze rollen bij verschillende teams en leveranciers. In het lab vervult één persoon ze allemaal, maar de scheiding wordt wél afgedwongen: elke rol heeft zijn eigen toegangspad, en Keycloak kent de rollen die de toepassingen gebruiken.
| Rol | Verantwoordelijk voor | Gereedschap | Toegang |
|---|---|---|---|
| Infrabeheerderhost en VM's | De fysieke machine, het besturingssysteem, de virtualisatie, opslag en het netwerk. Capaciteit en stroom. |
|
ssh met sleutel naar de host; push naar main |
| ClusterbeheerderKubernetes | De Talos-nodes, Kubernetes-versie, de basislaag, upgrades en de Haven-compliance. |
|
Talos-API en kube-API alleen via het tailnet; kubeconfig en talosconfig uit sops |
| PlatformbeheerderHaven+ | De platformdiensten: identiteit, certificaten, databases, observability, beleid, back-up. Onboarding van tenants. |
|
Git-fork (push = uitrol); Keycloak-realm master |
| Applicatiebeheerderfunctioneel beheer Open Zaak | De zaaktypencatalogus, autorisaties tussen componenten, notificatie-abonnementen, formulieren. |
|
Browser via tailnet; Keycloak-groep beheer → superuser in Open Zaak |
| Loket, behandelaar, forensisch, beslissereindgebruikers | Meldingen aannemen, onderzoeken, gegevens vorderen en filteren, besluiten — elk met alleen de zaken en documenten die bij de rol horen. |
|
Browser; Keycloak-groep per rol, elke groep een eigen API-client met autorisaties |
| Melderburger of collega | Een melding doen en de status volgen. |
|
Browser; in het lab via gedeelde tailnet-node, in productie via DigiD/eHerkenning |
| ToezichtCISO, auditor | Aantoonbaarheid: voldoet het cluster aan Haven, is het veilig geconfigureerd, wat gebeurt er op het platform. |
|
Dashboards via de gateway, SSO; audittrail per zaak in de Zaken API |
demo-casus
Een toezichthouder die meldingen van burgers en verzoeken van marktpartijen verwerkt. Alles loopt over de standaard-API's van Common Ground, dus elk onderdeel is vervangbaar — en de scheiding tussen forensisch werk en zaakbehandeling wordt door de registratie zelf afgedwongen.
compliance
De checker is het enige verplichte onderdeel van Haven. Vijftien checks, waarvan de categorie "Haven+" er drie telt. Zo haalt dit lab ze.