Skip to content

Blue-Green Deployment in K8s

blud-green-ingress

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
Leave Your Message