This is the story behind our own DevOps tooling application Kólga. How to utilize Kólga for building microservice application and a hands on experience can be found in our Medium channel; Speeding up the software delivery using Kólga.
Last year, our DevOps team and I at Anders started working on tooling to make software delivery easier for all of our projects. Several things prompted this change: wanting to use Docker in production and development, faster deployments, and moving to a more self-service-oriented workflow.
To achieve this, we would need to revamp the way we did deployments.
Choosing the tooling
While using virtual servers and Docker is doable and in use all over, we wanted& to have something that would also let us scale while still allowing for effortless zero downtime upgrades without building the entire thing from scratch.
For this reason, we chose Kubernetes as our primary application platform. Using a container orchestrator such as Kubernetes gives us many things for free and still lets us use some of the same tools we are used to, such as Nginx through the Nginx Ingress Controller.
As Docker already was in heavy use in development, we could keep that and just make our images ready for production. As we were reworking most of our infrastructure anyway, we also chose to move away from Ansible and Puppet tools.
We decided to focus on more "cloud-native" infrastructure as code (IaC) tools such as Terraform instead. One thing that Docker and Kubernetes did not do, however, gave us an actual flow of deploying new software versions effortlessly. While Terraform does, to some extent, give you the possibility to deploy software on Kubernetes through its various providers, it was not without its pitfalls.
Making manual changes to Kubernetes manifests when it came to deployments was also quite cumbersome and something we abandoned right from the start. We chose Helm as our go-to templating tool for Kubernetes manifests instead.
While giving us the flexibility to use variables, create the manifests more programmatically and handle deployments and upgrade, there were still things that Helm did not do. Mainly start the deployment automatically when changes were made to the code base.
This is where we started working on our own tooling, Kólga.
...and then there was Kólga
What Kólga does is leverage an underlying CI/CD platform, such as GitLab CI/CD or GitHub Actions, and take care of the building, testing, and deploying your application.
We chose to be as agnostic as possible when it came to the platform and built it to use more than one underlying platform for the pipelines.
GitLab was our first supported platform, and we are now happy to say that we also fully support GitHub Actions. So how does it work, and how can you get going with deploying applications faster?
The full source-code for this blog post can be found at: https://github.com/andersinno/microservice_kubernetes_webinar.
We launched our own Medium channel, where we will post tech stuff and DevOps tips & tricks. To learn more about speeding up the software deliveries and the technical usage of Kólga, check out our blog post in Anders’ Medium channel.
If you want to learn more about DevOps and Kólga, don't hesitate to contact me!