5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Terraform】Cloud RunにおいてSecret Managerを環境変数に埋めようとすると Error "description": "spec.template.spec.containers[0].env.value_from should be empty"

Posted at

状況

GCPのプロジェクトをTerraformで扱っていて、Cloud RunサービスにおいてSecret Managerを環境変数に入れたい
2021/07現在この機能はベータ版
→もし時間が経って解決されてたらこの記事は不要になるかもしれません

実装内容

Terraform公式のCloud Runの部分を参考にしました
今回触れる部分以外は省略しています
beta版なのでプロバイダーはgoogle-betaになります

cloudrun.tf
resource "google_cloud_run_service" "example_service" {
 provider = google-beta

 name = "example_service"
 template {
   spec {
     containers {
       env {
         name = "EXAMPLE_ENV"
         value = "hoge"
       }
       # Secret Manager
       env {
         name = "EXAMPLE_SECRET"
         value_from {
           secret_key_ref {
             name = "example_secret" # 手動で作成したsecretのkey
             key = "1" # version
           }
         }
       }
     }
   }
 }
}

発生したエラー

"description": "spec.template.spec.containers[0].env.value_from should be empty"

value_fromが空であるべきとか書いてますが、ドキュメントでは空ではないので、違和感を感じます。

原因

不明ですが、推測としてはベータ版の不具合だと考えています。
(いろんな事情でSecret Managerの作成自体はTerraformで管理していないからという線も考えましたがそれだと以下解決策では動かないかなと思っています)

解決策

どうやらsecret managerを使う場合初回はこのannotationsを定義しないと動作しないようです。

参考issue

cloudrun.tf
resource "google_cloud_run_service" "example_service" {
 provider = google-beta

 name = "example_service"
  # ここを追加
  metadata {
    annotations = {
      "run.googleapis.com/launch-stage" = "BETA"
    }
  }
 template {
   spec {
     containers {
       env {
         name = "EXAMPLE_ENV"
         value = "hoge"
       }
       # Secret Manager
       env {
         name = "EXAMPLE_SECRET"
         value_from {
           secret_key_ref {
             name = "example_secret" # 手動で作成したsecretのkey
             key = "1" # version
           }
         }
       }
     }
   }
 }
}

これでterraform applyすると通ると思います

所感

ベータ版だからということもあるかもしれませんが、公式ドキュメント通りに実装して動かないのは辛いですね。。
困っている人いないんですかね、、(僕がミスっているだけ?)
こういう場合はどうするのがベターなんだろうか。

5
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?