Build a Seamless GitOps Pipeline with Flux

GitOps is a set of principles for you to implement continuous deployment for cloud-native applications using Git as a single source of truth. With GitOps, you treat everything, including infrastructure, as source code and store it in Git. GitOps lets you automatically deploy code as soon as it is committed to a Git repository. Here are some of its benefits:

  • It offers a developer-centric approach
  • It promises high reliability with faster error recovery
  • It gives you complete visibility
  • It greatly increases your productivity

When adopting GitOps in any organization, it takes setting up a GitOps that is different from a more traditional CI/CD pipeline. Modern cloud-native tools make up this new pipeline. In this post, we list the most vital tools that make up a GitOps pipeline. We also discuss the practices that go along with these tools, which are sometimes more important than the tool itself. The list is not meant to be exhaustive but is a good indicator of the leading GitOps tools today.

Kustomize: A Tool for Kubernetes Configuration Management

Kubernetes (k8s) is an increasingly popular container orchestration platform. With that popularity has grown an ecosystem of tools and frameworks. One such tool is Kustomize.

K8s desired states are declaratively described in resource description files such as deployment, services, configmaps, secrets, etc. As we vary the environments from dev to QA to prod these configurations to change. The database may change from an embedded H2 in dev to a MariaDB in QA to Oracle in prod, the amount of allocated memory for a container may change, secrets of user rid and password for the database may also change. Managing all these varying YAML files of deployment, services, etc. per environment can be quite a chore. Configuration management tools maintain consistency across these environments.

Developer Tooling for Kubernetes in 2021: Helm, Kustomize, and Skaffold

Over the last few years, we have seen an avalanche of tools to enable easier software development on Kubernetes (let’s face it, it is quite hard out of the box). As often happens in growing ecosystems, some tools grow and adapt, while others get left behind, or, at the very least, are merged into new offerings. What’s a better way to open 2021 than with an up-to-date review of the options we have?

In this blog series, I’ll go over the various developer tools for Kubernetes out there, their function within the development workflow, and, mostly, cover important news for each of them. For this post, I’ll focus on tools used to define our Kubernetes applications, namely: Helm, Kustomize, and Skaffold.

Your Helm Zoo Will Kill You

This article is controversial. It aggressively questions helm-charts and current dev workflow designs, and I’m well aware that not everyone will like this. Let me be clear before we dive in: this is an enterprise view. It’s a view that is relevant to team sizes of 20 developers onwards. If you’re a smaller dev shop that builds a few apps, this doesn’t apply to you, and you should just keep things as is. But for those of you that are working at scale or that are about to scale: watch out. Your helm-chart zoo will kill you. Maybe not tomorrow but almost definitely next year.

Working Change by Change With kubectl

At first, they created kubectl-kangaroo, and everyone could do everything the way they wanted. However, the challenge with just using kubectl is that you are working change by change. That’s fast but makes it impossible to track what has actually changed in your cluster. One super clever person went ahead and managed everything in Kubernetes manifests and then versioned them in Git. Dope, my friend, dope.