Declarative Edge Kubernetes: Immutable Clusters with Talos + Zarf
Brandt Keller, Defense Unicorns & Merijn Keppel, TrueFullstaq
Dinsdag 24 maart, 2026, 17:00 - 17:30
Hall 8 | Room D
Meer info
Air-gapped Kubernetes bootstrappen met Zarf
Wat gebeurt er als je cluster draait daar waar het internet niet kan komen? In maart laten Merijn Keppel van TrueFullstaq en Brandt Keller van Defense Unicorns live op het podium van KubeCon Europe in Amsterdam het antwoord zien. Geen simulaties, geen slides over hoe het zou kunnen werken. Gewoon een compleet Kubernetes-cluster vanaf bare metal opgestart, zonder enige verbinding.
Een pijnlijke waarheid voor air-gapped omgevingen, beperkte netwerken en losgekoppelde edge-locaties: je hebt niks aan een mooie GitOps-pipeline als je geen image kunt pullen.
Het fundamentele probleem
Kubernetes draaien zonder internettoegang betekent meteen een dilemma. Je hebt een container registry nodig om images te pullen. Maar om die registry te draaien, moet je eerst de registry image zelf binnenhalen. En dat is precies het probleem bij het bootstrappen van air-gapped clusters.
GitOps-pipelines, CI/CD-workflows en Helm-deployments gaan er allemaal van uit dat je cluster externe registries zoals Docker Hub, Quay of GCR kan bereiken. Maar wat als je cluster draait op een windpark op zee? In een overheidsdata center? Op een militaire installatie? In een fabriek waar OT-netwerken strikt gescheiden zijn?
Dan betekent "geen internet" niet tijdelijk traag, niet af en toe offline, maar permanent losgekoppeld. En dan werkt je hele deployment-strategie niet meer.
Hoe Zarf het oplost: slim gebruik van ConfigMaps
Zarf ost het verbindingsprobleem op door alles in één deploybaar artifact te stoppen. Images, manifests, charts, alles. Het maakt niet uit hoe je netwerk eruitziet.
De technische truc: Zarf splitst de registry:3 image in stukken van 512KB. Waarom die grootte? Omdat Kubernetes ConfigMaps een limiet van 1MB hebben (technisch bepaald door de etcd-configuratie, maar 1MB is de standaard). Een gecomprimeerde registry image is ongeveer 18MB, wat resulteert in zo'n 35 ConfigMaps die samen de complete registry image bevatten.
Maar hoe zet je die stukken weer samen tot een werkende registry image? Je hebt geen betrouwbare image in het cluster die dat voor je kan doen. Daarom injecteert Zarf een statisch gecompileerd Rust binary (de zarf-injector) naast de image-stukken. Deze binary draait in een tijdelijke pod (gebaseerd op een image die al in het cluster zit) en doet drie dingen:
- Zet de registry image stukken weer in elkaar
- Start een tijdelijke Docker registry (alleen voor pullen, geschreven in Rust)
- Maakt het mogelijk om de echte registry te deployen vanaf die tijdelijke registry
Geen workarounds, geen compromissen.
Gewoon een werkende registry, volledig losgekoppeld vanaf bare metal.
Mutating webhooks: automatische image redirects
Zodra de registry draait, schakelt het tweede deel van de oplossing in: de zarf-agent. Dit is een Kubernetes Mutating Webhook die resources onderschept voordat ze het cluster binnenkomen en ze automatisch aanpast voor de air-gapped omgeving.
Wanneer een pod wordt aangemaakt, doet de webhook twee dingen:
- Herschrijft het image-pad naar de interne Zarf-registry (bijvoorbeeld docker.io/nginx:latest wordt 127.0.0.1:31999/nginx:latest-zarf-3892838293)
- Injecteert automatisch de juiste ImagePullSecrets
Dit werkt niet alleen voor simpele pod-deployments, maar ook voor Flux GitRepository-resources, ArgoCD-applicaties en Helm-charts. Je hoeft je manifests niet aan te passen, omdat Zarf ervoor zorgt dat alles naar de lokale registry wijst.
Precies waar je GitOps-tooling verwacht dat images beschikbaar zijn, zonder dat je zelf templating-logica hoeft te schrijven.
Waarom dit belangrijk is
Deze aanpak maakt moderne cloud-native mogelijkheden toegankelijk voor omgevingen die daar normaal geen toegang toe hebben. Defensie, energie, telecom, gezondheidszorg: sectoren waar digitale soevereiniteit en datalocatie geen optie zijn, maar harde eisen.
Je kunt developen terwijl je verbonden bent, met alle tooling en workflows waar je aan gewend bent. En dan deployen zonder één byte over het internet te sturen. Dezelfde declaratieve configuratie, dezelfde immutable infrastructure-patronen, alleen dan zonder de afhankelijkheid van connectiviteit.
Zie hoe het werkt op KubeCon Europe 2026
Merijn Keppel laat precies dit zien tijdens KubeCon Europe in Amsterdam. Samen met Brandt Keller van Defense Unicorns demonstreert hij hoe je een compleet Talos Kubernetes-cluster vanaf bare metal bootstrapt, volledig losgekoppeld, en vervolgens een cluster-upgrade uitvoert met een Zarf-pakket.
Talos Linux ontdoet Kubernetes van alle ballast. Geen SSH, geen shell, geen drift. Alleen een declaratieve API die je hele OS als cattle behandelt, niet als pets. Gecombineerd met de verpakkingsaanpak van Zarf krijg je immutable clusters die betrouwbaar werken op de edge.
Zien we je bij KubeCon Europe 2026?
Tutorial: Your Application, Batteries Included: Packaging for Deterministic, Secure, and Portable Delivery
Brandt Keller & Austin Abro, Defense Unicorns; William Crum, Spectro Cloud; Merijn Keppel, TrueFullstaq; Jessica Keppel-Drost, Isala
Donderdag 26 maart, 202,6 13:45 - 15:00
Elicium 1
More info