Back to blog

GitOps delivery to AKS with Pulumi: the automated last mile

The path from an approved release to running pods should be boring, observable, and reversible. Here is how we automate edition-aware AKS rollouts with Pulumi and health-gated deployment events.

Engineering
April 30, 2026 9 min read
GitOps delivery to AKS with Pulumi: the automated last mile

The most dangerous part of shipping software is the last mile - the moment an approved build becomes running infrastructure. Done manually, it is the step where environments drift, a forgotten config breaks production, and rollbacks turn into panic. The goal is to make that last mile so automated and observable that releasing is a non-event. Here is the shape of how we do it: Pulumi for infrastructure, AKS for runtime, and deployment events that are health-gated and reversible.

Infrastructure as real code with Pulumi

We express infrastructure with Pulumi rather than YAML templates, because infrastructure has logic - loops, conditionals, shared modules - and a real programming language handles that far better than a templating dialect. The cluster, namespaces, and workloads are described in .NET, type-checked, and reviewed like any other code:

CSHARP
var deployment = new Deployment("orders", new DeploymentArgs
{
    Spec = new DeploymentSpecArgs
    {
        Replicas = edition.Replicas,
        Template = PodTemplate(image, edition),
    },
});

Because it is code, an environment is reproducible: the same program applied to a different stack yields a consistent environment, instead of a hand-tended snowflake.

Edition-aware rollouts

Not every tenant or plan gets the same deployment. An edition - which features, which scale, which region - parameterizes the rollout, so the same pipeline produces the right shape for each target without branching logic scattered across scripts. The edition is data; the deployment program reads it and provisions accordingly.

Health-gated promotion

The rollout does not declare success because pods started. It waits on the readiness and startup probes we discussed in our health-checks work, and only promotes traffic once the new version reports genuinely healthy. If the probes do not pass within the window, the rollout halts instead of serving a broken version:

YAML
strategy:
  rollingUpdate: { maxUnavailable: 0, maxSurge: 1 }
# new pods must pass readiness before old pods are retired

This is the difference between deploying and releasing - code can be on the cluster while traffic stays on the known-good version until health is proven.

Note: A deployment that reports success the instant a container starts is lying. Gate promotion on real health signals, or you will route users to a process that is up but not working.

Deployment events make it observable and reversible

Every stage of the rollout emits an event - started, promoted, completed, or failed - carrying the version and correlation id. Those events do three things: they give you a live, auditable picture of what is deploying where, they let downstream systems react, and they make rollback a first-class operation. Because the previous known-good version and its configuration are captured, rolling back is applying the prior state, not reconstructing it under pressure.

Wrapping up

The automated last mile rests on four ideas: describe infrastructure as real, reviewable code with Pulumi; parameterize rollouts by edition; gate promotion on genuine health signals; and emit deployment events so the whole process is observable and reversible. Put them together and the riskiest moment in software delivery becomes the most routine - which is exactly where you want it to be.

Want your deployments to be boring in the best way? Let's automate the last mile.

Keep reading

The four pillars of ConnectSoft: Factory, Platforms, Squads, and Marketplace
Company News
June 20, 2026 8 min read

The four pillars of ConnectSoft: Factory, Platforms, Squads, and Marketplace

ConnectSoft is more than a services company. Here is how four reinforcing lines - the AI Factory, live platforms, AI squads, and a marketplace - fit together into one ecosystem.

Read more
The ConnectSoft tech landscape: the stack behind our delivery
Company News
June 18, 2026 8 min read

The ConnectSoft tech landscape: the stack behind our delivery

A tour of the technologies we lean on across delivery - .NET and Blazor, Azure, messaging, data, observability, and AI - and the principles that decide what makes the cut.

Read more
Why we standardized on the Microsoft Agent Framework
Engineering
June 14, 2026 9 min read

Why we standardized on the Microsoft Agent Framework

Choosing the runtime for an autonomous agent mesh is a long-lived bet. Here is the reasoning behind picking the Microsoft Agent Framework, with MCP tools and a model abstraction at its core.

Read more

Subscribe to our newsletter

Get the latest tech insights straight to your inbox

Ready to work with us?

Let's discuss how our team can help achieve your digital goals