The most important part of rebuilding my Kubernetes cluster in IaC style was, obviously, choosing an approach to defining the applications. That’s where Grafana Tanka, a configuration utility for Kubernetes, was supposed to come in. It lets you write Jsonnet definitions (as opposed to raw Kubernetes YAML, Kustomize manifests, or Helm charts) to concisely describe resources, provides useful libraries, and handles deployments to multiple environments. I’d dismissed it as lacking the atomicity of Helm, but after researching Argo CD and GitOps, I came to the conclusion that this was less important than the eventual consistency and versioned changes that Kubernetes naturally lends itself to.

Unfortunately, I found it difficult to use Tanka on Windows thanks to jsonnet-bundler misbehaving. This was fixed in the interim—the bundler works just fine now—but I gave up on Tanka long ago. In retrospect, I don’t believe it has any significant benefits over using Argo CD directly with Jsonnet, except perhaps some useful libraries. For the moment, I decided to rely on the familiar Kustomize and Helm.

Next in series: (#5 in The Death and Rebirth of a Cluster)