Skip to content

Instantly share code, notes, and snippets.

@ronnelsantiago
Created April 22, 2025 23:29
Show Gist options
  • Save ronnelsantiago/6d14ccd259585999d48bd8de29440696 to your computer and use it in GitHub Desktop.
Save ronnelsantiago/6d14ccd259585999d48bd8de29440696 to your computer and use it in GitHub Desktop.

Perfect! Here's a Minikube-friendly Blue-Green deployment setup bundled into 3 YAML files and a quick guide to test it.


πŸ—‚ Files

πŸ”Ή blue-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: webapp-blue
spec:
  replicas: 2
  selector:
    matchLabels:
      app: webapp
      version: blue
  template:
    metadata:
      labels:
        app: webapp
        version: blue
    spec:
      containers:
      - name: webapp
        image: kodekloud/webapp-color
        args: ["--color", "blue"]
        ports:
        - containerPort: 8080

🟩 green-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: webapp-green
spec:
  replicas: 2
  selector:
    matchLabels:
      app: webapp
      version: green
  template:
    metadata:
      labels:
        app: webapp
        version: green
    spec:
      containers:
      - name: webapp
        image: kodekloud/webapp-color
        args: ["--color", "green"]
        ports:
        - containerPort: 8080

🌐 webapp-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: webapp-service
spec:
  type: NodePort
  selector:
    app: webapp
    version: blue   # Initial version: blue
  ports:
  - port: 80
    targetPort: 8080
    nodePort: 30007  # Fixed port for Minikube access

πŸš€ Deploy Everything

kubectl apply -f blue-deployment.yaml
kubectl apply -f green-deployment.yaml
kubectl apply -f webapp-service.yaml

🌐 Access in Browser

If you're using Minikube, run:

minikube service webapp-service --url

Or directly open:

http://<minikube-ip>:30007

Get Minikube IP:

minikube ip

You should see a blue background (initial version).


πŸ” Switch to Green (simulate release)

kubectl patch service webapp-service -p '{"spec":{"selector":{"app":"webapp","version":"green"}}}'

Refresh the browser β€” now it’s green!


πŸ”™ Roll Back to Blue

kubectl patch service webapp-service -p '{"spec":{"selector":{"app":"webapp","version":"blue"}}}'

Want me to create a shell script that automates all of this including the switch?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment