使用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控制台上创建的东西 = 服务账号
-
- 输入服务帐号名称
-
- 点击创建并继续
-
- 选择角色(此处选择编辑者和Cloud Run管理员)
-
- 点击继续
- 完成
创建密钥
确认已按照上述步骤创建了账户。
-
- 点击该账户的链接
-
- 选择”键”
-
- 添加键,点击”创建新键”
- 以”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
-
- 执行terraform init:进行初始化
执行make apply
输入一个值:输入yes
打开GCP的Cloud Run,名称为test,认证设置为未认证允许,如果最后部署时间是几秒前,那就没问题了!
从错误找到解决方案
Error: Error applying IAM policy for cloudrun service
我最初在创建服务帐户时只给予了“编辑者”角色。
之后在终端上执行“make apply”命令后出现了上述错误…
解决方案
找到的解决方案是添加Cloud Run管理员!
最终
我可以将其上载到Cloud Run,但几乎是默认设置…
另外,如果有知识更新,我会进行更新。
文献引用