DEV Community

Cover image for 7 Kubernetes Deployment Strategies: Rolling, Canary, Blue/Green & More
Naveed Ahmed
Naveed Ahmed

Posted on Originally published at blog.naveedkumbhar.com

7 Kubernetes Deployment Strategies: Rolling, Canary, Blue/Green & More

Originally published on Naveed Ahmed's Engineering Blog.

Most Kubernetes teams start with RollingUpdate.

It works well for many applications, but there are situations where you need more control over traffic, rollback behavior, or the number of users exposed to a new release.

That's where different Kubernetes deployment strategies become useful.

Let's look at seven approaches and when to use them.

1. Rolling Update

RollingUpdate is the default Kubernetes Deployment strategy.

It gradually replaces old Pods with new ones.

strategy:
  type: RollingUpdate
  rollingUpdate:
    maxSurge: 25%
    maxUnavailable: 0
Enter fullscreen mode Exit fullscreen mode

With enough available capacity and correctly configured readiness checks, this can help maintain application availability during a rollout.

Best for: Stateless applications with backward-compatible changes.

2. Ramped Rollout

A ramped rollout is a more controlled variation of RollingUpdate.

Instead of updating several Pods at once, you replace them in smaller batches.

strategy:
  type: RollingUpdate
  rollingUpdate:
    maxSurge: 1
    maxUnavailable: 0
minReadySeconds: 30
Enter fullscreen mode Exit fullscreen mode

This limits the pace of Pod replacement and requires newly ready Pods to remain ready for a minimum period.

Best for: Applications that need cautious rollouts or time for warm-up and observation.

3. Recreate

Recreate terminates the old application Pods before creating the replacement Pods.

strategy:
  type: Recreate
Enter fullscreen mode Exit fullscreen mode

It's simple, but it normally creates an availability gap.

Best for: Applications that cannot safely run old and new versions together, where downtime is acceptable.

4. Blue/Green Deployment

Blue/Green keeps two application environments:

  • Blue: Current production version
  • Green: New application version

You validate Green before switching production traffic to it.

If something goes wrong, traffic can be routed back to Blue, provided the old version remains compatible with shared dependencies.

Best for: Releases requiring controlled cutovers and fast traffic-based rollback.

5. Canary Deployment

Canary deployment gradually exposes the new application version to real users.

For example:

Stable Version: 95%
Canary Version: 5%
Enter fullscreen mode Exit fullscreen mode

Monitor error rates, latency, and application metrics before increasing the new version's traffic share.

Argo Rollouts and compatible traffic-routing tools can automate progressive delivery.

Best for: High-traffic applications where limiting the initial blast radius matters.

6. A/B Testing

A/B testing routes different groups of users to different versions.

Unlike Canary, the primary goal is often to compare user behavior or product outcomes rather than simply validate release stability.

Best for: Feature experiments, beta releases, and user-segment testing.

7. Shadow Deployment

Shadow deployment sends a copy of production requests to a new application version.

Users still receive responses from the stable application.

This allows teams to observe how the new version behaves under realistic traffic.

Best for: Performance testing, infrastructure changes, and validating new services before cutover.

Be careful with database writes and other side effects from mirrored requests.


Which Kubernetes Deployment Strategy Should You Choose?

Strategy Main advantage Main trade-off
Rolling Update Simple gradual release Mixed application versions
Ramped Slower, controlled replacement Longer rollout
Recreate Avoids concurrent versions Downtime
Blue/Green Controlled traffic switching Duplicate capacity
Canary Limits initial exposure Routing and monitoring complexity
A/B Testing User-segment experimentation More complex routing
Shadow Tests with mirrored requests Extra load and side-effect risks

The best choice depends on application architecture, downtime tolerance, available capacity, and rollback requirements.

Production Checks That Matter

Before using any deployment strategy, verify:

  • Readiness and startup behavior
  • Available cluster resources
  • Application and database compatibility
  • Rollout monitoring
  • Rollback procedures
  • Error rates and latency
  • Traffic-routing configuration

Useful Kubernetes commands include:

kubectl rollout status deployment/my-app

kubectl describe deployment my-app

kubectl rollout history deployment/my-app

kubectl rollout undo deployment/my-app
Enter fullscreen mode Exit fullscreen mode

A successful rollout status doesn't necessarily mean every user-facing feature is working correctly.


Read the Full Kubernetes Deployment Guide

In my complete article, I compare all seven strategies with architecture diagrams, deployment manifests, production considerations, and troubleshooting examples.

Read the Complete Guide: 7 Kubernetes Deployment Strategies and When to Use Each


Final Thoughts

There's no single deployment strategy that works best for every application.

RollingUpdate is a good default, but Blue/Green, Canary, and Shadow patterns can provide additional control when your requirements become more complex.

The important part is understanding the trade-offs before deploying to production.

Which Kubernetes deployment strategy does your team use most often, and why?


Written by Naveed Ahmed — Lead DevOps & Platform Architect

Engineering Blog | GitHub | Kubernetes Mastery

Top comments (0)