Kubernetes is now the de-facto standard for container orchestration. With more and more organizations adopting Kubernetes, it is essential that we get our fundamental ops-infra in place before any migration. This post will focus on pushing out new releases of the application to our Kubernetes cluster i.e. Continuous Delivery.
Pre-Requisites
- Running Kubernetes Cluster (GKE is used for the purpose of this blog).
- A Spinnaker set-up with Jenkins CI enabled.
- Github webhook enabled for Jenkins jobs.
Strategy Overview
- Github + Jenkins : CI System to build the docker image and push to registry.
- Docker hub: Registry to store docker images.
- Spinnaker : CD System to enable automatic deployments to Staging environment and supervised deployment to Production.
Continuous Integration System
Although this post is about the CD system using Spinnaker. I want to briefly go over the CI pipeline so that the bigger picture is clear.