From 43ded574f05f303bee1e3c02ffbb9d1122410603 Mon Sep 17 00:00:00 2001 From: Manuel Rafeli Date: Fri, 15 Mar 2024 17:02:43 +0100 Subject: [PATCH] [SELC-4512] Added apim group BFF proxy for ca (#183) --- infra/container_apps/.terraform.lock.hcl | 34 ++++---- infra/container_apps/apim.tf | 77 +++++++++++++++++++ infra/container_apps/env/dev/terraform.tfvars | 3 + .../container_apps/env/prod/terraform.tfvars | 3 + infra/container_apps/env/uat/terraform.tfvars | 3 + infra/container_apps/variables.tf | 23 ++++++ 6 files changed, 123 insertions(+), 20 deletions(-) create mode 100644 infra/container_apps/apim.tf diff --git a/infra/container_apps/.terraform.lock.hcl b/infra/container_apps/.terraform.lock.hcl index bdcbd8fe..382ae194 100644 --- a/infra/container_apps/.terraform.lock.hcl +++ b/infra/container_apps/.terraform.lock.hcl @@ -5,10 +5,7 @@ provider "registry.terraform.io/azure/azapi" { version = "1.9.0" constraints = "~> 1.9.0" hashes = [ - "h1:Ow1rr5fYBGSkplH/kcXeWz9y2wA81BnhZ7vTBzJfAAg=", "h1:shpEoqcAbf+p6AvspiYO1YrX//8l1LV/owEcQpujWHw=", - "h1:yIJQVdnmGZdvS3yrw0M8ke9KiB/c0tjZ7KUXC46Hjx0=", - "h1:zaLH2Owmj61RX2G1Cy6VDy8Ttfzx+lDsSCyiu5cXkm4=", "zh:349569471fbf387feaaf8b88da1690669e201147c342f905e5eb03df42b3cf87", "zh:54346d5fb78cbad3eb7cfd96e1dd7ce4f78666cabaaccfec6ee9437476330018", "zh:64b799da915ea3a9a58ac7a926c6a31c59fd0d911687804d8e815eda88c5580b", @@ -25,24 +22,21 @@ provider "registry.terraform.io/azure/azapi" { } provider "registry.terraform.io/hashicorp/azurerm" { - version = "3.91.0" - constraints = "<= 3.91.0" + version = "3.85.0" + constraints = ">= 3.30.0, <= 3.85.0, <= 3.91.0" hashes = [ - "h1:8hMFuaTQsZIV69D0J/W+6hSlhRRDzYSpC0Eg9yWYF0o=", - "h1:FEDNnFv/uKI2+FQ+nDoyswEI3trJ3d7Fx2Cy7Ff4Rq8=", - "h1:Iv9CR+7491iozaK2AkCSAK2u4a2rPyJDQpyHijClj6Y=", - "h1:t0I5G4canK6UdlgHGfMV4rUNBPGdrMiIB01VGizlXB8=", - "zh:13928b71b1235783f3f877a799e28fb91e50512b051eb8ccb370500fc140cf3f", - "zh:3264341657e9ff3963d69b0fa088f64665349e2a29b2f3aeb4deee6d9d7584b7", - "zh:467a2ddd2eee26353db65e949bfbe533481ca0fb53c152724380b63a308f11b9", - "zh:6133e57087167b163180df3a77fab0c63b3e11609d139d39db8d3be3d6ec7ccd", - "zh:6df24730bc9247647ffb44832c3c64e45ab731dd83a3592d33d28235a453235a", - "zh:775aae148223a4a86e2dd25533a95a5fea4817085b6c5e643a7192453270cd68", - "zh:89d51148c7c123685d3e2f7e291888a3af009656e5c0ad66235a7c686ecb19d2", - "zh:9c89552051226eeb7c0fc66ad5aa57d1d0f5acc1d56afad06b6596707ae6c85e", - "zh:c4f3bc269837fa3b6ad803de2c7d1125dd791d78a521dcad2e7a63b905a13a53", - "zh:e48f05de1ffdcc998c5ff915570fb0557c7ac1d3af971dd76aff82e66d45bf06", - "zh:f1945716c7b9c23c25ca9fb4a68f27b6cfa25f5d235112c31f9412eba47f93c6", + "h1:BX6+m8KJATrpqlwBSyA63Fmwjvgwcs/v1qwB7B5GLCU=", + "zh:1ae6c0d82b5801641a17094b84f2ec1dcac699c1c4e40669a267511061414a34", + "zh:259e9386a43aabecb1205b0ceea2d205223637c09b66d806a89fed04f3343253", + "zh:4d940f9c14fece4f1d9219ac9d104202e5561bddc5024e5ac97f3f93eea20110", + "zh:530bca70b950e835f63c796c694106d701e5de0e2cf096fa35f08afd5c254594", + "zh:69e6b7f44ffbe0383b6485bb9db26781eb7869503889303e202967900a6b35ed", + "zh:8528e7d054254daae06eeb2bf343d566d3908a024fdfb5e515fbdbe0669c15eb", + "zh:98d66edfa89ed9a431ca37be384e5dfe7fa20bdc732c6e7d30f3f922ca3b29dc", + "zh:b8d37cedeffeb6bd37d4ec79fc2da19ed6b57d1ac08d835395dfa4fb3cfdf447", + "zh:bbc94e89cd6c0d59c2e5ed0bce852cac8435b6dc2e979691ee84af4c8b2c9bb8", + "zh:ceb4c624e8bb56bbcfe53e3c4ed4b4d27c3a5b62e5f4890b32c98b60b83c7827", + "zh:f08c5bf19eb25f668633964c6bfa823aa0ead785824082533c4a6cff3959e3d0", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", ] } diff --git a/infra/container_apps/apim.tf b/infra/container_apps/apim.tf new file mode 100644 index 00000000..5f561c94 --- /dev/null +++ b/infra/container_apps/apim.tf @@ -0,0 +1,77 @@ +locals { + apim_name = format("selc-%s-apim", var.env_short) + apim_rg = format("selc-%s-api-rg", var.env_short) + api_name = format("selc-%s-api-bff-proxy", var.env_short) +} + + +resource "azurerm_api_management_api_version_set" "apim_api_bff_proxy" { + count = var.is_pnpg ? 0 : 1 + name = local.api_name + resource_group_name = local.apim_rg + api_management_name = local.apim_name + display_name = "BFF Proxy API" + versioning_scheme = "Segment" +} + + +module "apim_api_bff_proxy" { + count = var.is_pnpg ? 0 : 1 + source = "github.com/pagopa/terraform-azurerm-v3.git//api_management_api?ref=v7.50.1" + name = local.api_name + api_management_name = local.apim_name + resource_group_name = local.apim_rg + version_set_id = azurerm_api_management_api_version_set.apim_api_bff_proxy[0].id + + description = "BFF Proxy API" + display_name = "BFF Proxy API" + path = "party-registry-proxy/v1" + protocols = [ + "https" + ] + + service_url = format("https://%s", var.private_dns_name) + + content_format = "openapi+json" + content_value = templatefile("../../app/src/main/resources/swagger/api-docs.json", { + url = format("%s.%s", var.api_dns_zone_prefix, var.external_domain) + basePath = "/party-registry-proxy/v1" + }) + + subscription_required = false + + xml_content = < + + + + https://${var.dns_zone_prefix}.${var.external_domain} + https://${var.api_dns_zone_prefix}.${var.external_domain} + http://localhost:3000 + + + GET + POST + PUT + DELETE + HEAD + OPTIONS + + +
*
+
+
+ +
+ + + + + + + + + + +XML +} diff --git a/infra/container_apps/env/dev/terraform.tfvars b/infra/container_apps/env/dev/terraform.tfvars index bafea582..a174f547 100644 --- a/infra/container_apps/env/dev/terraform.tfvars +++ b/infra/container_apps/env/dev/terraform.tfvars @@ -1,4 +1,7 @@ env_short = "d" +private_dns_name = "selc-d-party-reg-proxy-ca.gentleflower-c63e62fe.westeurope.azurecontainerapps.io" +dns_zone_prefix = "dev.selfcare" +api_dns_zone_prefix = "api.dev.selfcare" tags = { CreatedBy = "Terraform" diff --git a/infra/container_apps/env/prod/terraform.tfvars b/infra/container_apps/env/prod/terraform.tfvars index 40ca738f..557ada9c 100644 --- a/infra/container_apps/env/prod/terraform.tfvars +++ b/infra/container_apps/env/prod/terraform.tfvars @@ -1,4 +1,7 @@ env_short = "p" +private_dns_name = "selc-p-party-reg-proxy-ca.bluedune-cc0f8752.westeurope.azurecontainerapps.io" +dns_zone_prefix = "selfcare" +api_dns_zone_prefix = "api.selfcare" tags = { CreatedBy = "Terraform" diff --git a/infra/container_apps/env/uat/terraform.tfvars b/infra/container_apps/env/uat/terraform.tfvars index b651d360..6502b5d9 100644 --- a/infra/container_apps/env/uat/terraform.tfvars +++ b/infra/container_apps/env/uat/terraform.tfvars @@ -1,4 +1,7 @@ env_short = "u" +private_dns_name = "selc-u-party-reg-proxy-ca.calmsky-143987c1.westeurope.azurecontainerapps.io" +dns_zone_prefix = "uat.selfcare" +api_dns_zone_prefix = "api.uat.selfcare" tags = { CreatedBy = "Terraform" diff --git a/infra/container_apps/variables.tf b/infra/container_apps/variables.tf index b9baf169..68a6cb88 100644 --- a/infra/container_apps/variables.tf +++ b/infra/container_apps/variables.tf @@ -55,3 +55,26 @@ variable "secrets_names" { type = map(string) description = "KeyVault secrets to get values from" } + +variable "private_dns_name" { + type = string + description = "Container Apps private DNS record" +} + +variable "external_domain" { + type = string + default = "pagopa.it" + description = "Domain for delegation" +} + +variable "dns_zone_prefix" { + type = string + default = "selfcare" + description = "The dns subdomain." +} + +variable "api_dns_zone_prefix" { + type = string + default = "api.selfcare" + description = "The dns subdomain." +}