Могу ли я настроить Kubernetes Ingress через Terrafrom без объявления каких-либо сервисов через Terraform?

Проблема, которую я пытаюсь решить:

Я хочу добиться следующей настройки:

  1. Подготовленная инфраструктура Terraform, состоящая из кластера Kubernetes, записей DNS, указывающих на этот кластер,
  2. Сервисы Kubernetes, развертывания настроены через Kubernetes .yaml файлы,
  3. Сервис Kubernetes ingress, выступающий в качестве шлюза для сервисов в кластере.

Как я пытаюсь это сделать:

  1. Добавьте кластер кубернетов и вход кубернетов через Terraform. Привязать входящий IP-адрес кубернетов к записям DNS.
  2. Разверните все службы с 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 Извините за запутанный вопрос, не знаю, как лучше его структурировать.

0 ответов