Blue-Green Deployments with Spinnaker

From NovaOrdis Knowledge Base
Jump to navigation Jump to search

External

Internal

Overview

This article documents a pipeline that deploys a release in a Stage environment, waits for testing, the deploys the same release in Prod. The application is a Helm-packaged Kubernetes application, but some of the Kuberentes resources are created manually directly in Spinnaker.

Create Services

Create two Services ("stage" and "prod") within the Spinnaker Application.

Load Balancers → Create Load Balancer

Select the right "account" (Kubernetes cluster)

Manifest (do not forget to adjust the namespace):

apiVersion: v1
kind: Service
metadata:
  name: stage
  namespace: of02
spec:
  type: ClusterIP
  selector:
    stage: 'true' # this label will be dynamically applied to the workload pods
  ports:
    - port: 8080
      name: http
      targetPort: 8080
apiVersion: v1
kind: Service
metadata:
  name: prod
  namespace: of02
spec:
  type: ClusterIP
  selector:
    prod: 'true' # this label will be dynamically applied to the workload pods
  ports:
    - port: 8080
      name: http
      targetPort: 8080


Create the Pipeline

It will be a "deploy to stage → manual testing → manual judgement → deploy to prod" pipeline.

Name: "Stage - Manual Testing - Prod" (no "→" allowed in name)

Add stage → Bake (Manifest). This stage will render the helm chart, apply the configuration overlay and overwrite the image tag. For more details, see:

Bake (Manifest)

Organizatorium

TO PROCESS: