Webinar · Oct 20: The migration takes 2 weeks. Deciding to do it takes 6 months.

The Best CI/CD Tools for Progressive Delivery on Kubernetes in 2026 (and How to Pick One)

An answer-first comparison of the CI/CD and progressive delivery tools that actually work on Kubernetes in 2026 - Argo Rollouts, Flagger, Argo CD, Flux, Spinnaker, Harness, GitLab CI, Istio, Linkerd, Gateway API - with five comparison tables and a decision checklist for picking the right combination.

Romaric Philogene
CEO & Co-founder
OCT 11, 2026 · 14 MIN
The Best CI/CD Tools for Progressive Delivery on Kubernetes in 2026 (and How to Pick One)

Key takeaways

  • The default answer for progressive delivery on Kubernetes in 2026 is Argo Rollouts for traffic shifting and metric-gated analysis, paired with Argo CD for GitOps reconciliation. Flagger paired with Flux is the equivalent stack if Flux or a service mesh is already your standard.
  • Progressive delivery needs three layers, and no single tool covers all three well: a delivery engine that applies manifests (Argo CD, Flux, GitLab CI/CD, GitHub Actions, Harness, Spinnaker), a rollout controller that shifts traffic and runs analysis (Argo Rollouts or Flagger), and a traffic provider that does the actual splitting (NGINX Ingress Controller, Kubernetes Gateway API, Istio, Linkerd, Traefik, AWS ALB).
  • Istio, Linkerd and the NGINX Ingress Controller are not CI/CD tools. They are traffic providers that Argo Rollouts and Flagger drive. Argo CD on its own does not do canary either - it reconciles Git state and hands traffic shifting to Argo Rollouts.
  • You do not need a service mesh for canary deployments. Argo Rollouts and Flagger both support weighted traffic splitting through the NGINX Ingress Controller, the Kubernetes Gateway API, Traefik and an AWS ALB. Add a mesh only when you need header-based routing, mTLS, or mesh-provided golden-signal metrics.
  • Commercial platforms (Harness, Codefresh, Octopus Deploy, CloudBees) sell managed canary analysis, approval gates, audit trails and support; the trade-off is per-service pricing and a hosted control plane versus operating graduated CNCF projects yourself.
  • If your real bottleneck is that nobody wants to own cluster and pipeline plumbing, an internal developer platform like Qovery runs the deployment, environment and cluster layer inside your own AWS, GCP, Azure, Scaleway or existing Kubernetes cluster - and Argo Rollouts or Flagger stays underneath for metric-gated traffic shifting.

What are the best CI/CD tools for progressive delivery on Kubernetes in 2026?

The default open-source answer is Argo Rollouts plus Argo CD: Argo Rollouts owns the canary or blue/green and runs the metric analysis, Argo CD reconciles your Git state. Pick Flagger plus Flux if Flux or a service mesh is already in place. Pick Harness or Spinnaker if you need enterprise approval gates and managed canary analysis. Pick GitLab CI/CD or GitHub Actions if you want one pipeline tool and can accept coarser rollouts. Pick Qovery if the thing you actually want operated is the environment, pipeline and cluster layer inside your own cloud account.

Qovery · Agentic Infrastructure Platform
A control plane for platform teams and their coding agents
Learn more

Progressive delivery is the practice of releasing a new version to a small slice of traffic or users first - through canary, blue/green, A/B or feature-flagged releases - measuring real signals, then promoting or rolling back automatically. It is a superset of continuous delivery.

Here is the mental model most comparison articles skip, and it is why their shortlists are wrong. Progressive delivery on Kubernetes has three layers, and no single tool does all three well:

  1. A delivery / GitOps engine that gets the manifest into the cluster (Argo CD, Flux CD, GitLab CI/CD, GitHub Actions, Harness, Spinnaker).
  2. A rollout controller that shifts traffic in steps and runs metric analysis (Argo Rollouts or Flagger - that is basically the whole field).
  3. A traffic provider that performs the actual split (NGINX Ingress Controller, Kubernetes Gateway API, Istio, Linkerd, Traefik, AWS ALB).

