Terraform现在支持here中所述的云运行, 我正在尝试下面的示例代码。
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"
}
}
}
尽管它没有错误地部署了示例hello服务,但是当我访问自动生成的URL时,它会返回403(禁止访问)响应。 是否可以使用Terraform创建公共云运行api?
(当我使用GUI创建相同的服务时,GCP在“身份验证”部分下提供了“允许未经身份验证的调用”选项,但在Terraform文档中似乎没有等效的选项...)
答案 0 :(得分:2)
此处,部署仅基于Knative服务规范。 Cloud Run托管实现了这些规范,但是具有自己的内部行为,例如与IAM链接的角色检查(对于Knative和K8S群集是不可能的,这由私有/公共服务代替)。在Cloud Run上托管的名称空间是projectId,这是一种识别项目的变通方法,例如,不是真正的K8S名称空间。
因此,我从Google获得的最新消息(我是Cloud Run Alpha Tester)告诉他们正在与Deployment Manager和Terraform集成以将Cloud Run集成到其中。对不起,我没有截止日期。
答案 1 :(得分:0)
只需将以下代码添加到您的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
}
您也可以找到此here