使用Terraform创建GCP的Cloud Run

使用Terraform的好处是什么?

我一般都在GCP控制台上创建基础架构,但现在也可以通过使用Terraform进行创建。
通过使用代码创建基础架构,更容易管理!

要做的事情

创建允许未认证的Cloud Run服务。

使用Homebrew来安装tfenv

在本地中国版安装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 来使用 X.X.X 版本。

我已经安装了HashiCorp Terraform的VSCode插件。

创建服务账户

必须在GCP控制台上创建的东西 = 服务账号

    1. 输入服务帐号名称

 

    1. 点击创建并继续

 

    1. 选择角色(此处选择编辑者和Cloud Run管理员)

 

    1. 点击继续

 

    完成

创建密钥

确认已按照上述步骤创建了账户。

    1. 点击该账户的链接

 

    1. 选择”键”

 

    1. 添加键,点击”创建新键”

 

    以”JSON”格式创建

JSON 通过翻译软件生成的结果是JavaScript Object Notation

创建一个名为”credential”的文件夹,并将下载的”JSON”文件保存为”credentials.json”。

最初所需之物

    • terraform.tfvars

 

    • variables.tf

 

    provider.tf

terraform配置文件

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

variables.tf

variables.tf文件

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

provider.tf (提供者.tf)

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

在运行除了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
}
}

※本次需要写入最基本的代码(由于还可进行详细设置,请参考官方等资料进行记载的必要)。

未经认证许可

我是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.json的script字段来执行!)

将其部署到Cloud Run

    1. 执行terraform init:进行初始化

执行make apply

输入一个值:输入yes

打开GCP的Cloud Run,名称为test,认证设置为未认证允许,如果最后部署时间是几秒前,那就没问题了!

从错误找到解决方案

Error: Error applying IAM policy for cloudrun service

我最初在创建服务帐户时只给予了“编辑者”角色。
之后在终端上执行“make apply”命令后出现了上述错误…

解决方案

找到的解决方案是添加Cloud Run管理员!

最终

我可以将其上载到Cloud Run,但几乎是默认设置…
另外,如果有知识更新,我会进行更新。

文献引用

 

bannerAds