Применение Terraform не уничтожает зависимости - PullRequest
0 голосов
/ 14 июля 2020

Я использую terraform для создания своей среды.
В рамках потока я создаю кластер gke и серверную службу (часть балансировщика нагрузки).
при применении изменения, требующего " уничтожение кластера "(например, изменение типа машины gke), terraform завершится неудачно, потому что кластер зависит от серверной службы.
Я ожидал бы, что terraform распознает эту зависимость, а также уничтожит и воссоздает внутреннюю службу.

есть ли способ добиться такого поведения, или мне придется запустить полное уничтожение и применить в этом сценарии?

пример:

resource "google_container_cluster" "cluster" {
  provider                  = google-beta
  name                      = "my-cluster"
  location                  = "europe-west1-b"
  min_master_version        = "1.15"

  networking_mode = "VPC_NATIVE"

  ip_allocation_policy {}

  node_pool {
    name        = "default-pool"
    node_count  = 1

    node_config {
      preemptible   = true
      machine_type  = "n1-standard-4"
      disk_size_gb  = 20

      oauth_scopes = [
        "https://www.googleapis.com/auth/devstorage.read_only",
        "https://www.googleapis.com/auth/logging.write",
        "https://www.googleapis.com/auth/monitoring",
        "https://www.googleapis.com/auth/service.management.readonly",
        "https://www.googleapis.com/auth/servicecontrol",
        "https://www.googleapis.com/auth/trace.append",
        "https://www.googleapis.com/auth/compute",
      ]

      metadata = {
        disable-legacy-endpoints = "true"
      }

    }
  }

  network_policy {
    enabled = true
  }

  master_auth {

    client_certificate_config {
      issue_client_certificate = false
    }
  }

  addons_config {

    istio_config {
      disabled  = false
      auth      = "AUTH_MUTUAL_TLS"
    }
  }
}

resource "google_compute_health_check" "tcp-health-check" {
  name        = "${google_container_cluster.cluster.name}-istioingress-healthcheck"

  tcp_health_check {
    port                = "12345"
    port_specification  = "USE_FIXED_PORT"
  }
}


resource "google_compute_backend_service" "backend-service" {
  name                            = "${google_container_cluster.cluster.name}-https-backend"
  health_checks                   = [google_compute_health_check.tcp-health-check.id]
  protocol                        = "HTTPS"
  port_name                       = "port-12345"
  connection_draining_timeout_sec = 0

  backend {
    balancing_mode  = "UTILIZATION"
    max_utilization = 0.8
    capacity_scaler = 1
    group           = google_container_cluster.cluster.instance_group_urls.0
  }
}


При обновлении типа_машины кластера я получаю следующую ошибку:
Ошибка: Ошибка при удалении кластера: googleapi : Ошибка 409: В кластере есть зависимые ресурсы, которые необходимо сначала удалить: https://www.googleapis.com/compute/v1/projects/tufin-securecloud-dev/global/backendServices/my-cluster-https-backend., уже существует

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...