Deployments

Loading concept...

🚀 Kubernetes Deployments: Your Army of Robot Helpers

Imagine you have a lemonade stand. But instead of just one stand, you want MANY stands all over the city. And if one breaks, you want a new one to pop up instantly. That’s what Kubernetes Deployments do for your apps!


🎯 The Big Picture: What Are We Learning?

graph TD A[ReplicaSets] --> B[Deployments] B --> C[Deployment Strategies] C --> D[Rolling Updates & Rollbacks] D --> E[Update Config] E --> F[Kubectl Commands]

Think of Deployments like being the manager of a robot factory. You tell the factory: “I need 5 robots working at all times.” If one robot breaks, the factory automatically builds a new one!


🤖 ReplicaSets: The Copy Machine

What is a ReplicaSet?

Imagine you have a magical copy machine. You put in ONE picture of a robot, and it makes EXACTLY as many copies as you ask for!

Simple Example:

  • You say: “I want 3 robots”
  • The copy machine makes 3 robots
  • If one robot falls down… POOF! A new one appears!
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: my-robots
spec:
  replicas: 3
  selector:
    matchLabels:
      app: robot
  template:
    metadata:
      labels:
        app: robot
    spec:
      containers:
      - name: robot
        image: robot:v1

What Each Part Means:

Part What It Does
replicas: 3 “I want 3 copies!”
selector “Look for things labeled ‘robot’”
template “Here’s the recipe to make one”

💡 Key Insight: ReplicaSets keep your app running even when things break. They’re like having backup players on a sports team!


🎮 Deployments: The Smart Manager

Why Not Just Use ReplicaSets?

ReplicaSets are good, but Deployments are BETTER! Here’s why:

Think of it this way:

  • ReplicaSet = A copy machine that makes robots
  • Deployment = A SMART manager who controls the copy machine AND can upgrade all robots safely!
graph TD A[Deployment] -->|creates & manages| B[ReplicaSet v1] A -->|creates new| C[ReplicaSet v2] B -->|creates| D[Pod 1] B -->|creates| E[Pod 2] C -->|creates| F[New Pod 1]

Your First Deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-web-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
      - name: web
        image: nginx:1.19

What happens when you apply this:

  1. ✅ Deployment is created
  2. ✅ It creates a ReplicaSet
  3. ✅ ReplicaSet creates 3 Pods
  4. ✅ Your app is running 3 times!

🎯 Deployment Strategies: How to Upgrade Safely

Imagine your lemonade stand recipe changes. You can’t just CLOSE all stands at once—people would be sad! Here are two ways to upgrade:

Strategy 1: Rolling Update (The Careful Way) 🐢

Replace robots one at a time, like changing tires on a moving car!

graph LR A[Old v1] --> B[Old v1 + New v2] B --> C[New v2 + New v2] C --> D[All New v2!]

How it works:

  1. Start 1 new robot (v2)
  2. Wait until it’s ready
  3. Stop 1 old robot (v1)
  4. Repeat until all are new!
spec:
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
Setting Meaning
maxSurge: 1 “You can have 1 EXTRA robot during update”
maxUnavailable: 1 “Only 1 robot can be ‘sleeping’ at a time”

Strategy 2: Recreate (The Quick Way) ⚡

Stop EVERYTHING, then start everything new. Fast but risky!

spec:
  strategy:
    type: Recreate

When to use each:

Situation Use This
Production apps RollingUpdate ✅
Testing/Dev Recreate ✅
Can’t run 2 versions Recreate ✅

🔄 Rolling Updates & Rollbacks: The Time Machine

Updating Your App

Your app is version 1. You want version 2. Here’s how!

Method 1: Change the YAML and apply

kubectl apply -f deployment.yaml

Method 2: Quick image update

kubectl set image deployment/my-app \
  web=nginx:1.20

What Happens During Update

graph TD A[You run update command] --> B[Deployment creates new ReplicaSet] B --> C[New pods start spinning up] C --> D[Old pods slowly shut down] D --> E[All traffic goes to new pods!]

🚨 Something Went Wrong? ROLLBACK!

Imagine your new lemonade recipe tastes bad. No problem! Go back to the OLD recipe instantly!

# See your history
kubectl rollout history deployment/my-app

# Go back to previous version
kubectl rollout undo deployment/my-app

# Go back to a SPECIFIC version
kubectl rollout undo deployment/my-app \
  --to-revision=2

Example output of history:

REVISION  CHANGE-CAUSE
1         First deployment
2         Updated to nginx:1.20
3         Updated to nginx:1.21

