How do you actually separate CI/CD pipelines for AKS across dev/qa/uat/prod in Azure DevOps?
Hey Folks, need your advice badly ,
I'm building out a CI/CD flow for AKS using Azure DevOps Pipelines (not ArgoCD/GitOps for this one, using native Azure Pipelines + KubernetesManifest@1 tasks). Trying to understand what people actually do in production.
The MS Learn sample bundles CI and CD into one pipeline (Build stage → Deploy stage, same YAML file), which builds once and deploys straight to the cluster. That seems fine for a single environment, but once you add QA → UAT → Prod with a manual sign-off before prod, it starts to feel like the wrong shape.
Questions:
- Do you run one CD pipeline with multiple stages (QA → UAT → Prod, each an Azure DevOps Environment with its own approval gates), or separate pipelines per environment (e.g.
cd-nonprodandcd-prod)? What made you choose one over the other? - How do you handle the nonprod → prod ACR promotion? Are you doing
az acr importto copy the same digest into a separate prod registry, or do you just use one ACR with RBAC-scoped repositories/tags instead of physically separate registries? - If CI only has push access to a nonprod ACR, what triggers the CD pipeline — a pipeline completion trigger (
resources.pipelines), a manual run with an image tag parameter, or something else? - For those who've tried both native Azure Pipelines deploys and ArgoCD/GitOps for AKS was there a specific pain point that pushed you from one to the other?
Not looking for "just use GitOps" as the whole answer (I get the appeal); more interested in how people structure this with plain Azure DevOps pipelines if they're not on ArgoCD, since that's what I'm working with right now.