Ani*_*ket 1 google-cloud-platform terraform terraform-provider-gcp google-cloud-run
我想使用 terraform 部署一个谷歌云运行服务。当我尝试通过“端口”块进行部署以定义容器端口时,出现错误,我必须从模板标记传递容器端口,但无法这样做。这是我的 .tf 文件 -
resource "google_cloud_run_service" "default" {
name = "cloudrun-srv"
location = "us-central1"
template {
spec {
containers {
image = "us.gcr.io/xxxxxx/xxxx.app"
port {
container_port = 19006
}
}
}
}
traffic {
percent = 100
latest_revision = true
}
}
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
}
output "url" {
value = "${google_cloud_run_service.default.status[0].url}"
}
Run Code Online (Sandbox Code Playgroud)
我必须将容器端口值传递为 19006,因为我的容器仅在该端口上运行。我如何传递容器端口 19006 而不是默认端口 8080。

我查看了 Google 公开的用于创建 Cloud Run 服务的 REST API。
这从这里的条目开始:
POST https://{endpoint}/apis/serving.knative.dev/v1/{parent}/services
其中 body 包含一个Service。
其中包含一个ServiceSpec
其中包含一个RevisionRemplate
其中包含一个RevisionSpec
其中包含一个容器
其中包含一个ContainerPort
如果我们现在将其映射到 Terraform 扩展的源以处理 Cloud Run 服务的创建,我们会发现:
在评论中,我们发现以下内容:
在修订的上下文中,我们禁止使用此 Container 的许多字段,包括:名称、端口和 volumeMounts。运行时合约记录在此处:https : //github.com/knative/serving/blob/master/docs/runtime-contract.md
虽然名称和volumeMounts似乎确定在这一点上我了,我不感应,之所以ports不被映射。
尽管如此,我似乎看到无法通过 Terraform 指定端口似乎是明确的,而不是遗漏。我似乎也看到 Google 的 REST API 中确实存在指定端口的功能。
然后我打算建议你通过 Github 提出一个缺陷,但后来想知道它是否已经存在。我做了一些挖掘,已经有一个缺少功能的请求:
允许为 google_cloud_run_service 指定“container_port”和“request_timeout”
我的信念是,您问题的核心答案将变为:
您尝试做的事情应该与 Terraform 一起使用,并且已作为问题提出,我们必须等待 Terraform 提供程序中的解决方案。
| 归档时间: |
|
| 查看次数: |
1240 次 |
| 最近记录: |