Continuous integration and -deployment with GitHub, CircleCI and Kubernetes in Azure
Deploying an application is traditionally the most challenging part of the software delivery process. No two machines are the same, the guy who usually does the deployments is on vacation, and risk of disrupting production is ever looming. Without proper automation and safety checks, it can be a very daunting process.
In the modern, containerized world of applications, deployments can be more easily automated, with more safety checks, and with far fewer variables than before. Rather than deploying to a multitude of machines, each with their own configurations and dependencies, we can simply deploy our self-contained application as a container, and be confident it will run.
To achieve this, processes known as continuous integration and continuous delivery (often abbreviated as CI and CD, respectively) are frequently used to automate the process of building, testing, and sometimes even deploying applications.
Continuous delivery implies that every change made to the code will be — after tests have succeeded — immediately deployable. Taken one step further, continuous deployment ensures that every change is immediately deployed.
This guide outlines the process of hosting your code on GitHub, building and testing it using CircleCI, and eventually deploying a Docker image to a Kubernetes cluster, either fully- or semi automatically.
Obligatory note: the author of this article is in no way affiliated with any of the technology providers mentioned in this guide.
The goal of this guide is to establish a baseline CI/CD implementation that will work well for small teams, while at the same time allows you to scale as your product grows.
By the end of this guide you will have:
- Created a source code repository
- Set up automated builds and testing for your project
- Set up automated Docker builds for your project
- Connected to your Kubernetes cluster
- Set up automated deployments using Keel for your project