Perfect! Here's a Minikube-friendly Blue-Green deployment setup bundled into 3 YAML files and a quick guide to test it.
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
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
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
kubectl apply -f blue-deployment.yaml
kubectl apply -f green-deployment.yaml
kubectl apply -f webapp-service.yaml
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).
kubectl patch service webapp-service -p '{"spec":{"selector":{"app":"webapp","version":"green"}}}'
Refresh the browser β now itβs green!
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?