🆙

TerraformでGCP Cloud Runのバージョンを上げる手順

2025/02/20に公開

背景

とあるプロジェクトにて、Cloud Runのバージョンを上げたいという要望が挙がった。
既にTerraformにてv1を前提に管理していたので、Terraformでの操作をしながらv2へアップデートを行った。

事前準備

バージョン管理

Gitにてバージョン管理を行っていることが前提です。
v1のブランチとv2のブランチで分けて管理を行います。

Cloudrun の定義を書き換える

v2用のブランチを切り、v2のCloud Runを定義しコミットしておく。

-resource "google_cloud_run_service" "user_frontend" {
+resource "google_cloud_run_v2_service" "user_frontend" {

Terraform の状態を確認する

$ terraform state list | grep module.cloudrun
module.cloudrun.data.google_iam_policy.noauth
module.cloudrun.google_cloud_run_service.user_frontend

v1リソース識別子の取得

v1のブランチにてidを取得し、控えておく
v1での識別子の形式は region/project/name だが、Cloud Run Admin API v2に準じて project/region/name の形式にする必要がある。

$ echo module.cloudrun.user_frontend_id | terraform console 
"locations/asia-northeast1/namespaces/<project_name>/services/frontend"
->  projects/<project_name>/locations/asia-northeast1/services/frontend

切替作業

v2のブランチに切り替える

リソースをstate管理化から外す

$ terraform state rm module.cloudrun.google_cloud_run_service.user_frontend
Removed module.cloudrun.google_cloud_run_service.user_frontend
Successfully removed 1 resource instance(s).

stateにimport

$ terraform import module.cloudrun.google_cloud_run_v2_service.user_frontend projects/<project_name>/locations/asia-northeast1/services/frontend

Import successful!

The resources that were imported are shown above. These resources are now in
your Terraform state and will henceforth be managed by Terraform.

確認

最後にterraform planを行い実態と差分が無いことを確認する。

terraform plan -target=module.cloudrun.google_cloud_run_v2_service.user_frontend

参考

Terraform リソースを Cloud Run API v2 に移行する

ファースト・スクラッチTech Blog

Discussion