🎉 Magic Moment: Kubernetes keeps old ReplicaSets around (by default, the last 10). That’s how it can go back in time!


⚙️ Deployment Update Config

Fine-Tuning Your Updates

You can control exactly HOW updates happen!

spec:
  replicas: 10
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
  minReadySeconds: 10
  progressDeadlineSeconds: 600
  revisionHistoryLimit: 5

What Each Setting Does

Setting What It Means Example
maxSurge Extra pods allowed 25% of 10 = 2 extra pods OK
maxUnavailable Pods that can be down 25% of 10 = 2 can be “sleeping”
minReadySeconds Wait time before “ready” Wait 10 sec before moving on
progressDeadlineSeconds Max time for update Give up after 600 sec
revisionHistoryLimit How many old versions to keep Keep 5 old ReplicaSets

Real Example: Safe Production Update

spec:
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1        # Only 1 extra
      maxUnavailable: 0  # ZERO downtime!
  minReadySeconds: 30    # Wait 30 sec

This means: “Add new pods one by one, but NEVER take away a working pod until the new one is healthy for 30 seconds!”


🎛️ Kubectl Rollout Commands: Your Control Panel

The Complete Command Reference

graph TD A[kubectl rollout] --> B[status] A --> C[history] A --> D[pause] A --> E[resume] A --> F[undo] A --> G[restart]

Check Status (Is it working?)

# Watch the update happen live!
kubectl rollout status deployment/my-app

# Output:
# Waiting for rollout to finish:
#   2 of 3 updated replicas are ready
# deployment "my-app" successfully rolled out

See History (What happened before?)

kubectl rollout history deployment/my-app

# See details of specific version
kubectl rollout history deployment/my-app \
  --revision=2

Pause & Resume (Take a break!)

# PAUSE the update (freeze!)
kubectl rollout pause deployment/my-app

# Make changes while paused...
kubectl set image deployment/my-app web=v2
kubectl set resources deployment/my-app \
  -c=web --limits=memory=512Mi

# RESUME when ready
kubectl rollout resume deployment/my-app

Undo (Go back in time!)

# Go back one version
kubectl rollout undo deployment/my-app

# Go to specific version
kubectl rollout undo deployment/my-app \
  --to-revision=3

Restart (Fresh start!)

# Restart all pods (keeps same version)
kubectl rollout restart deployment/my-app

📋 Quick Command Cheatsheet

What You Want Command
Create deployment kubectl apply -f deploy.yaml
Update image kubectl set image deploy/NAME c=img:tag
Check status kubectl rollout status deploy/NAME
See history kubectl rollout history deploy/NAME
Rollback kubectl rollout undo deploy/NAME
Pause update kubectl rollout pause deploy/NAME
Resume update kubectl rollout resume deploy/NAME
Restart pods kubectl rollout restart deploy/NAME

🌟 Summary: You’re Now a Deployment Pro!

graph TD A[ReplicaSet: Keeps copies running] --> B[Deployment: Manages ReplicaSets] B --> C[Strategies: How to update] C --> D[Rolling: Safe & slow] C --> E[Recreate: Fast & risky] B --> F[Rollback: Time travel!] B --> G[Commands: Your control panel]

Key Takeaways:

  1. 🤖 ReplicaSets = Keep your desired number of pods running
  2. 🎮 Deployments = Smart managers that handle updates
  3. 🐢 Rolling Updates = Safe, gradual upgrades
  4. Recreate = Fast but causes downtime
  5. Rollbacks = Your safety net when things go wrong
  6. 🎛️ Kubectl rollout = Your command center for control

💪 You Did It! You now understand how Kubernetes keeps your apps running smoothly, updates them safely, and lets you fix mistakes instantly. That’s the power of Deployments!

Loading story...

No Story Available

This concept doesn't have a story yet.

Story Preview

Story - Premium Content

Please sign in to view this concept and start learning.

Upgrade to Premium to unlock full access to all content.

Interactive Preview

Interactive - Premium Content

Please sign in to view this concept and start learning.

Upgrade to Premium to unlock full access to all content.

No Interactive Content

This concept doesn't have interactive content yet.

Cheatsheet Preview

Cheatsheet - Premium Content

Please sign in to view this concept and start learning.

Upgrade to Premium to unlock full access to all content.

No Cheatsheet Available

This concept doesn't have a cheatsheet yet.

Quiz Preview

Quiz - Premium Content

Please sign in to view this concept and start learning.

Upgrade to Premium to unlock full access to all content.

No Quiz Available

This concept doesn't have a quiz yet.