我试图解决的问题:
我想实现以下设置:
- Terraform 配置的基础设施包括 Kubernetes 集群、指向该集群的 DNS 记录、
- Kubernetes 服务,通过 Kubernetes
.yaml
文件配置的部署, - Kubernetes 入口服务充当集群上服务的网关。
我是如何尝试这样做的:
- 通过 Terraform 添加 kubernetes 集群和 kubernetes ingress。将 kubernetes 入口 IP 绑定到 DNS 记录。
- 使用 部署所有服务
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、服务和部署,似乎无法部署。我想通过kubectl
kustomize 文件分别管理它们。
我试图通过 Terraform 创建 kubernetes 入口的原因是我需要为 terraform 中的 DNS 记录分配的 IP。
我的问题如下:
我可以通过 terraform 部署 kubernetes 入口而不通过 terraform 管理 kubernetes 服务吗?
如果我不能,有没有办法知道在 terraform 应用期间将分配给入口的 IP 以便我可以将 DNS 绑定到它?
PS对不起这个令人费解的问题,不知道如何更好地构建它。