我的 NEG 没有连接到我的云 运行 函数

My NEGs are not connecting to my cloud run functions

https://cloud.google.com/load-balancing/docs/https/setting-up-https-serverless#setting_up_regional_routing

我设置了一个 GCE 全局负载均衡器和 NEG。我不清楚 NEG 如何连接到云 运行 应用程序。看起来 NEG 的 Service name 只需要匹配相应的云 运行 应用名称。

我已经这样做了,但它似乎没有连接。我什至无法在文档中找到如何解决此链接问题。

通过 Terraform 创建了一个 neg

resource "google_compute_region_network_endpoint_group" "neg" {
  network_endpoint_type = "SERVERLESS"
  region                = us-east1
  cloud_run {
    service = "my-cloudrun-app"
  }
}

然后部署了一个云运行应用 gcloud run deploy my-cloudrun-app --region us-east1

我的理解是,如果云 运行 应用程序名称与它应该连接的服务名称匹配。我可以看到 NEG 已连接到我的 GCE 负载均衡器并且云 运行 应用已成功部署,但 NEG 似乎没有路由到我的函数。

我不知道你是否这样做了,但你需要更多才能在负载均衡器上部署你的 neg。这里缺少的部分



resource "google_compute_managed_ssl_certificate" "default" {
  name = "cert"
  managed {
    domains = ["${var.domain}"]
  }
}

resource "google_compute_backend_service" "default" {
  name      = "app-backend"

  protocol  = "HTTP"
  port_name = "http"
  timeout_sec = 30

  backend {
    group = google_compute_region_network_endpoint_group.neg.id
  }
}

resource "google_compute_url_map" "default" {
  name            = "app-urlmap"

  default_service = google_compute_backend_service.default.id
}

resource "google_compute_target_https_proxy" "default" {
  name   = "https-proxy"

  url_map          = google_compute_url_map.default.id
  ssl_certificates = [
    google_compute_managed_ssl_certificate.default.id
  ]
}

resource "google_compute_global_forwarding_rule" "default" {
  name   = "lb"

  target = google_compute_target_https_proxy.default.id
  port_range = "443"
  ip_address = google_compute_global_address.default.address
}

resource "google_compute_global_address" "default" {
  name = "address"
}

容易吗??绝对不。如果您需要更多详细信息、指导或解释,请告诉我。

我正在使用这个官方 GCP 模块来连接它(实际上它确实非常简单!)https://github.com/terraform-google-modules/terraform-google-lb-http/tree/v6.0.1/modules/serverless_negs

我发现它确实按照我预期的方式工作,问题只是我在我创建的一个区域 NEG 后面没有云 运行 应用程序(我以为我有)。我实际上创建了几个区域 NEG,弄得一团糟,LB 将我的流量路由到的区域 NEG 没有它指向的相应云 运行 应用程序。

我是如何解决这个问题的:

  • 找到负载均衡器配置的后端
  • 在 GCP 控制台中,我能够查看后端以及为其配置的所有区域 NEG
  • 点击 refresh/curl 多次并在后端页面的 gcp 控制台中看到其中一个区域 NEG 实际上正在接收流量 - 所以我至少能够看到我的流量被路由到哪个 NEG至
  • 意识到我没有部署云 运行 应用程序,其名称是为区域 NEG 配置的

我仍然觉得了解所有这些组件如何协同工作可能会更好,但是 Backend service details 页面的流量图是救命稻草!