Skip to main content
📬 Get weekly Production AI insights Practical notes on Kubernetes, AI infrastructure and platform engineering. No spam. Subscribe free
Luca Berton pointing at the ASML Entrance sign for the Cloud Native Meetup in Veldhoven
DevOps

Dutch Cloud Native at ASML: Kubewarden, Argo CD, GitOps

ASML's Kubewarden guardrails across 26 Rancher clusters, Octopus Deploy on scaling Argo CD, then the 2025 State of GitOps report over breakfast.

LB
Luca Berton
¡ 9 min read

At the end of September 2025 I had two GitOps days in a row. On Monday 29 September the Dutch Cloud Native Community Group met at ASML in Veldhoven, with a platform-team talk on admission policies and a talk on running Argo CD at enterprise scale. The next morning, Tuesday 30 September, Octopus Deploy hosted a breakfast session in Hoofddorp called “2025 State of GitOps and what it means for you”, which walked through its survey data.

This post is written from the slides I photographed, plus short phone clips of the meetup’s opening and of the ASML talk.

Luca Berton pointing at a blue ASML sign reading Entrance, Cloud Native Meetup, outside the venue in Veldhoven

Following the signs to the meetup at ASML in Veldhoven.

The opening: nine years of meetups

The evening ran in a large auditorium. The welcome slide showed the group’s name, the Meetup logo and cloudnative.amsterdam. The host said the community had been meeting for nine years, almost ten, starting about a year after Kubernetes launched, and that it follows the Berlin Code of Conduct. He offered the stage for five-minute talks about open source projects, with no sales pitches.

The rest of the opening covered what was coming next:

  • KCD Amsterdam in May 2026, this time over two days, with priority for end-user speakers over vendors and AI and sustainability as themes.
  • Another meetup on 23 October in Amsterdam at JetBrains.
  • TalosCon coming to Amsterdam in October. I wrote that one up separately in my TalosCon 2025 recap.

ASML: adding guardrails without interrupting existing workloads

The first talk was “Adding guardrails: Without interrupting existing workloads” by Niels Heetesonne and Nick Heinemans of ASML’s Container Platform Services team. Their team runs the Kubernetes clusters that other ASML teams deploy to.

Niels Heetesonne and Nick Heinemans on stage next to their ASML title slide, Adding guardrails, Without interrupting existing workloads, dated September 29, 2025, Veldhoven

The ASML title slide: “Adding guardrails”, by the Container Platform Services team.

The “Background” slide was titled “No guardrails”. It quoted “With great power comes great responsibility” and said users took that responsibility but needed support from the platform team. The number of users was growing and so was the variety of workloads. The upside of that freedom was also on the slide: learning Kubernetes, innovation and sharing knowledge.

The next slide, “Where do we start?”, showed the standard Kubernetes architecture diagram with the API server circled and a box reading “Add Admission Control here”. Admission control is the obvious place for guardrails, because every create or update request to the cluster passes through it.

Why Kubewarden

The admission controller they chose was Kubewarden. Their slide gave four reasons:

  • Open source, part of the CNCF
  • Flexible
  • Scalable
  • Integration with Rancher

ASML slide titled Kubewarden with the Kubewarden logo and four ticks: open-source, part of CNCF; flexible; scalable; integration with Rancher

The Kubewarden slide: CNCF, flexible, scalable, and it works with Rancher.

