LoginSignup
0
0

More than 1 year has passed since last update.

TerraformでGCPのCloud Runを作成

Posted at

Terraformを使うメリット

基本的にGCPのコンソールでインフラの作成を行っていたが、Terraformを使うことでも作成できるようになる。
コードでインフラを作成できるので、管理がしやすい!

やること

未認証を許可したCloud Runを作成する

Homebrewでtfenvをインストール

brew install tfenv

tfenvのコマンドが使えるようになったので、バージョンを指定してインストール
tfenv install X.X.X

最新をインストール
tfenv install latest

リスト
tfenv list
実行後、下記のようなリストが出てくる

1.1.6
1.1.0
1.0.11
0.14.4

terraformで使いたいバージョン
例:echo 1.0.11 > .terraform-version

これでterraformコマンドが使える!
terraform --versionを実行して確認

バージョンの切り替えの時
tfenv use X.X.X

※vscodeのプラグインは下記を入れました。
HashiCorp Terraform

サービスアカウントの作成

どうしてもGCPのコンソールで作成しないといけないもの = サービスアカウント

  1. サービスアカウント名を入力
  2. 作成して続行をクリック
  3. ロールを選択(今回はRunを使うので、編集者Cloud Run管理者を選択)
  4. 続行をクリック
    完了

keyの作成

上記手順で作成したアカウントがあることを確認

  1. そのアカウントのリンクをクリック
  2. 「キー」を選択
  3. 鍵を追加、「新しい鍵を作成」をクリック
  4. 「JSON」 で作成

JSON

credentialというフォルダを作成し、上記でダウンロードした「JSON」をcredentials.jsonとして保存

一番最初に必要なもの

  • terraform.tfvars
  • variables.tf
  • provider.tf

terraform.tfvars

credential = "./credential/credentials.json"
default_location = "asia-northeast1"
project_id = "クレデンシャルで作成したproject_id"

variables.tf

variable "credential" {
type = string
}
variable "default_location" {
type = string
}
variable "project_id" {
type = string
}

provider.tf

provider "google" {
credentials = var.credential
region      = var.default_location
project     = var.project_id
}

※Cloud Run以外を動かす際にも上記の3つは必要

Cloud Runの作成

cloud_run.tf

resource "google_cloud_run_service" "test" {
name     = "test"
location = "asia-northeast1"

template {
    spec {
    containers {
        image = "us-docker.pkg.dev/cloudrun/container/hello"
    }
    }
}

traffic {
    percent         = 100
    latest_revision = true
}
}

※今回は必要最低限のコード(細かい設定もできるので公式等を見て記載していく必要あり)

未認証許可

iam.tf

//cloud run未認証許可
resource "google_cloud_run_service_iam_member" "member" {
location = google_cloud_run_service.test.location
project  = google_cloud_run_service.test.project
service  = google_cloud_run_service.test.name
role     = "roles/run.invoker"
member   = "allUsers"
}

Makefileの作成

Makefile

# プロジェクトをセット
project-set:
	gcloud config set project プロジェクト名
# プロジェクトなどの一覧
project-show:
	gcloud config list
# 作成した差分
plan:
	@make project-set
	terraform plan -var-file ./env/terraform.tfvars
# デプロイ
apply:
	@make project-set
	terraform apply -var-file ./env/terraform.tfvars
# 履歴などの削除
destroy:
	@make project-set
	terraform destroy -var-file ./env/terraform.tfvars

Makefile:make〇〇で実行できるようにする(JSではpackage.jsonscript!)

Cloud Runにあげる

  1. terraform init:初期化
  2. make applyを実行
  3. Enter a value:yesと入れる

GCPのCloud Runを開いて、名前:test、認証:未認証許可、最終デプロイ日:数秒前になっていればOK!

エラーから解決策

Error: Error applying IAM policy for cloudrun service

私は、最初に作成するサービスアカウントでロールを編集者だけで行なってました。
そしてターミナルでmake applyを実行後に上記のエラーが...

解決策

たどり着いた解決策がCloud Run 管理者を追加!

最後に

Cloud Runにあげることはできましたが、ほぼデフォルトです...
また、知識のアップデートがあれば、更新します。

参考文献

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