11 software delivery problems solved by intelligence software delivery platform  Download
Select Page

Spinnaker blue/green deployment for Kubernetes

Neelima Manubolu September 22, 2019
Share

Spinnaker introduced traffic management in Kubernetes deployments in version 1.14. In this blog, we discuss the Blue/Green deployment strategy and how to configure in Spinnaker using traffic management.

Red/Black or Blue/Green Strategy :

  • Red/Black is to deploy a new version of your application alongside the existing version(s), send client traffic to the new version, and then disable traffic to the existing version in the cluster.
  • With a red/black deployment, you keep the previous version available as a hot standby to enable painless rollbacks.

Configuring Spinnaker using traffic management :

For managing traffic to a new server group and keep the current server group running without traffic the new deployment must support new server group deployment in parallel to an existing server group. For this strategy, replicaSet kind must be used for deployments.

Traffic management strategy works by adding service selector to replicaSet server group deployed. The replicaSet label selectors in the manifest must be different from service selectors to allow the service selectors to be cleanly added and removed without affecting the replicaSet deployments.

Step 1: First, let’s assume we have already deployed a Service manifest with arbitrary selector labels from which we would like our workloads to receive traffic:

kind: Service
apiVersion: v1
metadata:
  name: opsmx-kube-deploy
  namespace: default
spec:
  selector:
    app: opsmx-kube-deploy
  type: NodePort
  ports:
    - name: canary
      port: 8080
      protocol: TCP
      targetPort: 8080

Step 2: Create a pipeline with single Deploy (Manifest) stage to deploy our replicaSet manifest

Select Spinnaker Red/Black (Blue/Green) strategy to manage traffic to deployment

Select Spinnaker Red/Black (Blue/Green) strategy to manage traffic to deployment

apiVersion: extensions/v1beta1
kind: ReplicaSet
metadata:
  name: opsmx-kube-deploy
spec:
  replicas: 1
  selector:
    matchLabels:
      version:  'v1' 
  template:
    metadata:
      labels:
        version: 'v1' 
    spec:
      containers:
        - image: 'docker.io/opsmx/restapp:v1'
          imagePullPolicy: Always
          name: restapp
          ports:
            - containerPort: 8080
              name: http
              protocol: TCP
            - containerPort: 9090
              name: prometheus
              protocol: TCP

Step 3: Run your pipeline, manifest deployed will be modified with the insertion of “app: opsmx-kube-deploy” as follows.

apiVersion: extensions/v1beta1
kind: ReplicaSet
metadata:
  name: opsmx-kube-deploy
spec:
  replicas: 1
  selector:
    matchLabels:
      version:  'v1' 
  template:
    metadata:
      labels:
        version: 'v1' 
        app:  opsmx-kube-deploy
    spec:
      containers:
        - image: 'docker.io/opsmx/restapp:v1'
          imagePullPolicy: Always
          name: restapp
          ports:
            - containerPort: 8080
              name: http
              protocol: TCP
            - containerPort: 9090
              name: prometheus
              protocol: TCP

Rerun the deployment. Server Groups after the first deployment:

Server Groups after the first Spinnaker Blue/Green deployment to Kubernetes

Server Groups after the first Spinnaker Blue/Green deployment to Kubernetes

Rerun the deployment with version: v2 of replicaset and after Deployment (old version still available for fast rollback):

Rerun Spinnaker Blue/Green deployment to Kubernetes

Rerun Spinnaker Blue/Green deployment to Kubernetes

So in this article, we have shown you how to make deployments in Kubernetes clusters using blue/green deployment strategy using Spinnaker. If you wish to streamline your Continuous Delivery, please read the following articles:

  1. Spinnaker Pipeline – Blue/Green strategy with external versioning and Kubernetes Deployment object
  2. Kubernetes Red/Black (Blue/Green) deployments with Spinnaker

If you want to know more about the Spinnaker or request a demonstration, please book a meeting with us.

OpsMx is a leading provider of Continuous Delivery solutions that help enterprises safely deliver software at scale and without any human intervention. We help engineering teams take the risk and manual effort out of releasing innovations at the speed of modern business. For additional information, contact us

You May Like