Blue-Green Deployment in K8s
The Blue deployment
kubectl apply -f chap-7-blue-deployment-defn.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-blue-deployment
spec:
replicas: 3
selector:
matchLabels:
app: frontend
version: blue
template:
metadata:
labels:
app: frontend
version: blue
spec:
containers:
- name: nginx
image: nginx:1.14.2
resources:
limits:
memory: "100Mi"
cpu: "100m"
ports:
- containerPort: 80
The Blue service
kubectl apply -f chap-7-blue-svc-defn.yaml
apiVersion: v1
kind: Service
metadata:
name: frontend
spec:
selector:
app: frontend
version: blue
ports:
- port: 8080
targetPort: 80
type: NodePort
The Green deployment
kubectl apply -f chap-6-deployment-update-defn.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-green-deployment
spec:
replicas: 3
selector:
matchLabels:
app: frontend
version: green
template:
metadata:
labels:
app: frontend
version: green
spec:
containers:
- name: nginx
image: nginx:1.20.2
resources:
limits:
memory: "100Mi"
cpu: "100m"
ports:
- containerPort: 80
Or
kubectl set image deployment/nginx-deployment nginx=nginx:1.20.2
The Green service
kubectl apply -f chap-7-green-svc-defn.yaml
apiVersion: v1
kind: Service
metadata:
name: frontend
spec:
selector:
app: frontend
version: green
ports:
- port: 8080
targetPort: 80
type: NodePort
Remove the old blue deployment
kubectl delete -f chap-7-blue-deployment-defn.yaml
Reference
https://codefresh.io/learn/software-deployment/what-is-blue-green-deployment/
- Kubernetes for Jobseekers, Gopalakrishnan, Shivakumar