5

我试图解决的问题:

我想实现以下设置:

  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
}

问题是,kubernetes_ingress如果不通过 Terraform 管理 pod、服务和部署,似乎无法部署。我想通过kubectlkustomize 文件分别管理它们。

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

我的问题如下:

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

如果我不能,有没有办法知道在 terraform 应用期间将分配给入口的 IP 以便我可以将 DNS 绑定到它?

PS对不起这个令人费解的问题,不知道如何更好地构建它。

4

0 回答 0