Как решить циклические зависимости при развертывании сервиса облачных конечных точек с использованием облачного запуска в Terraform - PullRequest
0 голосов
/ 16 апреля 2020

В настоящее время я пытаюсь настроить конечные точки Google Cloud для Cloud Run, чтобы иметь возможность иметь документацию OpenApi для моих облачных функций. Я следовал инструкциям в здесь для Po C, и он работал нормально.

Теперь я попытался настроить его с помощью terraform 0.12.24

Конечная точка службы


data "template_file" "openapi_spec" {
  template = file("../../cloud_functions/openapi_spec.yaml")

  vars = {
    endpoint_service     = local.service_name
    feedback_post_target = google_cloudfunctions_function.feedbackPOST.https_trigger_url
  }
}

resource "google_endpoints_service" "api-gateway" {
  service_name   = local.service_name
  project        = var.project_id
  openapi_config = data.template_file.openapi_spec.rendered

  depends_on = [
    google_project_service.endpoints,
    google_project_service.service-usage,
  ]
}

Cloud RUN

locals {
  service_name = "${var.endpoint_service_name}.endpoints.${var.project_id}.cloud.goog"
}

resource "google_cloud_run_service" "api-management" {
  name     = "api-gateway-1233"
  location = "europe-west1"

  template {
    spec {
      containers {
        image = "gcr.io/endpoints-release/endpoints-runtime-serverless:2"
        env {
          name = "ENDPOINTS_SERVICE_NAME"
          value = local.service_name
        }
      }
    }
  }
  traffic {
    percent         = 100
    latest_revision = true
  }

  depends_on = [google_project_service.run]
}

Если я сейчас пытаюсь выполнить свою функцию с портала Endpoints, я получаю следующую ошибку

ENOTFOUND: Error resolving domain "https://function-api-gateway.endpoints.PROJECT_ID.cloud.goog"

, которая имеет смысл, так как моя служба конечных точек должна использовать URL-адрес хоста службы облачного запуска, которая задается

google_cloud_run_service.api-management.status[0].url

, что означает, что я должен использовать это в приведенном выше определении конечных точек службы в качестве имени службы и переменной среды хоста в определении openApi. Только когда это установлено, я снова могу применить свой сервис облачного запуска с переменной env, равной самому URL.

Это круговая зависимость, которую я не знаю, как решить . Любая помощь высоко ценится!

...