Могу ли я настроить Kubernetes Ingress через Terrafrom без объявления каких-либо сервисов через Terraform?
Проблема, которую я пытаюсь решить:
Я хочу добиться следующей настройки:
- Подготовленная инфраструктура Terraform, состоящая из кластера Kubernetes, записей DNS, указывающих на этот кластер,
- Сервисы Kubernetes, развертывания настроены через Kubernetes
.yaml
файлы, - Сервис Kubernetes ingress, выступающий в качестве шлюза для сервисов в кластере.
Как я пытаюсь это сделать:
- Добавьте кластер кубернетов и вход кубернетов через Terraform. Привязать входящий IP-адрес кубернетов к записям DNS.
- Разверните все службы с
kubectl
.
Соответствующая часть кода терраформирования для этого выглядит примерно так:
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. Я хочу управлять ими отдельно черезkubectl
настроить файлы.
Причина, по которой я пытаюсь создать вход kubernetes через Terraform, заключается в том, что мне нужен назначенный IP-адрес для записей DNS в terraform.
У меня такой вопрос:
Могу ли я развернуть kubernetes ingress через terraform без управления сервисом kubernetes через terraform?
Если я не могу, есть ли способ узнать, какой IP-адрес будет назначен входу во время применения terraform, чтобы я мог привязать к нему DNS?
PS Извините за запутанный вопрос, не знаю, как лучше его структурировать.