Some context from the project itself: the Kubewarden site describes it as a CNCF Sandbox project, originally developed by Rancher by SUSE. Its documentation explains that policies are WebAssembly modules, so you can write them in any language that compiles to Wasm (the docs have tutorials for Rust, Go, Rego, C#, TypeScript and Swift). Policies are distributed through OCI registries, and an audit scanner keeps checking resources that already exist in the cluster.

One policy, two modes

The core of the talk was how they rolled policies out without breaking existing workloads. A slide titled “Our journey: Fine grained control” showed the setup:

  • Helm charts generate all the objects they need.
  • Each policy is generated in two variants: Monitor (used only for exceptions) and Protect.
  • 7 internal policies and 12 public policies go through Helm templating into a single policy collection.
  • Per-cluster values decide which variant applies where, for example “Policy 1 – monitor”, “Policy 2 – protect project 1” and “Policy 3 – protect all except namespace 2”.

In the clip I recorded, one of the speakers said they wrote some of the internal policies themselves, in Rego, because the public ones didn’t cover everything they wanted to limit. Because the collection is a Helm chart, they can version it, test it automatically and apply different policy sets per cluster. He was also honest about the cost: a lot of Helm templating, which “gave us some nightmares”.

What worked best, according to the talk, was publishing the policy violations on dashboards. That raised awareness and increased ownership. The exceptions are documented and can always be challenged, because the dashboards, the policies and the exceptions are all visible.

ASML slide Our journey, Promote and improve: running 120k pods per day, 500+ Rancher projects in 26 clusters, 1300+ namespaces, values for some clusters exceed 1000 lines of yaml code

Where ASML’s platform stood at the time of the talk.

The “Promote and improve” slide gave the scale:

  • Running 120k pods per day
  • 500+ Rancher projects in 26 clusters
  • 1300+ namespaces
  • Values for some clusters exceed 1000 lines of YAML

It ended with two lessons: “Some exceptions are here to stay” and “Improved security awareness and ownership”.

My take: the monitor-first rollout is the part to copy. Turning on enforcement in an existing cluster on day one is how policy projects get cancelled. Run the same rule in audit mode, publish the violations, agree on exceptions in the open, then switch namespace by namespace. It works the same way with Kyverno’s audit and enforce actions (see Kyverno graduating in the CNCF) or with Pod Security Admission’s warn and audit modes. The 1000-line values files are the warning sign: per-cluster exceptions in Helm values grow until nobody wants to read them, so it is worth moving them into policy exception resources or a generated layer early.

Octopus Deploy: scaling up Argo CD for the enterprise

After the break, Kostis Kapelonis of Octopus Deploy presented “Scaling up Argo CD for the Enterprise”. The title slide was made for this tour: “Dutch Cloud Native Community, September–October 2025”.

Kostis Kapelonis on stage under the Octopus Deploy title slide, Scaling up Argo CD for the Enterprise, Dutch Cloud Native Community

Kostis Kapelonis opening “Scaling up Argo CD for the Enterprise”.

He started with a show of hands, “Who is using Helm?”, and plenty of hands went up. My photos only catch a few of his slides, so here are the two that stuck with me.

Octopus Deploy slide Abusing CI as CD with Argo CD: three pipeline diagrams, the last one using a pull request to update manifests in Git and a GitOps tool syncing Git with the cluster

Octopus Deploy slide New cluster? showing Kubernetes clusters labelled QA, Staging, Load Testing, US-East, US-West and EU with environment, cloud and region tags, a brand new cluster with question marks, and an APPROVED stamp

Left: “Abusing CI as CD” versus doing it “With Argo CD”. Right: what happens when someone asks for a new cluster.

“Abusing CI as CD” compared three flows. In the first, the CI pipeline builds the image, pushes it to the registry and then applies it straight to the cluster. In the last, CI stops at the registry. A pull request updates the manifest in Git with the new image version, and the GitOps tool syncs Git with the cluster.

“New cluster?” showed a fleet of clusters, each tagged by environment (non-prod or prod), cloud (AWS or GCP) and region: QA, Staging, Load Testing, US-East, US-West and EU. Then a “Brand new cluster” with question marks in place of its tags, and an “APPROVED” stamp. The question it raises: when the new cluster arrives, how does it get the right set of applications without someone copying YAML by hand?

My take: this is where Argo CD ApplicationSets with a cluster generator earn their place. If clusters carry labels for environment, cloud and region, a new cluster with the right labels picks up its applications automatically. I go through the building blocks in my Argo CD GitOps guide and in GitOps at scale with Flux and Argo CD.

The next morning: 2025 State of GitOps

On Tuesday morning I went to Octopus Deploy’s breakfast session on the 2025 State of GitOps report, in a meeting room at Frame Offices in Hoofddorp. It was a small group around one table, which made it more of a discussion than a talk. Octopus published the full State of GitOps report in June 2025.

Octopus Deploy slide 660 responses, with pie charts for global responses and 22 industries and a bar chart titled A range of experience

The survey base: 660 responses from 22 industries.

Who answered, and how GitOps was scored

The survey had 660 responses from 22 industries, worldwide and with a spread of experience levels. The session started from the four OpenGitOps principles (v1.0.0): declarative, versioned and immutable, pulled automatically and continuously reconciled.

Octopus Deploy slide Scoring GitOps: a GitOps score built from declarative desired state, human readable format, responsive code review, version control, automatic pull and continuous reconciliation, linked to software delivery performance, reliability and wellbeing

How the report turns GitOps practices into a score.

The “Scoring GitOps” slide explained the method. A GitOps score is built from six practices: declarative desired state, human-readable format, responsive code review, version control, automatic pull and continuous reconciliation. The report then tests the question handwritten on the slide: “Do these GitOps things make a difference to these DevOps things?”, meaning software delivery performance, reliability and wellbeing, which feed into organisational performance.

Tools and use cases

The “Tools used” slide had two charts. For open source GitOps tools, Argo CD was at 50% and Flux at 11%. To the question “How do you create infrastructure?”, answers were Terraform 67%, manual 37%, Crossplane 7%, Pulumi 7%, Bicep 3% and other 8%. More than a third still create some infrastructure by hand.

“What GitOps is used for” asked which parts of an application’s configuration are stored in version-controlled files:

UseShare
Application or service deployments79%
Application configuration73%
Infrastructure57%
Environments49%
Runtimes40%
Database schemas38%
Cluster bootstrapping configuration35%
Secrets23%
Repository access rules18%
Management agents15%

An “Adoption” chart showed the share of production systems using GitOps by organisation size, from 1–49 employees up to 10,000 or more. Each band had a wide range, and the averages didn’t go up steadily with company size.

Benefits and DORA

Octopus Deploy slide GitOps benefits: 81% GitOps is more auditable, 78% GitOps prevents configuration drift, 68% compliance and audits are easier, 66% fewer people need elevated access, 63% GitOps increases security

Octopus Deploy slide GitOps and DORA's 4 keys: GitOps scores and DORA scores increase together, with a rising trend line of software delivery performance against GitOps score, rated large

Left: the benefits respondents reported. Right: GitOps scores against DORA software delivery performance.

The “GitOps benefits” slide listed:

  • 81%: GitOps is more auditable
  • 78%: GitOps prevents configuration drift
  • 68%: compliance and audits are easier
  • 66%: fewer people need elevated access
  • 63%: GitOps increases security

The last slide I photographed was “GitOps and DORA’s 4 keys”: “GitOps scores and DORA scores increase together.” The DORA score combines four metrics that represent throughput and stability, and the chart labelled the effect as rated “large”. Octopus’s announcement of the report adds that 93% of organisations plan to continue or increase their GitOps adoption.

My take: the numbers I’d bring to a steering committee are the 37% “manual” for infrastructure and the 23% for secrets. Most teams already deploy applications through Git. The gap is everything around the applications: infrastructure, secrets, access rules and the agents that run the platform. That is also how I lay out the levels in my GitOps maturity model. For secrets, start with the patterns in my Sealed Secrets and SOPS guide.

Two days, one theme

The two days fitted together well. ASML showed the policy side of a large platform: guardrails introduced gradually, with exceptions made visible. Octopus showed the delivery side, with Git as the source of truth for what runs where. The survey then put numbers on the claim both talks make, that teams following GitOps practices more closely deliver more reliably.

Free 30-min Production AI consultation

Book Now