LoginSignup
1
0

More than 3 years have passed since last update.

【黒魔術】TerraformでCloud Runを更新確認 & ビルドしてデプロイする

Posted at

GCPのCloud RunをTerraformでいい感じに利用する方法を考えてみました。
ソースコードからイメージをビルドしてCloud Runにデプロイするところまでを目指します。
既存の機能だとビルドができないっぽいのでシェルやらハッシュチェックやらを駆使していい感じに仕上げます。若干Dirty hack感はありますが。

# ソースコードをzipに固める。
data "archive_file" "src_archive" {
  type        = "zip"
  source_dir  = "./src"
  output_path = "./src.zip"
}

# 既存の機能でビルドはできないので、シェルを直接たたく。
resource "null_resource" "build" { 
 triggers = { # ファイルのハッシュ変更を実行のトリガにする。
   file_hashes = jsonencode({
   for fn in fileset("src", "**") :
   fn => filesha256("src/${fn}")
   })
 }
  provisioner "local-exec" {
    # ビルドコマンド
    command = "gcloud builds submit --project your-project-name --tag gcr.io/your-project-name/image_name"
    working_dir = "./src/"
  }
}

# Cloud Runをデプロイする。
resource "google_cloud_run_service" "service" {
  depends_on = [null_resource.build]
  name     = "service"
  location = "us-east1"

  template {
    spec {
      containers {
        image = "gcr.io/your-project-name/image_name"
        env {
          # 環境変数が変わるとリソースが作り直されるので、ソースコードのハッシュを入れている。
          name = "SOURCECODE_MD5" 
          value = data.archive_file.src_archive.output_md5
        }
      }
    }
  }

  traffic {
    percent         = 100
    latest_revision = true
  }
}

いじょう。

こんなに頑張ってハックしなくても簡単にできるようにアップデートしてほしいですね。

1
0
0

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
1
0