From 6dbde64d59208ae2fded36251a8203099703defa Mon Sep 17 00:00:00 2001 From: Taha Cherfia <taha.cherfia@holi.team> Date: Wed, 17 Jul 2024 11:59:46 +0200 Subject: [PATCH] infra: update terraform --- terraform/common/service_account.tf | 10 ++---- terraform/environments/deployment.tf | 32 ++++++++----------- terraform/environments/init.tf | 1 + .../scripts/create-or-update-env.sh | 1 + terraform/environments/scripts/destroy-env.sh | 18 ++++++----- terraform/environments/vars.tf | 2 +- 6 files changed, 29 insertions(+), 35 deletions(-) diff --git a/terraform/common/service_account.tf b/terraform/common/service_account.tf index 4859925..80b8be9 100644 --- a/terraform/common/service_account.tf +++ b/terraform/common/service_account.tf @@ -1,13 +1,7 @@ resource "google_service_account" "translation_api" { project = data.terraform_remote_state.holi_infra_state.outputs.shared_project_id - account_id = "cloudrun-service-translation-api" - display_name = "translation API service account for Cloud Run" -} - -resource "google_project_iam_member" "translation_api" { - project = data.terraform_remote_state.holi_infra_state.outputs.shared_project_id - member = "serviceAccount:${google_service_account.translation_api.email}" - role = "roles/secretmanager.secretAccessor" + account_id = "holi-translation-api" + display_name = "Translation API service account for Cloud Run" } output "cloud_run_service_account_email" { diff --git a/terraform/environments/deployment.tf b/terraform/environments/deployment.tf index 9c2ad5a..68faf1a 100644 --- a/terraform/environments/deployment.tf +++ b/terraform/environments/deployment.tf @@ -5,7 +5,6 @@ resource "random_id" "main" { resource "google_project_service" "service" { for_each = toset([ - "endpoints.googleapis.com", "run.googleapis.com", "servicecontrol.googleapis.com", "servicemanagement.googleapis.com", @@ -23,7 +22,7 @@ variable "image_tag" { nullable = false } -resource "google_cloud_run_v2_service" "translation_api" { +resource "google_cloud_run_v2_service" "translation_api_service" { project = data.terraform_remote_state.holi_infra_state.outputs.shared_project_id name = random_id.main.hex location = local.default_region @@ -35,29 +34,27 @@ resource "google_cloud_run_v2_service" "translation_api" { image = "${data.terraform_remote_state.holi_infra_state.outputs.artifact_registry_location}/holi-translation-api:${var.image_tag}" ports { - container_port = 8089 + container_port = 5000 } env { name = "ENVIRONMENT" value = local.environment } - env { - name = "HOLI_LIBRETRANSLATE_BASE_URL" - value = local.environment == "production" ? "https://staging.libretranslate.apis.holi.social" : "https://production.libretranslate.apis.holi.social" - } + + args = ["--host", "0.0.0.0"] resources { limits = { cpu = "1" - memory = local.environment == "production" ? "512Mi" : "256Mi" + memory = "512Mi" } } } scaling { min_instance_count = local.environment == "production" ? "1" : "0" - max_instance_count = local.environment == "production" ? "10" : "1" + max_instance_count = local.environment == "production" ? "10" : "3" } vpc_access { @@ -75,16 +72,16 @@ resource "google_cloud_run_v2_service" "translation_api" { } resource "google_cloud_run_domain_mapping" "holi_social_translation_api" { - project = google_cloud_run_service.translation_api.project - location = google_cloud_run_service.translation_api.location + project = google_cloud_run_v2_service.translation_api_service.project + location = google_cloud_run_v2_service.translation_api_service.location name = local.dns_name metadata { - namespace = google_cloud_run_service.translation_api.project + namespace = google_cloud_run_v2_service.translation_api_service.project } spec { - route_name = google_cloud_run_service.translation_api.name + route_name = google_cloud_run_v2_service.translation_api_service.name } } @@ -97,10 +94,9 @@ data "google_iam_policy" "translation_api" { } } -resource "google_cloud_run_service_iam_policy" "translation_api" { - location = google_cloud_run_service.translation_api.location - project = google_cloud_run_service.translation_api.project - service = google_cloud_run_service.translation_api.name - +resource "google_cloud_run_v2_service_iam_policy" "translation_api" { + name = google_cloud_run_v2_service.translation_api_service.name + location = google_cloud_run_v2_service.translation_api_service.location + project = google_cloud_run_v2_service.translation_api_service.project policy_data = data.google_iam_policy.translation_api.policy_data } diff --git a/terraform/environments/init.tf b/terraform/environments/init.tf index 72faf5e..112dd65 100644 --- a/terraform/environments/init.tf +++ b/terraform/environments/init.tf @@ -21,6 +21,7 @@ data "terraform_remote_state" "holi_translation_api_common_state" { } } +# provider google including beta features provider "google" { region = local.default_region } diff --git a/terraform/environments/scripts/create-or-update-env.sh b/terraform/environments/scripts/create-or-update-env.sh index 89d2951..aae2eda 100755 --- a/terraform/environments/scripts/create-or-update-env.sh +++ b/terraform/environments/scripts/create-or-update-env.sh @@ -15,4 +15,5 @@ TF_LOG_PATH=terraform-init.log terraform init TF_LOG_PATH=terraform-version.log terraform version TF_LOG_PATH=terraform-workspace.log terraform workspace new "$WORKSPACE" || terraform workspace select "$WORKSPACE" TF_LOG_PATH=terraform-plan.log terraform plan -var="image_tag=$TAG" -out plan -no-color | tee tfplan.plain +TF_LOG_PATH=terraform-apply.log terraform apply -auto-approve -parallelism=50 planTF_LOG_PATH=terraform-plan.log terraform plan -var="image_tag=$TAG" -out plan -no-color | tee tfplan.plain TF_LOG_PATH=terraform-apply.log terraform apply -auto-approve -parallelism=50 plan \ No newline at end of file diff --git a/terraform/environments/scripts/destroy-env.sh b/terraform/environments/scripts/destroy-env.sh index 8feb7be..89d2951 100755 --- a/terraform/environments/scripts/destroy-env.sh +++ b/terraform/environments/scripts/destroy-env.sh @@ -3,14 +3,16 @@ # exit when any command fails set -ex -# enable debug output in terraform -export TF_LOG=DEBUG +# enable full debug output in terraform, which is only written to logfiles +export TF_LOG=TRACE cd terraform/environments -TF_LOG_PATH=terraform-init.log terraform init -TF_LOG_PATH=terraform-version.log terraform version -TF_LOG_PATH=terraform-workspace.log terraform workspace new "$1" || terraform workspace select "$1" -TF_LOG_PATH=terraform-destroy.log terraform destroy -auto-approve -var="image_tag=dummy" -TF_LOG_PATH=terraform-ws-default.log terraform workspace select default -TF_LOG_PATH=terraform-ws-delete.log terraform workspace delete "$1" +WORKSPACE=$1 +TAG=$2 + +TF_LOG_PATH=terraform-init.log terraform init +TF_LOG_PATH=terraform-version.log terraform version +TF_LOG_PATH=terraform-workspace.log terraform workspace new "$WORKSPACE" || terraform workspace select "$WORKSPACE" +TF_LOG_PATH=terraform-plan.log terraform plan -var="image_tag=$TAG" -out plan -no-color | tee tfplan.plain +TF_LOG_PATH=terraform-apply.log terraform apply -auto-approve -parallelism=50 plan \ No newline at end of file diff --git a/terraform/environments/vars.tf b/terraform/environments/vars.tf index 19b5750..be5613d 100644 --- a/terraform/environments/vars.tf +++ b/terraform/environments/vars.tf @@ -1,6 +1,6 @@ locals { environment = terraform.workspace - environment_name = trim(substr(local.environment, 0, 22), ".-") + environment_name = trim(substr(local.environment, 0, 22), ".-") # limits the length of the name that it fits constraints google imposes for some resources, e.g. project ids dns_name = "${trimsuffix(substr(local.environment, 0, 34), ".-")}.${data.terraform_remote_state.holi_translation_api_common_state.outputs.dns_translation_api_domain}" default_region = data.terraform_remote_state.holi_infra_state.outputs.default_region } -- GitLab