This article represents our approach at Travel Audience to tackling deployments of applications to Kubernetes clusters which run 24h / 365.25 days.
The setup presented, unlike blog posts providing silver bullet solutions, is based on an opinionated approach with benefits and drawbacks. We are tackling the problem of complex software deployment management. Manifests and configuration files below can be used as an inspiration for your own, tailored setup. Enabling quick, continuous releases using Flux.
GitOps is one of many Frameworks existing in the software world. Apart from being new hot jargon, its primary assumption is to have a single source of truth - git is used to managing the whole application lifecycle.
Flux CD is one solution which on basis of git changes provides a way to automatically provision and manage applications on Kubernetes clusters. Its agents constantly, based on default or predefined intervals, check for changes in configurations to perform necessary changes. We are using this approach in our organization.
We use Circle CI as our CI tool. Besides writing deployment pipelines, we created libraries to package the Helm Charts and perform other tasks. Orbs are small packages that contain automation scripts. These packages can be composed and reused in different configurations. One of our orbs usages comes down to application container image building, Docker tagging, creating pull requests. Now we have the full pipeline code there — travelaudience/orbs.