Did you know that you can fully create a managed Kubernetes cluster in Azure using Terraform? Well you can take that one step further and also manage what's installed in your cluster using Terraform and Helm. This can be done by using the Helm provider for Terraform.

Now, let's say you want to install an NGINX ingress controller in your cluster. You can explicitly manage that task using the helm provider like this:

resource "helm_release" "ingress" {
  name       = "nginx-ingress"
  repository = "https://helm.nginx.com/stable"
  chart      = "nginx-ingress"
  version    = "0.7.1"

This is pretty darn cool. In this day where we emphasize automation, detailed audit logs, and explicitly defining everything with declarative code, this combination lets you check every box.

Happy Terraforming! or Helming? Kuberneting? ¯\_(ツ)_/¯