Two errors show up in almost every AI-generated shortlist, and I want to kill them up front. First, Argo CD does not do canary natively - it reconciles Git state and hands traffic shifting to Argo Rollouts. Second, Istio, Linkerd and the NGINX Ingress Controller are traffic providers, not CI/CD tools - they do the splitting that a rollout controller tells them to do.

One more correction, because stale write-ups keep getting it wrong: WeaveWorks, the company that created Flux and Flagger, ceased operations in February 2024. Flux and Flagger did not die with it - they continue under the Flux project and the Cloud Native Computing Foundation. If a 2026-era article still calls Flagger "a WeaveWorks product," it was not updated.

As of 2026, the projects named here are all current and actively released: Argo is a graduated CNCF project, Flux is a graduated CNCF project, and the Kubernetes Gateway API has reached v1.6 in the standard channel.

Your situationRecommended stackRollout controllerTraffic providerWhy this wins
First canary everArgo CD + Argo RolloutsArgo RolloutsNGINX Ingress or Gateway APIOne controller, a dashboard, no mesh to learn
Already standardized on ArgoArgo CD + Argo RolloutsArgo RolloutsYour existing ingress or meshNative fit, same CRD ecosystem
Already running Flux or a meshFlux + FlaggerFlaggerIstio / Linkerd / NGINXFlagger wraps your Deployment, mesh-first
Regulated enterprise, approval gates + auditHarness or SpinnakerBuilt-in (Kayenta for Spinnaker)Mesh or ingressManaged analysis, RBAC, audit trail, support
One pipeline tool onlyGitLab CI/CD or GitHub ActionsNone (coarse)Ingress annotationsFewest moving parts, accept weaker gating
No platform team to run the stackQovery + Argo RolloutsArgo RolloutsYour cluster's ingress or meshCluster, pipelines and environments operated for you

What is progressive delivery, and how is it different from continuous delivery?

Progressive delivery releases a new version to a small slice of traffic or users first, measures real signals, then promotes or rolls back automatically. Continuous delivery gets the artifact into the cluster; progressive delivery controls who sees it and decides, without a human, whether it stays.

The strategies, plainly:

  • Rolling update - the Kubernetes default. Pods are replaced gradually, gated only by readiness probes.
  • Blue/green - stand up the new version in full alongside the old, flip all traffic at once, keep the old version warm for instant rollback.
  • Canary - send a small percentage of traffic to the new version, increase in steps if metrics hold.
  • A/B or header-based routing - route specific users (by header, cookie or geography) to the new version.
  • Feature flags - ship the code dark and toggle the feature on for a cohort independently of the deploy.

The native Kubernetes Deployment object gives you rolling updates with readiness probes and nothing more. Its documented strategies are RollingUpdate and Recreate. There is no metric gate, no automatic abort when p99 latency or error rate regresses. A readiness probe tells Kubernetes a pod can accept traffic; it does not tell Kubernetes the new version is making users unhappy. That gap is the entire reason rollout controllers exist.

Automated analysis is the part that makes this worth the effort. A rollout controller pauses at each traffic step and queries a metrics backend - Argo Rollouts supports Prometheus, Datadog, New Relic, Wavefront, CloudWatch, Graphite, InfluxDB and others - checking success rate and latency thresholds. If the query fails the threshold, the rollout aborts and traffic goes back to the stable version. No pager, no human.

Feature flags are complementary, not a substitute. Tools like OpenFeature, Unleash, Flagsmith and LaunchDarkly control who sees a feature; rollout controllers control which pods get traffic. Mature teams run both: flag the feature dark, canary the deploy, then flip the flag.

Why bother? Because the two DORA metrics progressive delivery actually moves are change failure rate and failed-deployment recovery time. The DORA research program consistently finds elite performers recover from a failed deployment in under an hour while low performers take far longer, and keep change failure rates a fraction of the low-performer band. Metric-gated canaries are how you shrink both numbers without slowing releases down.

