有超过 25 个 Cloudrun 服务使用相同的 docker 镜像(来自 GCR),但配置了不同的变量。有什么简单可靠的方法可以使用来自任何类型传入事件的最新容器映像来部署所有服务?
目前使用下面的CLI命令来手动执行一一执行。有没有一种自动化的方式来实现所有服务依次或并行的自动部署。
gcloud run deploy SERVICE --image IMAGE_URL
Addn:使用标签来标记具有相同容器镜像的25个容器。不需要每次都从源代码构建 docker 镜像。可以使用相同的图像。
Answer recommended by
Google Cloud /collectives/google-cloud
Collective
In case 地形是您的一个选择,您可以自动化所有操作云跑服务部署使用count
or for_each
元参数:
count
如果您需要带有索引的相同服务名称
provider "google" {
project = "MY-PROJECT-ID"
}
resource "google_cloud_run_service" "default" {
count = 25
name = "MY-SERVICE-${count.index}"
location = "MY-REGION"
metadata {
annotations = {
"run.googleapis.com/client-name" = "terraform"
}
}
template {
spec {
containers {
image = "IMAGE_URL"
}
}
}
}
data "google_iam_policy" "noauth" {
binding {
role = "roles/run.invoker"
members = ["allUsers"]
}
}
resource "google_cloud_run_service_iam_policy" "noauth" {
for_each = google_cloud_run_service.default
location = each.value.location
project = each.value.project
service = each.value.name
policy_data = data.google_iam_policy.noauth.policy_data
}
where MY-PROJECT-ID
and MY-REGION
需要替换为您的项目特定值。
for_each
如果您需要不同的服务名称
provider "google" {
project = "MY-PROJECT-ID"
}
resource "google_cloud_run_service" "default" {
for_each = toset( ["Service 1", "Service 2", "Service 25"] )
name = each.key
location = "MY-REGION"
metadata {
annotations = {
"run.googleapis.com/client-name" = "terraform"
}
}
template {
spec {
containers {
image = "IMAGE_URL"
}
}
}
}
data "google_iam_policy" "noauth" {
binding {
role = "roles/run.invoker"
members = ["allUsers"]
}
}
resource "google_cloud_run_service_iam_policy" "noauth" {
for_each = google_cloud_run_service.default
location = each.value.location
project = each.value.project
service = each.value.name
policy_data = data.google_iam_policy.noauth.policy_data
}
where MY-PROJECT-ID
and MY-REGION
也需要替换为您的项目特定值。
你可以参考官方的GCP云运行文档 https://cloud.google.com/run/docs/deploying#service欲了解更多详情地形 usage.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)