Terraform nginx 入口动态 for_each 规则主机

Terraform nginx ingress dynamic for_each rules host

正在尝试创建我之前在入口 yaml 文件中拥有的动态主机规则。主要区别 TF 没有 'rules' 他们只有一个 'rule',但我认为这只是一个命名转换。目前我正在为每个项目创建一个入口,但我想做一个动态规则。我知道动态必须在 resource/data/etc 中。我将如何做到这一点? (不是工作示例)

resource "kubernetes_ingress" "test" {

  wait_for_load_balancer = false
  metadata {
    name = "my-test-${each.value}"
    namespace = kubernetes_namespace.test.metadata.0.name
    annotations = {
      "kubernetes.io/ingress.class" = "nginx"
    }
  }

  spec {
    dynamic "rule" {
      for_each = toset(var.types)
      content {
        host = "${each.value}.test.mydomain.com"
        http {
          path {
            path = "/"
            backend {
              service_name = kubernetes_service.test[each.value].metadata.0.name
              service_port = 8080
            }
          }
        }
      }
    }
  }

}

当您使用 dynamic blocks 时,您必须使用 rule,而不是 each 来引用 for_each 中的项目:

resource "kubernetes_ingress" "test" {

  #..

  spec {
    dynamic "rule" {
      for_each = toset(var.types)
      content {
        host = "${rule.value}.test.mydomain.com"
        http {
          path {
            path = "/"
            backend {
              service_name = kubernetes_service.test[rule.value].metadata.0.name
              service_port = 8080
            }
          }
        }
      }
    }
  }