
Magento op Kubernetes, per component goed ingericht
Magento 2 draait prima op Kubernetes, mits je het platform behandelt als een verzameling losse processen en niet als één server in een container. Webverkeer, cron, queue-consumers, cache en zoekmachine krijgen elk hun eigen plek. Het vaste team bouwt de images, charts en deploy-flow, en draait het daarna mee. Is goede managed hosting voor jouw shop goedkoper en eenvoudiger, dan zeggen we dat ook.
- Static content en DI-compilatie in het image, niet bij het opstarten
- Cron, consumers en Varnish als losse workloads met eigen resources
- Eerlijke vergelijking met managed hosting zoals Hypernode
Wat betekent Magento op Kubernetes in de praktijk?
Een klassieke Magento-server doet alles tegelijk. Nginx, PHP-FPM, cron, consumers, Redis of Valkey en soms zelfs MySQL draaien op dezelfde machine. Dat werkt tot het niet meer werkt: een zware import trekt de CPU leeg en de checkout wordt traag, of een cronjob blijft hangen en niemand ziet het.
Kubernetes dwingt je om die processen uit elkaar te halen. Elke rol wordt een eigen workload met eigen resources, health checks en schaalgedrag. Webpods schalen mee met bezoekers. Consumers schalen mee met de wachtrij. Cron draait precies één keer per minuut, niet twee keer omdat er twee servers zijn.
De winst zit niet in Kubernetes zelf. Die zit in de discipline die het afdwingt: een onveranderlijk image per release, configuratie buiten de code, en geen handmatige wijzigingen op een server. De keerzijde is complexiteit. Een cluster vraagt kennis van netwerken, storage, monitoring en upgrades. Daarom beginnen we elk traject met de vraag of het voor jouw shop loont.
Op deze pagina staat hoe wij Magento 2 op Kubernetes inrichten, component voor component. Van het bouwen van het image tot de deploy zonder downtime. En wanneer we je juist aanraden om bij managed hosting te blijven.
Magento Kubernetes-architectuur: welke component waar draait
Elke rol in Magento krijgt een eigen workload. Stateful onderdelen houden we bij voorkeur buiten het cluster of in een managed dienst.
| Component | Kubernetes-vorm | Schalen op | Aandachtspunt |
|---|---|---|---|
| Nginx + PHP-FPM (web) | Deployment, twee containers in één pod of losse pods | CPU en aantal requests, via HPA | Stateless houden: geen sessies of uploads op lokale schijf |
| Varnish | Eigen Deployment met Service ervoor | Meestal vast aantal replicas | Purge-requests moeten alle Varnish-pods bereiken |
| Cron | CronJob of Deployment met één replica | Niet schalen: precies één runner | Overlap voorkomen met concurrencyPolicy Forbid |
| Queue-consumers | Deployment per consumer of groep consumers | Lengte van de wachtrij, bijvoorbeeld met KEDA | Consumers niet ook nog via cron laten starten |
| Valkey (cache en sessies) | Managed dienst of StatefulSet | Geheugen, niet replicas | Cache en sessies gescheiden houden |
| OpenSearch | Managed dienst of operator-gestuurde StatefulSet | Heap en schijf | Persistente volumes en snapshots inrichten |
| MySQL of MariaDB | Managed database buiten het cluster | Instance-grootte en read replicas | Backups en point-in-time recovery bij de provider |
| pub/media | Object storage of een ReadWriteMany-volume | Opslagcapaciteit | Alle webpods moeten dezelfde bestanden zien |
Plan een vrijblijvend gesprek over je project
Een half uur via video met de mensen die het werk ook echt doen. Kies hieronder een moment dat jou past.
- Direct met het vaste team, geen tussenlagen
- Concrete feedback op je huidige situatie of plannen
- Eerlijk advies, ook als het antwoord "niet doen" is
- Indicatie van kosten en tijdlijn
Plan een gratis Tech Check
Vrijblijvend jouw uitdagingen bespreken
Of bel direct: 0591-239 299
Het image: static content en DI-compilatie tijdens de build
De meest gemaakte fout bij Magento op Kubernetes is een container die bij het opstarten nog setup:di:compile en setup:static-content:deploy draait. Dan duurt een nieuwe pod minuten in plaats van seconden. Autoscaling wordt daarmee waardeloos: tegen de tijd dat de extra pod klaar is, is de piek voorbij.
Wij bouwen alles in het image. De Dockerfile is een multi-stage build. In de eerste stage draait composer install met --no-dev en een geoptimaliseerde autoloader. Daarna volgen bin/magento setup:di:compile en setup:static-content:deploy voor de talen en thema's die je echt gebruikt. Met Hyvä bouwen we ook de Tailwind-CSS in die stage. De laatste stage kopieert alleen het resultaat naar een slank PHP-FPM-image.
Om static content zonder database te kunnen bouwen, zetten we de configuratie van scopes, thema's en talen vast in app/etc/config.php via bin/magento app:config:dump. Gevoelige instellingen staan niet in config.php maar in env.php, en die vullen we pas in de cluster in vanuit environment-variabelen en Secrets. Zo is één image bruikbaar voor test, acceptatie en productie.
Elk image krijgt een unieke tag, gekoppeld aan de commit. Nooit latest. Daardoor weet je altijd precies welke code er draait, en is terugrollen een kwestie van de vorige tag weer uitrollen. Het image wordt in de pipeline gescand op kwetsbaarheden, bijvoorbeeld met Trivy, voordat het naar de registry gaat.
Media, sessies en logs: alles wat niet in de pod mag blijven
Een pod kan op elk moment verdwijnen. Alles wat moet blijven bestaan, hoort er dus buiten.
Media en uploads
- pub/media op object storage via de remote storage-functie van Magento, of op een ReadWriteMany-volume zoals NFS, EFS of CephFS
- Productafbeeldingen via een CDN serveren, zodat webpods geen mediaverkeer verwerken
- Image-resizes niet bij elke deploy opnieuw genereren, maar bewaren op gedeelde opslag
- Imports en exports in var/ niet op lokale schijf, maar op gedeelde opslag of object storage
Sessies en cache
- Sessies in Valkey of Redis, nooit in bestanden
- Default cache en full page cache in Valkey, in aparte databases of instances
- Full page cache voor bezoekers via Varnish, met Valkey als backend voor de rest
- Cache-invalidatie bij deploys gecontroleerd vanuit de release-flow, niet handmatig
Logs en monitoring
- Nginx- en PHP-logs naar stdout, zodat Loki of een andere logcollector ze oppakt
- Magento-logs uit var/log meesturen of omleiden, zodat ze niet verloren gaan met de pod
- PHP-FPM-status en Varnish-statistieken als Prometheus-metrics
- Alerts op wachtrijlengte, cron-achterstand en foutpercentages in de checkout
Cron en queue-consumers als losse workloads
Magento heeft cron nodig voor indexers, e-mails, sitemaps, prijsregels en opruimtaken. Op één server is dat één regel in de crontab. Op Kubernetes moet je kiezen. Een CronJob die elke minuut bin/magento cron:run start is eenvoudig, maar maakt elke minuut een nieuwe pod aan. Met concurrencyPolicy Forbid voorkom je dat runs elkaar overlappen. Bij veel cronwerk kiezen we vaak een Deployment met één replica die cron:run in een lus draait. Dan blijft het proces warm en zie je in de logs één doorlopend verhaal.
Belangrijk is dat er altijd maar één cron-runner actief is. Twee runners betekent dubbele e-mails, dubbele exports en locks die elkaar in de weg zitten. Lees ook waarom cron in Magento vaak het eerste is dat 's nachts vastloopt.
Queue-consumers verwerken asynchroon werk, zoals bulk-acties, export van producten en voorraad-updates. Standaard start Magento consumers vanuit cron. Op Kubernetes zetten we dat uit in env.php, via de instelling cron_consumers_runner met cron_run op false. Daarna draait elke belangrijke consumer als eigen Deployment met bin/magento queue:consumers:start en een limiet op het aantal berichten, zodat het proces regelmatig netjes herstart en geen geheugen lekt.
Gebruik je RabbitMQ als message broker, dan kun je consumers laten schalen op de lengte van de wachtrij met KEDA. Bij een grote import komen er automatisch extra consumers bij, en daarna schaalt het terug. De webpods merken daar niets van, want ze delen geen CPU met het achtergrondwerk.
Varnish, Valkey en OpenSearch: versies en inrichting
Versies volgens de systeemeisen van Adobe Experience League, stand oktober 2026. Controleer bij een upgrade altijd de actuele tabel.
Adobe noemt Valkey sinds 2.4.8 als ondersteunde cache- en sessie-backend. Dat sluit aan bij wat er in de markt gebeurde: Redis veranderde in 2024 de licentie, waarna de Linux Foundation Valkey startte als open fork. Redis 8 kwam in 2025 wel weer met een AGPL-optie. Voor Magento is Valkey de voor de hand liggende keuze, omdat het protocol compatibel is en de licentie geen vragen oproept.
Varnish draait bij ons als aparte Deployment achter de Gateway. Magento moet bij een cache-purge alle Varnish-pods bereiken. Met één Service-adres bereikt een purge maar één pod. Daarom kiezen we een vast aantal replicas met een headless Service, of één Varnish-laag per omgeving met voldoende geheugen. Bij een shop met veel verkeer is dat laatste vaak eenvoudiger en voorspelbaarder.
| Onderdeel | Magento 2.4.8 | Magento 2.4.9 | Hoe wij het inrichten |
|---|---|---|---|
| PHP | 8.3 en 8.4 | 8.5 volgens de systeemeisen | Eigen PHP-FPM-image per Magento-versie, met alleen de extensies die nodig zijn |
| Database | MySQL 8.4 of MariaDB 11.4 | MySQL 8.4 of MariaDB 12.3 | Managed database buiten het cluster, met backups bij de provider |
| Zoekmachine | OpenSearch 2.19, later 3 | OpenSearch 3 | Managed OpenSearch of de OpenSearch-operator met persistente volumes |
| Cache en sessies | Valkey 8 | Valkey 9 | Gescheiden instances voor cache en sessies |
| Varnish | 7.6, later 8 | 8 | Eigen Deployment met de door Magento gegenereerde VCL als ConfigMap |
| RabbitMQ | 4.1 | 4.3 | Managed broker of operator, consumers schalen met KEDA |
Verkeer naar binnen: Gateway API in plaats van ingress-nginx
Veel Magento-handleidingen voor Kubernetes gebruiken nog de community-controller ingress-nginx. Die is door de Kubernetes-community met pensioen gestuurd. De aankondiging kwam in november 2025, het onderhoud liep op best-effort-basis tot maart 2026. Sindsdien verschijnen er geen releases en geen securityfixes meer. Bestaande installaties werken nog, maar zijn een risico.
Voor nieuwe clusters gebruiken we de Gateway API, met een implementatie zoals Envoy Gateway, NGINX Gateway Fabric, Traefik of Cilium. De keten wordt dan: Gateway met TLS via cert-manager, daarna Varnish, daarna Nginx en PHP-FPM. Een CDN of WAF zoals Cloudflare staat daar meestal nog voor. Meer over de keuze tussen controllers staat op onze pagina over ingress, Gateway API en TLS.
Deploy zonder downtime: wanneer het kan en wanneer niet
Een release van Magento bestaat uit twee delen: nieuwe code en mogelijk een gewijzigde database. Nieuwe code uitrollen zonder downtime is op Kubernetes eenvoudig. Een rolling update vervangt pods een voor een, en readiness probes zorgen dat een pod pas verkeer krijgt als hij echt klaar is.
De database is het lastige deel. bin/magento setup:upgrade past schema en data aan, en Magento controleert of de modules in de database overeenkomen met de code. Daarom draaien we vooraf bin/magento setup:db:status. Meldt die dat alles up-to-date is, dan rollen we de nieuwe pods uit zonder maintenance. Is er wel een schemawijziging, dan draait setup:upgrade --keep-generated als Kubernetes Job, voordat de nieuwe webpods starten. Met Argo CD doen we dat als PreSync-hook of in een vroege sync wave.
Bij schemawijzigingen kiezen we per release bewust: een korte maintenance-window op een rustig moment, of een release die in twee stappen backwards-compatible wordt gemaakt. Dat tweede kost meer werk en is alleen zinvol bij shops waar elke minuut telt. De eerlijke versie: bij de meeste shops is een maintenance-pagina van een paar minuten 's nachts de rationele keuze.
Terugrollen kan alleen veilig als de database het toelaat. Code terugzetten is een kwestie van de vorige image-tag uitrollen. Een gewijzigd schema terugdraaien niet. Daarom maken we voor elke release met schemawijzigingen een database-snapshot bij de provider.
Wanneer Magento op Kubernetes loont, en wanneer managed hosting beter is
Kubernetes is geen doel. Dit zijn de signalen die we wegen voordat we een cluster adviseren.
Wel: meerdere shops of apps op één platform
Draai je meerdere Magento-installaties, een Laravel-middleware en een PIM naast elkaar, dan deel je één cluster, één deploy-flow en één monitoringstack.
Lees verder →Wel: sterk wisselend verkeer of veel achtergrondwerk
Campagnes, drops of zware imports die op vaste servers overcapaciteit vragen. Webpods en consumers schalen dan los van elkaar.
Lees verder →Wel: je organisatie draait al op Kubernetes
Heeft je IT-afdeling al clusters, security-beleid en monitoring, dan is Magento daar inpassen logischer dan een losse hostingpartij erbij.
Lees verder →Niet: één shop met voorspelbaar verkeer
Voor de meeste webshops is managed Magento-hosting goedkoper en eenvoudiger. Als Hypernode Silver Partner weten we wat je daar krijgt.
Lees verder →Kubernetes of Hypernode: de rekenstap
Bij managed hosting betaal je voor een omgeving die is afgestemd op Magento, met beheer, updates en support erbij. Bij Kubernetes betaal je voor nodes, load balancers, opslag, een managed database, monitoring en vooral voor de mensen die het cluster bijhouden. Een cluster moet minstens elke paar maanden een Kubernetes-upgrade krijgen, en elke component erin heeft zijn eigen updates.
Zet die posten naast elkaar over drie jaar. Komt het verschil vooral uit op beheeruren zonder dat je de schaalbaarheid gebruikt, dan is managed hosting de betere keuze. Komt het uit op minder overcapaciteit, één platform voor meerdere applicaties of eisen aan portabiliteit, dan verdient Kubernetes zich terug. Op onze pagina over Kubernetes-kosten staan de kostenposten uitgewerkt.
Zo zetten we Magento op Kubernetes
Zes stappen, uitgevoerd door het vaste team dat het platform daarna ook beheert.
- 1
Haalbaarheidsscan
We bekijken je huidige shop, verkeerspatroon, achtergrondwerk en kosten. Uitkomst: Kubernetes, managed hosting of een tussenvorm, met de onderbouwing erbij.
- 2
Architectuur per component
Welke onderdelen in het cluster draaien en welke als managed dienst. Keuze voor provider, storage, Gateway API-implementatie en monitoring.
- 3
Image en charts bouwen
Multi-stage Dockerfile met compilatie en static content in de build. Helm-chart of Kustomize-basis met values per omgeving.
- 4
GitOps en deploy-flow
Argo CD met een PreSync-Job voor setup:upgrade, rolling updates met readiness probes en database-snapshots voor releases met schemawijzigingen.
- 5
Testen onder belasting
Loadtest op de acceptatieomgeving om autoscaling, Varnish-hitrate en consumer-capaciteit te controleren voordat er echt verkeer op komt.
- 6
Livegang en beheer
Overstap met een terugvaloptie, daarna monitoring, Kubernetes-upgrades, Magento-patches en kostenbewaking als doorlopend beheer.
Wat je opgeleverd krijgt
- Haalbaarheidsadvies met kostenposten van Kubernetes naast managed hosting
- Architectuurdocument per Magento-component
- Multi-stage Dockerfile met DI-compilatie en static content in de build
- Helm-chart of Kustomize-structuur met values per omgeving
- Argo CD-configuratie met migratie-Job en rollback-procedure
- Gateway API-configuratie met TLS via cert-manager
- Monitoring en alerts voor web, cron, consumers en wachtrijen
- Draaiboek voor releases, upgrades en incidenten
Waarom Coding.nl voor Magento op Kubernetes
Magento-kennis tot in de database
Hyvä Certified en Hyvä Silver Partner. We weten waar Magento schrijft, cachet en vastloopt, en dat bepaalt hoe je het in containers zet.
Eerlijk over hosting
Als Hypernode Silver Partner kennen we managed hosting van binnen. Past dat beter, dan adviseren we dat, ook als het ons minder werk oplevert.
Geen tussenlagen
Je spreekt direct met de mensen die het cluster bouwen en beheren. Geen projectmanagers die vragen doorgeven.
Meten met echte gebruikersdata
Als RUMvision Gold Partner meten we de laadtijd van echte bezoekers, voor en na de overstap naar Kubernetes.

Verder lezen
- ›Magento 2 op Kubernetes: de architectuur per component
- ›Magento deployen op Kubernetes zonder downtime
- ›Kubernetes of managed hosting voor je webshop?
- ›Wat kost Kubernetes voor een webshop? De kostenposten
- ›Varnish configureren voor Magento 2 — stap voor stap
- ›Elasticsearch vs OpenSearch voor Magento 2
- ›Magento 2 cron jobs — waarom je shop 's nachts vastloopt
- ›Magento 2 en Docker — lokale development setup die werkt
- ›Managed Magento hosting: wat krijg je echt?
- ›Webshop monitoring op Kubernetes: Prometheus, Grafana en Loki
Veelgestelde vragen
Meer over Kubernetes
Weten of Kubernetes voor jouw Magento-shop loont?
Vraag een haalbaarheidsscan aan. We bekijken je shop, verkeer, achtergrondwerk en huidige hosting, en vertellen je eerlijk of Kubernetes, managed hosting of een tussenvorm het meeste oplevert.