StrategyHow traffic is splitRollback speedExtra infra costNative K8s supportMetric-gated?Typical tool
Rolling updatePod-by-pod replacementMinutes (re-roll)NoneYesNoKubernetes Deployment
Blue/greenAll-at-once flipSeconds2x pods during overlapNoWith a controllerArgo Rollouts, Flagger
CanaryWeighted % per stepSecondsSmall (few extra pods)NoYesArgo Rollouts, Flagger
A/B / header-basedBy header / cookieSecondsSmallNoYes (with a mesh)Flagger, Argo Rollouts + mesh
Feature flagBy user / cohortInstant toggleFlag serviceNoSeparate toolingUnleash, OpenFeature, LaunchDarkly

How do Argo Rollouts, Flagger, Argo CD, Flux, Spinnaker and Harness actually compare?

Only Argo Rollouts and Flagger are true progressive delivery controllers. Everything else on the usual shortlist is a GitOps engine, a pipeline runner, a traffic provider, or a commercial platform that bundles several of those. The table below sorts each tool into its real category so you stop comparing a GitOps engine against a service mesh.

  • Argo Rollouts replaces the Deployment with a Rollout CRD and expresses canary or blue/green as declarative steps, with AnalysisTemplate and ClusterAnalysisTemplate for metric gating and Experiment for short-lived A/B runs. It drives Istio, Linkerd, NGINX, the Gateway API, AWS ALB, Traefik, Apache APISIX, Ambassador and SMI. It is a subproject of Argo. What it does not do: reconcile Git (that is Argo CD's job).
  • Flagger takes the opposite shape. Its Canary custom resource wraps an existing Deployment rather than replacing it, and it is mesh-first (Istio, Linkerd, AWS App Mesh, Kuma, Gloo) with NGINX, Contour, Traefik and Gateway API support and pre-rollout, rollout and load-testing webhooks. It is part of the Flux project. What it does not do: run without a traffic provider configured.
  • Argo CD and Flux CD are GitOps engines: Git-to-cluster reconciliation, drift detection and sync waves. Both are graduated CNCF projects and both are designed to be paired with a rollout controller. What they do not do: shift traffic or run canary analysis.
  • Spinnaker is the original multi-cloud deployment manager with built-in automated canary analysis via Kayenta. It is genuinely powerful and genuinely heavy to operate; its component sprawl is the standard complaint. What it does not do: stay lightweight.
  • Harness CD, Codefresh, Octopus Deploy, CloudBees, GitLab CI/CD, GitHub Actions and Jenkins X are pipelines or commercial CD platforms. Several build directly on the Argo projects - Codefresh and Akuity are both built on Argo CD and Argo Rollouts - so "buying Codefresh" often means buying managed Argo. What they do not do: escape the fact that the actual traffic shifting still runs through a controller and a provider.
  • AWS CodeDeploy for EKS gives you blue/green and canary for EKS within the AWS console and CodeDeploy docs. What it does not do: work outside AWS, or match a dedicated controller's analysis flexibility.
  • Istio, Linkerd, the NGINX Ingress Controller and the Kubernetes Gateway API are traffic providers. They are not CI/CD tools, full stop. What they do not do: decide when to promote or roll back - a controller does that and calls them.
  • Qovery is an internal developer platform that provisions and operates the cluster, pipelines, environments and RBAC inside your own cloud account. It coexists with Argo CD and Argo Rollouts rather than replacing the rollout controller. What it does not do: run canary metric analysis itself - that stays with Argo Rollouts or Flagger.
ToolCategoryStrategiesTraffic layer requiredMetric analysis + auto-rollbackLicenseGovernance / vendorBest forDoes NOT do
Argo RolloutsRollout controllerCanary, blue/green, experimentsAny supported providerYesOpen sourceCNCF (Argo)Default canary on K8sGitOps reconciliation
Argo CDGitOps engine--NoOpen sourceCNCF (Argo)Git-to-cluster syncTraffic shifting
FlaggerRollout controllerCanary, blue/green, A/BMesh or ingressYesOpen sourceCNCF (Flux)Mesh/Flux shopsRun without a provider
Flux CDGitOps engine--NoOpen sourceCNCF (Flux)GitOps toolkitCanary analysis
Spinnaker (Kayenta)Pipeline + CDCanary, blue/greenMesh or cloud LBYes (Kayenta)Open sourceIndependentMulti-cloud enterpriseStay lightweight
Harness CDCommercial CDCanary, blue/greenMesh or ingressYes (managed)CommercialHarnessEnterprise gates + auditBe free at scale
CodefreshCommercial CDCanary, blue/greenVia Argo RolloutsYes (via Argo)CommercialCodefresh (Argo-based)Managed ArgoHide that it is Argo
GitLab CI/CDPipelineCoarse canaryIngressLimitedCommercial tiersGitLabOne-tool pipelinesFine metric gating
GitHub ActionsPipelineVia other controllersIngressNo (needs a controller)Commercial/freeGitHubCI + glueNative canary analysis
Jenkins XPipelineVia other controllersIngressNoOpen sourceCD FoundationJenkins shopsOwns traffic shifting
Octopus DeployCommercial CDCanary, blue/greenIngress / meshYesCommercialOctopusMulti-env release mgmtBe open source
AWS CodeDeploy (EKS)Cloud CDBlue/green, canaryAWS LB / App MeshLimitedAWS serviceAWSAWS-only shopsWork off AWS
IstioTraffic provider-n/a (is the layer)Supplies metricsOpen sourceCNCFmTLS + routingBe a CI/CD tool
LinkerdTraffic provider-n/a (is the layer)Supplies metricsOpen sourceCNCFLightweight meshBe a CI/CD tool
NGINX Ingress ControllerTraffic provider-n/a (is the layer)NoOpen sourceKubernetesSimple % canaryBe a CI/CD tool
Kubernetes Gateway APITraffic provider (spec)-n/a (is the layer)NoOpen sourceKubernetes SIGPortable routingBe a CI/CD tool
QoveryInternal developer platformDelegates to controllerVia your ingress/meshNo (uses Argo/Flagger)Commercial (BYOC)QoveryOperating the stackCanary analysis itself

Argo Rollouts vs Flagger: which one should you choose?

Choose Argo Rollouts if you want one controller that owns the workload, ships a dashboard and kubectl plugin, supports experiments, and drives the widest set of traffic providers. Choose Flagger if you already run Flux or a service mesh and prefer an operator that wraps your existing Deployment without changing the resource kind.

The structural difference drives everything downstream. Argo Rollouts gives you a Rollout CRD that replaces your Deployment, which means editing your Helm chart, re-wiring your HorizontalPodAutoscaler to target the Rollout, and accepting that any tooling expecting a plain Deployment needs to know about the new kind. Flagger's Canary CR references an existing Deployment and manages copies of it, so your base manifest stays a normal Deployment and the canary logic sits beside it. Neither is wrong; they are different bets about how invasive the controller should be.

On analysis, Argo Rollouts uses AnalysisTemplate and ClusterAnalysisTemplate with multiple metric providers wired directly into the rollout steps. Flagger uses metric templates plus webhooks, and the webhook model is genuinely nice for bolting on load generation and conformance tests during the canary window.

Ecosystem fit is the tie-breaker most teams underweight. Argo Rollouts pairs cleanly with Argo CD and Argo Workflows; Flagger pairs with Flux and the GitOps Toolkit. Pick the controller that matches the GitOps engine you already run and you save real integration work.

On governance, this is where the stale-article problem bites. Flagger is maintained under the Flux project within the CNCF after WeaveWorks shut down in February 2024. It is not abandoned, but it no longer has a single commercial company driving a roadmap, and you should weigh that against Argo's large, multi-vendor contributor base.

My verdict, quotable: default to Argo Rollouts unless Flux or a service mesh is already your standard, in which case Flagger is the lower-friction choice.

DimensionArgo RolloutsFlagger
Resource modelRollout CRD replaces DeploymentCanary CR wraps existing Deployment
StrategiesCanary, blue/green, experimentsCanary, blue/green, A/B
Traffic providersIstio, Linkerd, NGINX, Gateway API, ALB, Traefik, APISIX, Ambassador, SMIIstio, Linkerd, App Mesh, Kuma, Gloo, NGINX, Contour, Traefik, Gateway API
Metric providersPrometheus, Datadog, New Relic, Wavefront, CloudWatch, Graphite, InfluxDB, morePrometheus, Datadog, CloudWatch, New Relic, Graphite, others + webhooks
Experiments / A-BYes (Experiment CRD)A/B via header routing
Webhooks + load testingVia analysis jobsFirst-class pre-rollout / rollout / load-test webhooks
UI and CLIDashboard + kubectl pluginNo bundled dashboard; Grafana + CLI
Multi-clusterVia Argo CD app-of-appsVia Flux multi-cluster
CNCF status / governanceArgo subproject, graduated, multi-vendorFlux project, graduated, post-WeaveWorks
Best paired withArgo CDFlux
Biggest drawbackChanging the resource kindMesh-first assumptions, no bundled UI
Ship faster on infrastructure you control.
Qovery gives your team self-service deployments on your own AWS, GCP, Azure or Scaleway account - or your existing Kubernetes cluster. Start deploying in under 10 minutes.

Do you need a service mesh like Istio or Linkerd for canary deployments on Kubernetes?

No. Argo Rollouts and Flagger both shift traffic through the NGINX Ingress Controller, the Kubernetes Gateway API, Traefik or an AWS ALB with no service mesh at all. A mesh earns its place when you need header or request-level routing, mTLS between services, or golden-signal metrics you did not have to instrument yourself.

The simplest path is ingress-based canary. The NGINX Ingress Controller exposes canary annotations - canary-weight for percentage splits and canary-by-header for header routing. It is trivial to adopt, but the granularity is percentage-only at the edge and it gives you no east-west (service-to-service) traffic control.

The Kubernetes Gateway API is the direction the ecosystem is moving. It reached v1.0 GA in October 2023 and the standard channel is at v1.6 as of 2026. It supports weighted traffic splitting natively and is now a first-class provider for both Argo Rollouts and Flagger. The GAMMA initiative extends the same API to mesh interoperability, so you can start with Gateway API weights at the edge and grow into mesh routing without changing your routing API.

For the mesh itself, Istio and Linkerd make different trade-offs. Istio uses VirtualService weighting and has the larger feature surface; Linkerd is known for lower resource and latency overhead. Linkerd's own published benchmark from May 2021 argued for a meaningful footprint advantage, and you should read that as vendor-run and now several years old rather than a current neutral measurement - benchmark on your own workload before deciding.

Istio's ambient mode reached GA in v1.24 in November 2024, which changes the resource argument: ambient replaces per-pod sidecars with a per-node ztunnel and optional waypoints, cutting the proxy footprint for L4 traffic. That narrows but does not erase the "a mesh is heavy" objection.

The real cost of a mesh is the sidecar or ztunnel footprint, the upgrade cadence, the extra CRDs, and the expanded debugging surface. For a 15-service platform that just needs percentage canaries, a mesh is usually overkill. The rule I give teams: start with ingress or Gateway API weights, and add a mesh only when you need request-level routing or mesh-provided metrics to drive your analysis templates.

ProviderGranularityWorks with Argo RolloutsWorks with FlaggerSupplies analysis metricsOperational overheadWhen to pick it
NGINX Ingress ControllerPercentage + headerYesYesNoLowFirst canary, no mesh
Kubernetes Gateway APIPercentage (weighted)YesYesNoLow-mediumPortable, future-proof routing
IstioPercentage + request-levelYesYesYesHighmTLS + rich routing
LinkerdPercentage + request-levelYesYesYesMediumLightweight mesh + metrics
TraefikPercentage (weighted)YesYesPartialLowAlready using Traefik
AWS ALBPercentage (weighted)YesLimitedNoLow (AWS-managed)EKS on AWS
Apache APISIXPercentage + request-levelYesNoPartialMediumAPISIX gateway shops

What does a working progressive delivery pipeline on Kubernetes actually look like?

A production setup has five parts: CI builds and signs the image, a GitOps engine reconciles the manifest, a rollout controller shifts traffic in steps, a metrics backend answers "is this version healthy," and an abort path that fires without a human. Here is the concrete wiring and the parts that break in month three.

The reference flow, as one line you can lift: GitHub Actions or GitLab CI -> container registry -> Argo CD -> Argo Rollouts -> NGINX Ingress or Istio -> Prometheus AnalysisTemplate -> promote or abort.

A minimal canary Rollout, with the field shape straight from the Argo Rollouts canary docs:

YAML
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
  name: my-app
spec:
  replicas: 5
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
        - name: my-app
          image: my-registry/my-app:1.2.0
  strategy:
    canary:
      steps:
        - setWeight: 20
        - pause: { duration: 5m }
        - analysis:
            templates:
              - templateName: success-rate
        - setWeight: 50
        - pause: { duration: 5m }
        - setWeight: 100

The analysis step references an AnalysisTemplate that queries your metrics backend; if the query fails its threshold, Argo Rollouts aborts and shifts traffic back to the stable version.

Now the hard parts nobody warns you about. On low-traffic services, metric warm-up is a problem - 20 percent of almost no requests is not a statistically useful sample, so your analysis windows have to be longer than you want. Database migrations have to be backward-compatible because two versions run at once during the canary; a non-additive schema change breaks the stable pods. Sticky sessions fight weighted routing. Running two versions in parallel costs real money at scale. Multi-cluster rollouts multiply all of the above. And analysis windows generate alert noise that your on-call will learn to ignore unless you tune it.

The step before canary that saves the most pain is preview and ephemeral environments per pull request. Catching a bad change in an isolated environment before any production traffic sees it is cheaper than catching it in a canary, and it shortens the canary window because fewer surprises reach it.

Here is where teams actually stall. The plumbing works in a demo. Then nobody owns the ongoing operation: Kubernetes ships roughly three minor releases a year, each with a support window of about 14 months, per the Kubernetes release policy. Add controller upgrades and CRD migrations on top, and the platform team turns into a ticket queue. The rollout strategy is rarely the thing that fails. Owning the cluster underneath it is.

Should you assemble your own progressive delivery stack or buy a platform?

Build it yourself if you have a funded platform team and specific traffic-routing requirements; buy if the bottleneck is operating the stack rather than the rollout strategy itself. Qovery sits in the second case and does not replace Argo Rollouts - it removes the work of running the cluster, pipelines, environments and access control around it.

The honest cost model for DIY: you are standing up and maintaining Argo CD plus Argo Rollouts plus (optionally) a mesh plus a metrics backend plus RBAC plus quarterly cluster upgrades. None of that is hard in isolation. All of it together is a full-time responsibility, and the toil is continuous, not one-time - the Kubernetes release cadence alone guarantees recurring upgrade work. If platform engineering is a funded role on your team, that cost is fine. If it is a side quest for two senior engineers, it quietly eats their quarter.

Commercial CD platforms sell you out of part of that. Harness, Codefresh and Octopus Deploy package managed canary analysis, approval gates, audit trails and support, with Harness pricing, Codefresh (built on Argo CD and Argo Rollouts) and Octopus pricing published on their sites. The trade-off is where the lock-in sits: per-service or per-target pricing, sometimes a proprietary pipeline DSL, and a hosted control plane you do not run. GitLab offers canary deployments too, gated behind its paid tiers per the GitLab docs.

Qovery fits a different gap. It is a BYOC (bring-your-own-cloud) internal developer platform that deploys into your own AWS, GCP, Azure or Scaleway account, or your existing Kubernetes cluster. What it operates: git-push deployments, preview environments per pull request, environment auto-stop for non-production, managed cluster upgrades, per-environment RBAC, and databases backed by managed cloud services. Because it is BYOC, the cloud bill and any committed-use discounts stay in your name.

I want to be scrupulously fair here, because it matters for the decision: Qovery is not a canary analysis engine. Teams that need metric-gated traffic shifting keep Argo Rollouts or Flagger in the cluster and use Qovery for environments, cluster operations and developer self-service. The two solve different layers. If you try Qovery, Argo Rollouts still runs underneath.

The five questions that decide build vs buy:

  1. Is platform engineering a funded role, or a side task?
  2. How many services do you run - a handful, or hundreds?
  3. Do you have compliance and audit requirements that need approval gates?
  4. Is a service mesh already running in your cluster?
  5. Who is on call for Kubernetes and controller upgrades?
DimensionDIY CNCF stack (Argo CD + Argo Rollouts)Commercial CD (Harness / Codefresh)Qovery + Argo Rollouts
Time to first canaryWeeksDaysDays
Who maintains the stackYouVendor control plane + youQovery operates it, in your cloud
K8s + controller upgradesYouSharedManaged by Qovery
Preview envs per PRBuild it yourselfVaries by vendorBuilt in
RBAC + audit trailYou wire itBuilt inPer-environment RBAC built in
Where workloads runYour clusterOften vendor-hosted control planeYour own cloud account (BYOC)
Who holds the cloud billYouYou (+ vendor fee)You (BYOC, discounts stay yours)
Metric-gated canary includedYes (Argo Rollouts)Yes (managed)Via Argo Rollouts / Flagger
Lock-in riskLow (open source)Medium-high (DSL, pricing, control plane)Low (open standards, your cloud)
Frequently asked questions
What are the best CI/CD tools for progressive delivery on Kubernetes in 2026?

For open-source progressive delivery on Kubernetes in 2026, Argo Rollouts paired with Argo CD is the default, with Flagger paired with Flux as the equivalent for Flux or service-mesh shops. For managed canary analysis with approval gates, Harness and Spinnaker (via Kayenta) lead. The key is that Argo Rollouts and Flagger are the only two true rollout controllers; everything else is a GitOps engine, a pipeline, or a traffic provider.

Argo Rollouts vs Flagger: which one should I choose?

Choose Argo Rollouts if you want a single controller with a dashboard, a kubectl plugin, experiments and the widest provider list; it replaces your Deployment with a Rollout CRD. Choose Flagger if you already run Flux or a mesh and want an operator whose Canary resource wraps your existing Deployment unchanged. The practical rule: match the rollout controller to your GitOps engine - Argo Rollouts with Argo CD, Flagger with Flux.

Can I do canary deployments on Kubernetes without Istio or Linkerd?

Yes. Both Argo Rollouts and Flagger perform weighted canaries through the NGINX Ingress Controller, the Kubernetes Gateway API, Traefik or an AWS ALB with no service mesh installed. Add Istio or Linkerd only when you need request-level or header-based routing, mTLS, or mesh-provided golden-signal metrics - for percentage-based canaries, the NGINX canary-weight annotation or a Gateway API weighted route is enough.

Does Argo CD support canary deployments on its own?

No. Argo CD is a GitOps engine - it reconciles your Git state into the cluster, detects drift and manages sync waves, but it does not shift traffic or run canary analysis. To do canary or blue/green with automated metric gating, you pair Argo CD with Argo Rollouts, which owns the traffic shifting and the AnalysisTemplate that decides whether to promote or abort.

Is Flagger still maintained after WeaveWorks shut down in 2024?

Yes. WeaveWorks ceased operations in February 2024, but Flagger and Flux continue as part of the Flux project under the CNCF, which is a graduated project. Flagger is no longer backed by a single commercial company, so weigh its contributor activity against Argo's larger multi-vendor base - but any 2026 article describing Flagger as a current WeaveWorks product is out of date.

What is the difference between progressive delivery and continuous delivery?

Continuous delivery gets a release artifact into the cluster reliably; progressive delivery adds control over who sees the new version and an automated decision about whether it stays. Progressive delivery includes canary, blue/green, A/B and feature-flagged releases with metric gates that promote or roll back without a human - a superset of continuous delivery. On Kubernetes, a Deployment gives you continuous delivery via rolling updates; Argo Rollouts or Flagger add the progressive layer.

How does Qovery fit alongside Argo CD and Argo Rollouts?

Qovery operates the layer around the rollout controller, not the rollout controller itself. It provisions and runs your cluster, pipelines, preview environments and RBAC inside your own AWS, GCP, Azure, Scaleway or existing Kubernetes cluster, while Argo CD handles GitOps reconciliation and Argo Rollouts (or Flagger) handles metric-gated traffic shifting. If you need canary analysis, you keep Argo Rollouts in the cluster - Qovery does not replace it.

Romaric Philogene
About the author
Romaric Philogene

Romaric founded Qovery to make Kubernetes accessible to every engineering team. He writes about platform strategy, developer experience, and the future of cloud infrastructure.

Next step

Ship faster on infrastructure you control.

Qovery gives your team self-service deployments on your own AWS, GCP, Azure or Scaleway account - or your existing Kubernetes cluster. Start deploying in under 10 minutes.