Search code examples
kubernetesterraformkubernetes-helmterraform-provider-azure

How to set "nginx.ingress.kubernetes.io/server-snippet" annotation using Terraform?


I want to set the following annotation using Terraform

nginx.ingress.kubernetes.io/server-snippet: |-
  location ~* /admin {
    allow xxx.xxx.xxx.xxx;
    deny all;
}

I can set the annotation as long as it is a string like mentioned below

resource "helm_release" "keycloak" {
  repository = "https://charts.bitnami.com/bitnami"
  chart      = "keycloak"
  namespace  = kubernetes_namespace.keycloak.metadata[0].name
  name       = "keycloak"

  set {
    name  = "replicaCount"
    value = 1
  }
}

but I don't see any reference for "nginx.ingress.kubernetes.io/server-snippet:"

nginx.ingress.kubernetes.io/server-snippet: |-
  location ~* /admin {
    allow xxx.xxx.xxx.xxx;
    deny all;
}

Solution

  • What about to use yamlencode? Here is just an example:

    set {
      name = "server\\.resources"
      value = yamlencode({
        limits = {
          cpu    = "200m"
          memory = "50Mi"
        }
        requests = {
          cpu    = "100m"
          memory = "30Mi"
        }
      })
    }