type holyshared = Engineer<mixed>

技術的なことなど色々

TerraformでArtifactRegistryの世代管理を行う

google_artifact_registry_repositoryリソースを定義する時に cleanup_policies を指定することで、どのバージョンまでストレージに残すかを設定できます。

設定してないと古いバージョンが溜まっていくので、コストが上がったりします。  
アプリケーションの場合、古いバージョンのコンテナを残しておくことはメリットがないので、デプロイ時のロールバックに支障がない範囲で古いバージョンを消していくのがいいかなと思います。

下記の例では3バージョンまで残す設定例です。

resource "google_artifact_registry_repository" "app_artifact_registry" {
  project       = var.project_id
  location      = var.region
  repository_id = "app"
  description   = "application docker repository"
  format        = "DOCKER"

  cleanup_policies {
    id = "delete"
    action = "DELETE"
    condition {
      tag_state = "ANY"
    }
  }

  cleanup_policies {
    id                  = "keep-5gen"
    action              = "KEEP"
    most_recent_versions {
      keep_count        = 3
    }
  }
}

古いバージョンの削除はいつ行うなどの設定はできないみたいなのでそれだけは気をつける必要があります。

2026/01/11 追記

KEEPだけではなくて、DELETEも追加しないと期待通りになりませんでした。