无法使用 Terraform 在 Cloud Run 上部署公共 api

sor*_*ora 7 google-cloud-platform terraform terraform-provider-gcp

Terraform 现在支持云运行,如此处所述我正在尝试下面的示例代码。

resource "google_cloud_run_service" "default" {
  name     = "tftest-cloudrun"
  location = "us-central1"
  provider = "google-beta"

  metadata {
    namespace = "my-project-name"
  }

  spec {
    containers {
      image = "gcr.io/cloudrun/hello"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

尽管它部署示例 hello 服务没有错误,但当我访问自动生成的 URL 时,它返回 403(禁止)响应。是否可以使用 terraform 创建公共云运行 api?

(当我使用 GUI 创建相同的服务时,GCP 在“身份验证”部分下提供“允许未经身份验证的调用”选项,但 terraform 文档中似乎没有等效的选项...)

在此输入图像描述

jma*_*ndt 12

只需将以下代码添加到您的 terraform 脚本中,即可公开访问

data "google_iam_policy" "noauth" {
  binding {
    role = "roles/run.invoker"
    members = [
      "allUsers",
    ]
  }
}

resource "google_cloud_run_service_iam_policy" "noauth" {
  location    = google_cloud_run_service.default.location
  project     = google_cloud_run_service.default.project
  service     = google_cloud_run_service.default.name

  policy_data = data.google_iam_policy.noauth.policy_data
}
Run Code Online (Sandbox Code Playgroud)

您也可以在这里找到这个


gui*_*ere 4

这里的部署仅基于 Knative 服务规范。Cloud Run 托管实现了这些规范,但有自己的内部行为,例如与 IAM 链接的角色检查(对于 Knative 和 K8S 集群来说不可能,这被私有/公共服务取代)。Cloud Run 上托管的命名空间是 projectId,这是一种识别项目的解决方法,而不是真正的 K8S 命名空间。

因此,我从 Google(我是 Cloud Run Alpha 测试员)得到的最新消息告诉我们,他们正在与 Deployment Manager 和 Terraform 合作,将 Cloud Run 集成到其中。我没有截止日期,抱歉。