我可以通过 Terrafrom 设置 Kubernetes Ingress,而不通过 Terraform 声明任何服务吗?

Ada*_*dam 6 digital-ocean kubernetes terraform kubernetes-ingress terraform-provider-kubernetes

我试图解决的问题:

我想实现以下设置:

  1. Terraform 配置的基础设施由 Kubernetes 集群、指向该集群的 DNS 记录组成,
  2. Kubernetes 服务、通过 Kubernetes.yaml文件配置的部署、
  3. Kubernetes 入口服务充当集群上服务的网关。

我如何尝试做到这一点:

  1. 通过 Terraform 添加 kubernetes 集群和 kubernetes ingress。将 kubernetes 入口 IP 绑定到 DNS 记录。
  2. 使用 部署所有服务kubectl

terraform 代码的相关部分如下所示:

resource "kubernetes_ingress" "main-ingress" {
  metadata {
    name = "main-ingress"
  }

  spec {
    rule {
      host = "service.example.com"
      http {
        path {
          backend {
            service_name = "service-name"
            service_port = 8080
          }

          path = "/"
        }
      }
    }
  }

  wait_for_load_balancer = true
}

resource "digitalocean_record" "subdomain_link" {
  domain = "example.com"
  type   = "A"
  name   = "service"
  value  = kubernetes_ingress.main-ingress.load_balancer_ingress[0].ip
}
Run Code Online (Sandbox Code Playgroud)

问题是,kubernetes_ingress如果不通过 Terraform 管理 Pod、服务和部署,似乎就无法部署。kubectl我想通过kustomize 文件单独管理它们。

我尝试通过 Terraform 创建 kubernetes 入口的原因是我需要为 terraform 中的 DNS 记录分配 IP。

我的问题如下:

我可以通过terraform部署kubernetes ingress而不通过terraform管理kubernetes服务吗?

如果我不能,有什么方法可以知道在 terraform apply 期间将向入口分配什么 IP,以便我可以将 DNS 绑定到它?

PS 抱歉这个问题很复杂,不知道如何更好地构建它。