oauth2-proxy/deploy/dependent_modules/api-gateway/main.tf

142 lines
5.2 KiB
HCL

locals {
monteback_routes = [{
route = cloudfoundry_route.monteback.id
}
]
}
module "app_api_gateway" {
source = "github.com/philips-internal/terraform-api-gateway?ref=v0.0.32"
api_gateway_image = { "image_name" : "edi-foundation-envoy-gateway", "registry" : "docker.na1.hsdp.io/edi", "image_tag" : "${var.envoy_tag}", "registry_username" : "${var.cf_deploy_user}", "registry_password" : "${var.cf_deploy_password}" }
oauth2_proxy_image = { "image_name" : "edi-foundation-oauth2-proxy", "registry" : "docker.na1.hsdp.io/edi", "image_tag" : "${var.oauth_tag}", "registry_username" : "${var.cf_deploy_user}", "registry_password" : "${var.cf_deploy_password}" }
authenticator_service_image = { "image_name" : "edi-foundation-apigateway-tokenauthenticator", "registry" : "docker.na1.hsdp.io/edi", "image_tag" : "${var.authenticator_tag}", "registry_username" : "${var.cf_deploy_user}", "registry_password" : "${var.cf_deploy_password}" }
tokenexchange_broker_image = { "image_name" : "edi-foundation-iam-tokenexchange-broker", "registry" : "docker.na1.hsdp.io/edi", "image_tag" : "${var.tokenexchange_tag}", "registry_username" : "${var.cf_deploy_user}", "registry_password" : "${var.cf_deploy_password}" }
api_gateway_routes = [
{
hostname = "${data.cloudfoundry_space.cf_space.name}-api-gateway"
port = 8080
},
{
hostname = "org1-${data.cloudfoundry_space.cf_space.name}-api-gateway"
port = 8080
},
{
hostname = "invalidorg-${data.cloudfoundry_space.cf_space.name}-api-gateway"
port = 8080
}
]
envoy_config = base64encode(file(var.config_file_location))
space = var.cf_space
proposition_id = var.proposition_id
cf_org = var.cf_org
domain = var.cf_domain
api_gateway_environment = {
"MOUNTEBANK_ENDPOINT" = "${cloudfoundry_route.monteback.endpoint}"
"MOUNTEBANK_PORT" = 2525
"MONTEBANKSERVICEDOWNTEST" = "${cloudfoundry_route.montebankservicedowntest.endpoint}"
"ORG_ID_SOURCE" = var.org_id_source
"ORG_ID_MAPPING" = "{[\"org1-${data.cloudfoundry_space.cf_space.name}-api-gateway\"] = \"51e2503f-c1df-430d-a1ce-2524fa796cda\"}"
"TimeoutInSeconds" = "0.750s"
"ENVOY_PORT" = 8080
}
oauth2_environment = {
"OAUTH2_PROXY_COOKIE_REFRESH" = "0h0m25s"
"OAUTH2_PROXY_SESSION_STORE_TYPE" = "redis"
"OAUTH2_PROXY_REDIS_CONNECTION_URL" = "redis://:${var.redis_credentials["password"]}@${var.redis_credentials["hostname"]}:${var.redis_credentials["port"]}"
}
logout_redirect_url = "https://${data.cloudfoundry_space.cf_space.name}-api-gateway.${var.cf_domain}"
log_service_id = var.logdrainer
redis_service_id = var.oauth_proxy_redis
vault_service_id = cloudfoundry_service_instance.gateway_vault.id
use_authenticator = "true"
use_tokenexchangebroker = "true"
}
resource "cloudfoundry_network_policy" "monteback_a" {
policy {
source_app = module.app_api_gateway.api_gw_application_id
destination_app = cloudfoundry_app.monteback.id
port = 2525
}
}
resource "cloudfoundry_network_policy" "monteback_b" {
policy {
source_app = module.app_api_gateway.api_gw_application_id
destination_app = cloudfoundry_app.monteback.id
port = 4545
}
}
resource "cloudfoundry_network_policy" "monteback_c" {
policy {
source_app = module.app_api_gateway.api_gw_application_id
destination_app = cloudfoundry_app.monteback.id
port = 4546
}
}
resource "cloudfoundry_network_policy" "monteback_d" {
policy {
source_app = module.app_api_gateway.api_gw_application_id
destination_app = cloudfoundry_app.monteback.id
port = 4550
}
}
resource "cloudfoundry_network_policy" "monteback_FilterService" {
policy {
source_app = module.app_api_gateway.api_gw_application_id
destination_app = cloudfoundry_app.monteback.id
port = 4547
}
}
resource "cloudfoundry_app" "monteback" {
space = data.cloudfoundry_space.cf_space.id
name = "monteback"
docker_image = "${var.DOCKER_REGISTRY}/mountebank:latest"
instances = 1
memory = 300
disk_quota = 512
command = "node bin/mb --allowInjection"
docker_credentials = {
username = var.cf_deploy_user
password = var.cf_deploy_password
}
dynamic "routes" {
for_each = local.monteback_routes
content {
route = routes.value.route
}
}
}
resource "cloudfoundry_route" "monteback" {
domain = data.cloudfoundry_domain.internal.id
space = data.cloudfoundry_space.cf_space.id
hostname = "montebanktest-${data.cloudfoundry_space.cf_space.name}"
}
resource "cloudfoundry_route" "montebankservicedowntest" {
domain = data.cloudfoundry_domain.internal.id
space = data.cloudfoundry_space.cf_space.id
hostname = "montebankservicedowntest-${data.cloudfoundry_space.cf_space.name}"
}
resource "cloudfoundry_service_instance" "gateway_vault" {
name = "gateway_vault"
space = data.cloudfoundry_space.cf_space.id
service_plan = data.cloudfoundry_service.vault.service_plans["vault-us-east-1"]
}