はじめに
こんにちは、SREエンジニアやってます。@hayaosatoです。
今回はTerraformでGCPのCloud Runを構築する際に最大メモリ量も指定しながら構築する小ネタを書いていきたいと思います。
Cloud Run
Cloud RunはHTTPでリクエストを受ける事が可能なステートレスコンテナを実行できるサービスで、
今回はbeegoで作ったアプリケーションをCloud Runで実行する環境をTerraformで作成していきます。
beegoアプリをCloud Runで実行する記事は以前書いていますので、そちらを見ていただけると幸いです。
また、今回はコンテナイメージはすでにContainer Registryにpushしてあることを前提として進めていきます。
Terraform
では早速Terraformのコードを書いていきたいと思います。
基本的にグローバル公開でただ動かすだけならドキュメントにあるサンプルそのままで作成できます。
resource "google_cloud_run_service" "default" {
name = "hoge-${var.image_name}"
location = var.region
template {
spec {
containers {
image = "${var.hostname}/${var.project_id}/${var.image_name}"
resources {
limits = { "memory" : "512Mi" }
}
}
}
}
traffic {
percent = 100
latest_revision = true
}
}
ここで注意すべき点の一つに最大メモリ量があると思います。
Cloud Runのデフォルト最大メモリ量は256Miとなります。
しかし、今回動かすbeegoアプリケーションはメモリが256Miでは足りないので最大メモリ量を拡張する必要があります。
そこで指定するのがresources
ブロックのlimits
です。
limits
にはk8sのquantityと同じフォーマットの文字列をvalueとしたマップを指定する必要があり、
メモリを指定する場合は
resources {
limits = { "memory" : "512Mi"}
}
となります。
この辺りはこちらを参考にするとわかりやすいと思います。
最後に
Cloud Runデプロイ楽すぎて不安になる