From 9b37d5a0001c2690ff191a52cae8b060cbebd328 Mon Sep 17 00:00:00 2001 From: JoelGauci Date: Mon, 24 Apr 2023 10:25:10 +0200 Subject: [PATCH] generate README --- samples/x-nb-psc-sb-psc-ilb-crun/.gitignore | 8 + samples/x-nb-psc-sb-psc-ilb-crun/README.md | 119 ++++++ samples/x-nb-psc-sb-psc-ilb-crun/cleanup.sh | 44 +++ .../apiproxy/cloudrun-api-v1.xml | 14 + .../apiproxy/policies/RF-404NotFound.xml | 23 ++ .../apiproxy/proxies/default.xml | 55 +++ .../apiproxy/targets/default.xml | 26 ++ samples/x-nb-psc-sb-psc-ilb-crun/input.tfvars | 41 +++ samples/x-nb-psc-sb-psc-ilb-crun/main.tf | 342 ++++++++++++++++++ samples/x-nb-psc-sb-psc-ilb-crun/outputs.tf | 20 + .../pictures/overview.png | Bin 0 -> 200120 bytes samples/x-nb-psc-sb-psc-ilb-crun/pipeline.sh | 69 ++++ samples/x-nb-psc-sb-psc-ilb-crun/provider.tf | 30 ++ .../services/login/.dockerignore | 3 + .../services/login/Dockerfile | 32 ++ .../services/login/index.js | 31 ++ .../services/login/package.json | 18 + .../services/search/.dockerignore | 3 + .../services/search/Dockerfile | 32 ++ .../services/search/index.js | 31 ++ .../services/search/package.json | 18 + .../services/translate/.dockerignore | 3 + .../services/translate/Dockerfile | 33 ++ .../services/translate/index.js | 31 ++ .../services/translate/package.json | 18 + .../templates/AM-SetAudience.template.xml | 19 + samples/x-nb-psc-sb-psc-ilb-crun/variables.tf | 50 +++ 27 files changed, 1113 insertions(+) create mode 100644 samples/x-nb-psc-sb-psc-ilb-crun/.gitignore create mode 100644 samples/x-nb-psc-sb-psc-ilb-crun/README.md create mode 100755 samples/x-nb-psc-sb-psc-ilb-crun/cleanup.sh create mode 100644 samples/x-nb-psc-sb-psc-ilb-crun/cloudrun-api-v1/apiproxy/cloudrun-api-v1.xml create mode 100644 samples/x-nb-psc-sb-psc-ilb-crun/cloudrun-api-v1/apiproxy/policies/RF-404NotFound.xml create mode 100644 samples/x-nb-psc-sb-psc-ilb-crun/cloudrun-api-v1/apiproxy/proxies/default.xml create mode 100644 samples/x-nb-psc-sb-psc-ilb-crun/cloudrun-api-v1/apiproxy/targets/default.xml create mode 100644 samples/x-nb-psc-sb-psc-ilb-crun/input.tfvars create mode 100644 samples/x-nb-psc-sb-psc-ilb-crun/main.tf create mode 100644 samples/x-nb-psc-sb-psc-ilb-crun/outputs.tf create mode 100644 samples/x-nb-psc-sb-psc-ilb-crun/pictures/overview.png create mode 100755 samples/x-nb-psc-sb-psc-ilb-crun/pipeline.sh create mode 100644 samples/x-nb-psc-sb-psc-ilb-crun/provider.tf create mode 100644 samples/x-nb-psc-sb-psc-ilb-crun/services/login/.dockerignore create mode 100644 samples/x-nb-psc-sb-psc-ilb-crun/services/login/Dockerfile create mode 100644 samples/x-nb-psc-sb-psc-ilb-crun/services/login/index.js create mode 100644 samples/x-nb-psc-sb-psc-ilb-crun/services/login/package.json create mode 100644 samples/x-nb-psc-sb-psc-ilb-crun/services/search/.dockerignore create mode 100644 samples/x-nb-psc-sb-psc-ilb-crun/services/search/Dockerfile create mode 100644 samples/x-nb-psc-sb-psc-ilb-crun/services/search/index.js create mode 100644 samples/x-nb-psc-sb-psc-ilb-crun/services/search/package.json create mode 100644 samples/x-nb-psc-sb-psc-ilb-crun/services/translate/.dockerignore create mode 100644 samples/x-nb-psc-sb-psc-ilb-crun/services/translate/Dockerfile create mode 100644 samples/x-nb-psc-sb-psc-ilb-crun/services/translate/index.js create mode 100644 samples/x-nb-psc-sb-psc-ilb-crun/services/translate/package.json create mode 100644 samples/x-nb-psc-sb-psc-ilb-crun/templates/AM-SetAudience.template.xml create mode 100644 samples/x-nb-psc-sb-psc-ilb-crun/variables.tf diff --git a/samples/x-nb-psc-sb-psc-ilb-crun/.gitignore b/samples/x-nb-psc-sb-psc-ilb-crun/.gitignore new file mode 100644 index 0000000..6811358 --- /dev/null +++ b/samples/x-nb-psc-sb-psc-ilb-crun/.gitignore @@ -0,0 +1,8 @@ +.env +.terraform.lock.hcl +terraform.tfstate.backup +terraform.tfstate +.terraform.tfstate.lock.info +.DS_Store +AM-SetAudience.xml +.terraform diff --git a/samples/x-nb-psc-sb-psc-ilb-crun/README.md b/samples/x-nb-psc-sb-psc-ilb-crun/README.md new file mode 100644 index 0000000..7c55f3d --- /dev/null +++ b/samples/x-nb-psc-sb-psc-ilb-crun/README.md @@ -0,0 +1,119 @@ +# How to consume internal Cloud Run apps from Apigee X using a single Service Attachment + +## Overview + +This sample emphasises on the southbound connectivity based on +Private Service Connect (PSC) to communicate with internal Cloud Run +applications through an internal HTTPS (L7) load balancer. + +![Use case overview](./pictures/overview.png) + +An internal HTTPS load balancer (L7 ILB) is used to serve several Cloud Run apps using Serverless NEG and URL Mask. + +A serverless NEG backend can point to several Cloud Run services. + +A URL mask is a template of your URL schema. The serverless NEG uses this template to map the request to the appropriate service. + +The L7 ILB is accessed through a PSC Service Attachment that can be reached by an ApigeeX instance via a PSC endpoint Attachment. These two attachments (Endpoint and Service attachments) must be part of the same GCP region. + +Apigee X uses a target endpoint to reach the L7 ILB through the PSC channel. This target endpoint is configured in HTTPS and uses a dedicated hostname (the hostname of the l7 ILB). Therefore we need two DNS resolutions: + +- The first on Apigee X (target endpoint) to point to the PSC endpoint attachment: a private Cloud DNS (A record) and a DNS peering are required to manage the resolution. This private zone is configured on the consumer VPC (named apigee-network in the picture above) that is peered with the Apigee X VPC. The DNS peering is configured between the two VPCs for a particular domain (iloveapis.io in the example above) +- The second on the PSC service attachment to point to the L7 ILB: a private Cloud DNS (A record) is required to manage the resolution. This private zone is configured on the VPC (named ilb-network in the picture above). Note that the L7 ILB presents an SSL certificate used to establish a secured communication + +An identity token (ID token) is required to consume the different Cloud Run services. +This ID token is generated on Apigee X and transmitted as a bearer token to the Cloud Run apps. + +A service account (```sa_apigee_apiproxy```) is created for this purpose and used to deplpy the API proxy (```cloudrun-api-v1```) on the Apigee X instance. +The permission of this service account is ``` roles/run.invoker ``` + +## Setup Instructions + +You can implement a full or partial install of the sample + +### Full installation: Apigee X (PSC NB) + Southbound connectivity to Cloud Run apps using PSC + +For this type of installation, we consider that an Apigee X instance has already been provisionned. + +### Partial installation: Southbound connectivity to Cloud Run apps using PSC + +For this type of installation, we consider that an Apigee X instance has already been provisionned. + +We do not care about the existing northbopund connectivity, which can rely on VPC peering or PSC. + +Our focus here is the deployment of 3 (basic) internal Cloud Run services and the network components +to consume them from the Apigee X instance. Apigee is of course used to expose these services +as APIs and API products. + + +## Requirements + +| Name | Version | +|------|---------| +| [google](#requirement\_google) | 4.58.0 | + +## Providers + +| Name | Version | +|------|---------| +| [google](#provider\_google) | 4.58.0 | +| [null](#provider\_null) | 3.2.1 | +| [tls](#provider\_tls) | 4.0.4 | + +## Modules + +| Name | Source | Version | +|------|--------|---------| +| [cloud\_run](#module\_cloud\_run) | GoogleCloudPlatform/cloud-run/google | ~> 0.2.0 | + +## Resources + +| Name | Type | +|------|------| +| [google_apigee_endpoint_attachment.endpoint_attachment](https://registry.terraform.io/providers/hashicorp/google/4.58.0/docs/resources/apigee_endpoint_attachment) | resource | +| [google_artifact_registry_repository.docker-main](https://registry.terraform.io/providers/hashicorp/google/4.58.0/docs/resources/artifact_registry_repository) | resource | +| [google_compute_address.default](https://registry.terraform.io/providers/hashicorp/google/4.58.0/docs/resources/compute_address) | resource | +| [google_compute_forwarding_rule.default](https://registry.terraform.io/providers/hashicorp/google/4.58.0/docs/resources/compute_forwarding_rule) | resource | +| [google_compute_network.default](https://registry.terraform.io/providers/hashicorp/google/4.58.0/docs/resources/compute_network) | resource | +| [google_compute_region_backend_service.default](https://registry.terraform.io/providers/hashicorp/google/4.58.0/docs/resources/compute_region_backend_service) | resource | +| [google_compute_region_network_endpoint_group.cloudrun_neg](https://registry.terraform.io/providers/hashicorp/google/4.58.0/docs/resources/compute_region_network_endpoint_group) | resource | +| [google_compute_region_ssl_certificate.default](https://registry.terraform.io/providers/hashicorp/google/4.58.0/docs/resources/compute_region_ssl_certificate) | resource | +| [google_compute_region_target_https_proxy.default](https://registry.terraform.io/providers/hashicorp/google/4.58.0/docs/resources/compute_region_target_https_proxy) | resource | +| [google_compute_region_url_map.https_lb](https://registry.terraform.io/providers/hashicorp/google/4.58.0/docs/resources/compute_region_url_map) | resource | +| [google_compute_service_attachment.psc_ilb_service_attachment](https://registry.terraform.io/providers/hashicorp/google/4.58.0/docs/resources/compute_service_attachment) | resource | +| [google_compute_subnetwork.default](https://registry.terraform.io/providers/hashicorp/google/4.58.0/docs/resources/compute_subnetwork) | resource | +| [google_compute_subnetwork.proxy_subnet](https://registry.terraform.io/providers/hashicorp/google/4.58.0/docs/resources/compute_subnetwork) | resource | +| [google_compute_subnetwork.psc_ilb_nat](https://registry.terraform.io/providers/hashicorp/google/4.58.0/docs/resources/compute_subnetwork) | resource | +| [google_dns_managed_zone.private-zone-apigee](https://registry.terraform.io/providers/hashicorp/google/4.58.0/docs/resources/dns_managed_zone) | resource | +| [google_dns_managed_zone.private-zone-ilb](https://registry.terraform.io/providers/hashicorp/google/4.58.0/docs/resources/dns_managed_zone) | resource | +| [google_dns_record_set.a-apigee](https://registry.terraform.io/providers/hashicorp/google/4.58.0/docs/resources/dns_record_set) | resource | +| [google_dns_record_set.a-ilb](https://registry.terraform.io/providers/hashicorp/google/4.58.0/docs/resources/dns_record_set) | resource | +| [google_project_iam_member.sa_apigee_apiproxy](https://registry.terraform.io/providers/hashicorp/google/4.58.0/docs/resources/project_iam_member) | resource | +| [google_project_service.gcp_services](https://registry.terraform.io/providers/hashicorp/google/4.58.0/docs/resources/project_service) | resource | +| [google_service_account.service_account_apiproxy](https://registry.terraform.io/providers/hashicorp/google/4.58.0/docs/resources/service_account) | resource | +| [google_service_networking_peered_dns_domain.apigee](https://registry.terraform.io/providers/hashicorp/google/4.58.0/docs/resources/service_networking_peered_dns_domain) | resource | +| [null_resource.login_image_build](https://registry.terraform.io/providers/hashicorp/null/latest/docs/resources/resource) | resource | +| [null_resource.search_image_build](https://registry.terraform.io/providers/hashicorp/null/latest/docs/resources/resource) | resource | +| [null_resource.translate_image_build](https://registry.terraform.io/providers/hashicorp/null/latest/docs/resources/resource) | resource | +| [tls_private_key.default](https://registry.terraform.io/providers/hashicorp/tls/latest/docs/resources/private_key) | resource | +| [tls_self_signed_cert.default](https://registry.terraform.io/providers/hashicorp/tls/latest/docs/resources/self_signed_cert) | resource | + +## Inputs + +| Name | Description | Type | Default | Required | +|------|-------------|------|---------|:--------:| +| [apigee\_endpoint\_attachment](#input\_apigee\_endpoint\_attachment) | Apigee endpoint attachment value. | `string` | n/a | yes | +| [consumer\_vpc](#input\_consumer\_vpc) | Consumer VPC network name. | `string` | n/a | yes | +| [gcp\_project\_id](#input\_gcp\_project\_id) | The GCP project ID to create the gcp resources in. | `string` | n/a | yes | +| [gcp\_region](#input\_gcp\_region) | The GCP region to create the gcp resources in. | `string` | n/a | yes | +| [gcp\_service\_list](#input\_gcp\_service\_list) | The list of required Google apis | `list(string)` |
[
"artifactregistry.googleapis.com",
"cloudbuild.googleapis.com",
"run.googleapis.com",
"dns.googleapis.com",
"compute.googleapis.com",
"logging.googleapis.com",
"monitoring.googleapis.com"
]
| no | +| [gcp\_zone](#input\_gcp\_zone) | The GCP zone to create the gcp resources in. | `string` | n/a | yes | +| [repository\_id](#input\_repository\_id) | Repository id of the artifact registry. | `string` | n/a | yes | +| [url\_mask](#input\_url\_mask) | URL mask of the serverless network endpoint group (neg). | `string` | n/a | yes | + +## Outputs + +| Name | Description | +|------|-------------| +| [service\_urls](#output\_service\_urls) | Cloud Run service URLs | + \ No newline at end of file diff --git a/samples/x-nb-psc-sb-psc-ilb-crun/cleanup.sh b/samples/x-nb-psc-sb-psc-ilb-crun/cleanup.sh new file mode 100755 index 0000000..c8a8b1c --- /dev/null +++ b/samples/x-nb-psc-sb-psc-ilb-crun/cleanup.sh @@ -0,0 +1,44 @@ +#!/bin/sh +# Copyright 2023 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -e + +SCRIPTPATH="$( cd "$(dirname "$0")" || exit >/dev/null 2>&1 ; pwd -P )" + +# Ask for input parameters if they are not set + +[ -z "$GCP_PROJECT_ID" ] && printf "GCP project id: " && read -r GCP_PROJECT_ID + +### +### destroy_common_gcp_resources() +### +destroy_common_gcp_resources() { + + terraform init + terraform destroy --var-file="./input.tfvars" \ + -var "gcp_project_id=${GCP_PROJECT_ID}" + -auto-approve +} + +## +### +### destroy_common_gcp_resources() +### +main() { + cd ${SCRIPTPATH} + destroy_common_gcp_resources +} + +main "${@}" diff --git a/samples/x-nb-psc-sb-psc-ilb-crun/cloudrun-api-v1/apiproxy/cloudrun-api-v1.xml b/samples/x-nb-psc-sb-psc-ilb-crun/cloudrun-api-v1/apiproxy/cloudrun-api-v1.xml new file mode 100644 index 0000000..fe974a4 --- /dev/null +++ b/samples/x-nb-psc-sb-psc-ilb-crun/cloudrun-api-v1/apiproxy/cloudrun-api-v1.xml @@ -0,0 +1,14 @@ + + + diff --git a/samples/x-nb-psc-sb-psc-ilb-crun/cloudrun-api-v1/apiproxy/policies/RF-404NotFound.xml b/samples/x-nb-psc-sb-psc-ilb-crun/cloudrun-api-v1/apiproxy/policies/RF-404NotFound.xml new file mode 100644 index 0000000..f01f7b8 --- /dev/null +++ b/samples/x-nb-psc-sb-psc-ilb-crun/cloudrun-api-v1/apiproxy/policies/RF-404NotFound.xml @@ -0,0 +1,23 @@ + + + + + + + {"error":"not_found"} + 404 + Not Found + + + diff --git a/samples/x-nb-psc-sb-psc-ilb-crun/cloudrun-api-v1/apiproxy/proxies/default.xml b/samples/x-nb-psc-sb-psc-ilb-crun/cloudrun-api-v1/apiproxy/proxies/default.xml new file mode 100644 index 0000000..dad25ed --- /dev/null +++ b/samples/x-nb-psc-sb-psc-ilb-crun/cloudrun-api-v1/apiproxy/proxies/default.xml @@ -0,0 +1,55 @@ + + + + + + + (proxy.pathsuffix MatchesPath "/login") and (request.verb = "GET") + + + + + (proxy.pathsuffix MatchesPath "/search") and (request.verb = "GET") + + + + + (proxy.pathsuffix MatchesPath "/translate") and (request.verb = "GET") + + + + + + + RF-404NotFound + + + + + + + + + AM-SetAudience + + + + + + /v1/crun + + + default + + diff --git a/samples/x-nb-psc-sb-psc-ilb-crun/cloudrun-api-v1/apiproxy/targets/default.xml b/samples/x-nb-psc-sb-psc-ilb-crun/cloudrun-api-v1/apiproxy/targets/default.xml new file mode 100644 index 0000000..ae8107c --- /dev/null +++ b/samples/x-nb-psc-sb-psc-ilb-crun/cloudrun-api-v1/apiproxy/targets/default.xml @@ -0,0 +1,26 @@ + + + + + + + + https://internal.example.com + + + + + + + diff --git a/samples/x-nb-psc-sb-psc-ilb-crun/input.tfvars b/samples/x-nb-psc-sb-psc-ilb-crun/input.tfvars new file mode 100644 index 0000000..cd84f21 --- /dev/null +++ b/samples/x-nb-psc-sb-psc-ilb-crun/input.tfvars @@ -0,0 +1,41 @@ +/** + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + ** gcp variables +*/ +gcp_region = "europe-west1" +gcp_zone = "europe-west1-b" + +/** + ** artifact registry variables +*/ +repository_id = "docker-main" + +/** + ** serverless neg variables +*/ +url_mask = "/" + +/** + ** name of the apigee endpoint attachment +*/ +apigee_endpoint_attachment = "pscendpoint" + +/** + ** consumer vpc network name +*/ +consumer_vpc = "apigee-network" diff --git a/samples/x-nb-psc-sb-psc-ilb-crun/main.tf b/samples/x-nb-psc-sb-psc-ilb-crun/main.tf new file mode 100644 index 0000000..f12063d --- /dev/null +++ b/samples/x-nb-psc-sb-psc-ilb-crun/main.tf @@ -0,0 +1,342 @@ +/** + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +variable "gcp_service_list" { + description = "The list of required Google apis" + type = list(string) + default = [ + "artifactregistry.googleapis.com", + "cloudbuild.googleapis.com", + "run.googleapis.com", + "dns.googleapis.com", + "compute.googleapis.com", + "logging.googleapis.com", + "monitoring.googleapis.com" + ] +} + +resource "google_project_service" "gcp_services" { + for_each = toset(var.gcp_service_list) + project = var.gcp_project_id + service = each.key + disable_dependent_services = true +} + +resource "google_artifact_registry_repository" "docker-main" { + location = var.gcp_region + repository_id = var.repository_id + description = "Main Docker Repository for Cloud Run" + format = "DOCKER" + depends_on = [ + google_project_service.gcp_services + ] +} + +resource "null_resource" "login_image_build" { + triggers = { + always_run = timestamp() + } + + provisioner "local-exec" { + working_dir = "${path.module}/services/login" + command = "gcloud builds submit --tag ${var.gcp_region}-docker.pkg.dev/${var.gcp_project_id}/docker-main/login" + } + + depends_on = [ + google_artifact_registry_repository.docker-main + ] +} + +resource "null_resource" "search_image_build" { + triggers = { + always_run = timestamp() + } + + provisioner "local-exec" { + working_dir = "${path.module}/services/search" + command = "gcloud builds submit --tag ${var.gcp_region}-docker.pkg.dev/${var.gcp_project_id}/docker-main/search" + } + + depends_on = [ + google_artifact_registry_repository.docker-main + ] +} + +resource "null_resource" "translate_image_build" { + triggers = { + always_run = timestamp() + } + + provisioner "local-exec" { + working_dir = "${path.module}/services/translate" + command = "gcloud builds submit --tag ${var.gcp_region}-docker.pkg.dev/${var.gcp_project_id}/docker-main/translate" + } + + depends_on = [ + google_artifact_registry_repository.docker-main + ] +} + +module "cloud_run" { + source = "GoogleCloudPlatform/cloud-run/google" + version = "~> 0.2.0" + + #3 Cloud Run internal services + for_each = toset([ + "login", + "search", + "translate" + ]) + + # Required variables + service_name = each.key + project_id = var.gcp_project_id + location = var.gcp_region + image = "${var.gcp_region}-docker.pkg.dev/${var.gcp_project_id}/docker-main/${each.key}" + service_annotations = { + "run.googleapis.com/ingress": "internal" + } + + depends_on = [ + google_project_service.gcp_services, + null_resource.login_image_build, + null_resource.search_image_build, + null_resource.translate_image_build + ] + +} + +# VPC network +resource "google_compute_network" "default" { + name = "l7-ilb-network" + auto_create_subnetworks = false +} + +# Proxy-only subnet +resource "google_compute_subnetwork" "proxy_subnet" { + name = "l7-ilb-proxy-subnet" + ip_cidr_range = "10.0.0.0/24" + region = var.gcp_region + purpose = "REGIONAL_MANAGED_PROXY" + role = "ACTIVE" + network = google_compute_network.default.id +} + +# Backend subnet +resource "google_compute_subnetwork" "default" { + name = "l7-ilb-subnet" + ip_cidr_range = "10.0.1.0/24" + region = var.gcp_region + network = google_compute_network.default.id +} + +# Reserved internal address +resource "google_compute_address" "default" { + name = "l7-ilb-ip" + subnetwork = google_compute_subnetwork.default.id + address_type = "INTERNAL" + address = "10.0.1.5" + region = var.gcp_region + project = var.gcp_project_id +} + +# Regional forwarding rule +resource "google_compute_forwarding_rule" "default" { + project = var.gcp_project_id + name = "psc-l7-ilb-forwarding-rule" + region = var.gcp_region + depends_on = [google_compute_subnetwork.proxy_subnet] + ip_address = google_compute_address.default.id + load_balancing_scheme = "INTERNAL_MANAGED" + port_range = "443" + target = google_compute_region_target_https_proxy.default.id + network = google_compute_network.default.id + subnetwork = google_compute_subnetwork.default.id + network_tier = "PREMIUM" +} + +# Self-signed regional SSL certificate for testing +resource "tls_private_key" "default" { + algorithm = "RSA" + rsa_bits = 2048 +} + +resource "tls_self_signed_cert" "default" { + private_key_pem = tls_private_key.default.private_key_pem + + # Certificate expires after 100 days. + validity_period_hours = 2400 + + # Generate a new certificate if Terraform is run within three + # hours of the certificate's expiration time. + early_renewal_hours = 3 + + # Reasonable set of uses for a server SSL certificate. + allowed_uses = [ + "key_encipherment", + "digital_signature", + "server_auth", + ] + dns_names = ["internal.example.com"] + subject { + common_name = "internal.example.com" + organization = "Exo, Inc" + } +} + +resource "google_compute_region_ssl_certificate" "default" { + name_prefix = "exco-sslcert-" + private_key = tls_private_key.default.private_key_pem + certificate = tls_self_signed_cert.default.cert_pem + region = var.gcp_region + lifecycle { + create_before_destroy = true + } +} + +# Regional target HTTPS proxy +resource "google_compute_region_target_https_proxy" "default" { + name = "l7-ilb-target-https-proxy" + region = var.gcp_region + url_map = google_compute_region_url_map.https_lb.id + ssl_certificates = [google_compute_region_ssl_certificate.default.self_link] +} + +# Regional URL map +resource "google_compute_region_url_map" "https_lb" { + name = "l7-ilb-regional-url-map" + region = var.gcp_region + default_service = google_compute_region_backend_service.default.id +} + +resource "google_compute_region_backend_service" "default" { + load_balancing_scheme = "INTERNAL_MANAGED" + backend { + group = google_compute_region_network_endpoint_group.cloudrun_neg.id + balancing_mode = "UTILIZATION" + } + region = var.gcp_region + name = "region-backend-service" + protocol = "HTTPS" +} + +resource "google_compute_region_network_endpoint_group" "cloudrun_neg" { + name = "cloudrun-neg" + network_endpoint_type = "SERVERLESS" + region = var.gcp_region + cloud_run { + url_mask = var.url_mask + } +} + +resource "google_compute_subnetwork" "psc_ilb_nat" { + name = "psc-ilb-nat" + region = var.gcp_region + network = google_compute_network.default.id + purpose = "PRIVATE_SERVICE_CONNECT" + ip_cidr_range = "10.75.0.0/28" +} + +resource "google_compute_service_attachment" "psc_ilb_service_attachment" { + name = "psc-attachment-ilb" + region = var.gcp_region + description = "Service attachment for ilb configured with Terraform" + project = var.gcp_project_id + enable_proxy_protocol = false + connection_preference = "ACCEPT_AUTOMATIC" + nat_subnets = [google_compute_subnetwork.psc_ilb_nat.id] + target_service = google_compute_forwarding_rule.default.id +} + +resource "google_apigee_endpoint_attachment" "endpoint_attachment" { + org_id = "organizations/${var.gcp_project_id}" + endpoint_attachment_id = var.apigee_endpoint_attachment + location = var.gcp_region + service_attachment = google_compute_service_attachment.psc_ilb_service_attachment.id +} + +# Service account used by apigee apiproxy to invoke a cloud run app using id token +resource "google_service_account" "service_account_apiproxy" { + account_id = "apigee-apiproxy" + display_name = "invoke cloud run app from apigee apiproxy" +} + +locals { + service_account_a = "serviceAccount:apigee-apiproxy@${var.gcp_project_id}.iam.gserviceaccount.com" + } + +resource "google_project_iam_member" "sa_apigee_apiproxy" { + for_each = toset([ + "roles/run.invoker" + ]) + role = each.key + project = var.gcp_project_id + member = local.service_account_a + depends_on = [google_service_account.service_account_apiproxy] +} + +resource "google_dns_managed_zone" "private-zone-apigee" { + name = "private-zone-apigee" + dns_name = "example.com." + description = "ExCo private DNS zone (Apigee)" + visibility = "private" + private_visibility_config { + networks { + network_url = "projects/${var.gcp_project_id}/global/networks/${var.consumer_vpc}" + } + } + depends_on = [ + google_project_service.gcp_services + ] +} + +resource "google_dns_managed_zone" "private-zone-ilb" { + name = "private-zone-ilb" + dns_name = "example.com." + description = "ExCo private DNS zone (L7 ILB)" + visibility = "private" + private_visibility_config { + networks { + network_url = "projects/${var.gcp_project_id}/global/networks/l7-ilb-network" + } + } + depends_on = [ + google_project_service.gcp_services + ] +} + +resource "google_dns_record_set" "a-apigee" { + name = "internal.${google_dns_managed_zone.private-zone-apigee.dns_name}" + managed_zone = google_dns_managed_zone.private-zone-apigee.name + type = "A" + ttl = 300 + rrdatas = [google_apigee_endpoint_attachment.endpoint_attachment.host] +} + +resource "google_dns_record_set" "a-ilb" { + name = "internal.${google_dns_managed_zone.private-zone-ilb.dns_name}" + managed_zone = google_dns_managed_zone.private-zone-ilb.name + type = "A" + ttl = 300 + rrdatas = ["10.0.1.5"] +} + +resource "google_service_networking_peered_dns_domain" "apigee" { + project = var.gcp_project_id + name = "apigee-dns-peering" + network = var.consumer_vpc + dns_suffix = google_dns_managed_zone.private-zone-apigee.dns_name +} diff --git a/samples/x-nb-psc-sb-psc-ilb-crun/outputs.tf b/samples/x-nb-psc-sb-psc-ilb-crun/outputs.tf new file mode 100644 index 0000000..4d384de --- /dev/null +++ b/samples/x-nb-psc-sb-psc-ilb-crun/outputs.tf @@ -0,0 +1,20 @@ +/** + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +output "service_urls" { + description = "Cloud Run service URLs" + value = values(module.cloud_run)[*].service_url +} diff --git a/samples/x-nb-psc-sb-psc-ilb-crun/pictures/overview.png b/samples/x-nb-psc-sb-psc-ilb-crun/pictures/overview.png new file mode 100644 index 0000000000000000000000000000000000000000..bb46da0faacc27d4136edc9a7b632a2efb2950ad GIT binary patch literal 200120 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

(Ik$7R+pbbN}vkHxC*4dxchowQwrM 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/dev/null 2>&1 ; pwd -P )" + +# Ask for input parameters if they are not set + +[ -z "$GCP_PROJECT_ID" ] && printf "GCP project id: " && read -r GCP_PROJECT_ID +[ -z "$APIGEE_X_ORG" ] && printf "Apigee X Organization: " && read -r APIGEE_X_ORG +[ -z "$APIGEE_X_ENV" ] && printf "Apigee X Environment: " && read -r APIGEE_X_ENV +[ -z "$APIGEE_X_HOSTNAME" ] && printf "Apigee X Hostname: " && read -r APIGEE_X_HOSTNAME + +### +### create_common_gcp_resources() +### +create_common_gcp_resources() { + + terraform init + + terraform plan -var "gcp_project_id=${GCP_PROJECT_ID}" \ + --var-file=./input.tfvars + + terraform apply -var "gcp_project_id=${GCP_PROJECT_ID}" \ + --var-file=./input.tfvars \ + -auto-approve +} + +## +### +### create_common_gcp_resources() +### +main() { + cd "$SCRIPTPATH" + create_common_gcp_resources + # Cloud Run app url + APP_URL=$(terraform output -json service_urls | jq -r '.[0]') + + # dynamic set of the audience + CLOUDRUN_APP_SUFFIX=$(echo "${APP_URL}" | sed "s/https:\/\/login//") + export CLOUDRUN_APP_SUFFIX + envsubst < "$SCRIPTPATH"/templates/AM-SetAudience.template.xml > "$SCRIPTPATH"/cloudrun-api-v1/apiproxy/policies/AM-SetAudience.xml + + # deploy the Apigee api proxy + APIGEE_TOKEN="$(gcloud config config-helper --force-auth-refresh --format json | jq -r '.credential.access_token')" + SA_EMAIL="apigee-apiproxy@$GCP_PROJECT_ID.iam.gserviceaccount.com" + sackmesser deploy --googleapi \ + -o "$APIGEE_X_ORG" \ + -e "$APIGEE_X_ENV" \ + -t "$APIGEE_TOKEN" \ + -h "$APIGEE_X_HOSTNAME" \ + -d "$SCRIPTPATH"/cloudrun-api-v1 \ + --deployment-sa "$SA_EMAIL" +} + +main "${@}" diff --git a/samples/x-nb-psc-sb-psc-ilb-crun/provider.tf b/samples/x-nb-psc-sb-psc-ilb-crun/provider.tf new file mode 100644 index 0000000..6f28e18 --- /dev/null +++ b/samples/x-nb-psc-sb-psc-ilb-crun/provider.tf @@ -0,0 +1,30 @@ +/** + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +terraform { + required_providers { + google = { + source = "hashicorp/google" + version = "4.58.0" + } + } +} + +provider "google" { + project = var.gcp_project_id + region = var.gcp_region + zone = var.gcp_zone +} diff --git a/samples/x-nb-psc-sb-psc-ilb-crun/services/login/.dockerignore b/samples/x-nb-psc-sb-psc-ilb-crun/services/login/.dockerignore new file mode 100644 index 0000000..29d6828 --- /dev/null +++ b/samples/x-nb-psc-sb-psc-ilb-crun/services/login/.dockerignore @@ -0,0 +1,3 @@ +node_modules +npm-debug.log + diff --git a/samples/x-nb-psc-sb-psc-ilb-crun/services/login/Dockerfile b/samples/x-nb-psc-sb-psc-ilb-crun/services/login/Dockerfile new file mode 100644 index 0000000..ebfe054 --- /dev/null +++ b/samples/x-nb-psc-sb-psc-ilb-crun/services/login/Dockerfile @@ -0,0 +1,32 @@ +# Copyright 2023 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +FROM node:16 + +# Create app directory +WORKDIR /usr/src/app + +# Install app dependencies +# A wildcard is used to ensure both package.json AND package-lock.json are copied +# where available (npm@5+) +COPY package*.json ./ + +RUN npm install +# If you are building your code for production +# RUN npm ci --only=production + +# Bundle app source +COPY . . + +EXPOSE 8080 +CMD [ "node", "index.js" ] diff --git a/samples/x-nb-psc-sb-psc-ilb-crun/services/login/index.js b/samples/x-nb-psc-sb-psc-ilb-crun/services/login/index.js new file mode 100644 index 0000000..e56ce8d --- /dev/null +++ b/samples/x-nb-psc-sb-psc-ilb-crun/services/login/index.js @@ -0,0 +1,31 @@ +/** + Copyright 2023 Google LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ +const express = require('express'); +const app = express(); + +app.get('/login', (req, res) => { + const name = process.env.NAME || 'Login'; + res.json({ + service: "login", + id: "123-abc" + }); +}); + +const port = parseInt(process.env.PORT) || 8080; +app.listen(port, () => { + console.log(`Login service: listening on port ${port}`); +}); diff --git a/samples/x-nb-psc-sb-psc-ilb-crun/services/login/package.json b/samples/x-nb-psc-sb-psc-ilb-crun/services/login/package.json new file mode 100644 index 0000000..640456d --- /dev/null +++ b/samples/x-nb-psc-sb-psc-ilb-crun/services/login/package.json @@ -0,0 +1,18 @@ +{ + "name": "login", + "description": "Simple Login service in Node", + "version": "1.0.0", + "private": true, + "main": "index.js", + "scripts": { + "start": "node index.js" + }, + "engines": { + "node": ">=12.0.0" + }, + "author": "Google LLC", + "license": "Apache-2.0", + "dependencies": { + "express": "^4.17.1" + } +} diff --git a/samples/x-nb-psc-sb-psc-ilb-crun/services/search/.dockerignore b/samples/x-nb-psc-sb-psc-ilb-crun/services/search/.dockerignore new file mode 100644 index 0000000..29d6828 --- /dev/null +++ b/samples/x-nb-psc-sb-psc-ilb-crun/services/search/.dockerignore @@ -0,0 +1,3 @@ +node_modules +npm-debug.log + diff --git a/samples/x-nb-psc-sb-psc-ilb-crun/services/search/Dockerfile b/samples/x-nb-psc-sb-psc-ilb-crun/services/search/Dockerfile new file mode 100644 index 0000000..ebfe054 --- /dev/null +++ b/samples/x-nb-psc-sb-psc-ilb-crun/services/search/Dockerfile @@ -0,0 +1,32 @@ +# Copyright 2023 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +FROM node:16 + +# Create app directory +WORKDIR /usr/src/app + +# Install app dependencies +# A wildcard is used to ensure both package.json AND package-lock.json are copied +# where available (npm@5+) +COPY package*.json ./ + +RUN npm install +# If you are building your code for production +# RUN npm ci --only=production + +# Bundle app source +COPY . . + +EXPOSE 8080 +CMD [ "node", "index.js" ] diff --git a/samples/x-nb-psc-sb-psc-ilb-crun/services/search/index.js b/samples/x-nb-psc-sb-psc-ilb-crun/services/search/index.js new file mode 100644 index 0000000..234d0a5 --- /dev/null +++ b/samples/x-nb-psc-sb-psc-ilb-crun/services/search/index.js @@ -0,0 +1,31 @@ +/** + Copyright 2023 Google LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ +const express = require('express'); +const app = express(); + +app.get('/search', (req, res) => { + const name = process.env.NAME || 'Search'; + res.json({ + service: "search", + id: "456-def" + }); +}); + +const port = parseInt(process.env.PORT) || 8080; +app.listen(port, () => { + console.log(`Search service: listening on port ${port}`); +}); diff --git a/samples/x-nb-psc-sb-psc-ilb-crun/services/search/package.json b/samples/x-nb-psc-sb-psc-ilb-crun/services/search/package.json new file mode 100644 index 0000000..41dd294 --- /dev/null +++ b/samples/x-nb-psc-sb-psc-ilb-crun/services/search/package.json @@ -0,0 +1,18 @@ +{ + "name": "search", + "description": "Simple Search service in Node", + "version": "1.0.0", + "private": true, + "main": "index.js", + "scripts": { + "start": "node index.js" + }, + "engines": { + "node": ">=12.0.0" + }, + "author": "Google LLC", + "license": "Apache-2.0", + "dependencies": { + "express": "^4.17.1" + } +} diff --git a/samples/x-nb-psc-sb-psc-ilb-crun/services/translate/.dockerignore b/samples/x-nb-psc-sb-psc-ilb-crun/services/translate/.dockerignore new file mode 100644 index 0000000..29d6828 --- /dev/null +++ b/samples/x-nb-psc-sb-psc-ilb-crun/services/translate/.dockerignore @@ -0,0 +1,3 @@ +node_modules +npm-debug.log + diff --git a/samples/x-nb-psc-sb-psc-ilb-crun/services/translate/Dockerfile b/samples/x-nb-psc-sb-psc-ilb-crun/services/translate/Dockerfile new file mode 100644 index 0000000..ba53edb --- /dev/null +++ b/samples/x-nb-psc-sb-psc-ilb-crun/services/translate/Dockerfile @@ -0,0 +1,33 @@ +# Copyright 2023 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +FROM node:16 + +# Create app directory +WORKDIR /usr/src/app + +# Install app dependencies +# A wildcard is used to ensure both package.json AND package-lock.json are copied +# where available (npm@5+) +COPY package*.json ./ + +RUN npm install +# If you are building your code for production +# RUN npm ci --only=production + +# Bundle app source +COPY . . + +EXPOSE 8080 +CMD [ "node", "index.js" ] + diff --git a/samples/x-nb-psc-sb-psc-ilb-crun/services/translate/index.js b/samples/x-nb-psc-sb-psc-ilb-crun/services/translate/index.js new file mode 100644 index 0000000..ae01fd7 --- /dev/null +++ b/samples/x-nb-psc-sb-psc-ilb-crun/services/translate/index.js @@ -0,0 +1,31 @@ +/** + Copyright 2023 Google LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ +const express = require('express'); +const app = express(); + +app.get('/translate', (req, res) => { + const name = process.env.NAME || 'Translate'; + res.json({ + service: "translate", + id: "789-ghi" + }); +}); + +const port = parseInt(process.env.PORT) || 8080; +app.listen(port, () => { + console.log(`Translate service: listening on port ${port}`); +}); diff --git a/samples/x-nb-psc-sb-psc-ilb-crun/services/translate/package.json b/samples/x-nb-psc-sb-psc-ilb-crun/services/translate/package.json new file mode 100644 index 0000000..f928cfb --- /dev/null +++ b/samples/x-nb-psc-sb-psc-ilb-crun/services/translate/package.json @@ -0,0 +1,18 @@ +{ + "name": "translate", + "description": "Simple Translate service in Node", + "version": "1.0.0", + "private": true, + "main": "index.js", + "scripts": { + "start": "node index.js" + }, + "engines": { + "node": ">=12.0.0" + }, + "author": "Google LLC", + "license": "Apache-2.0", + "dependencies": { + "express": "^4.17.1" + } +} diff --git a/samples/x-nb-psc-sb-psc-ilb-crun/templates/AM-SetAudience.template.xml b/samples/x-nb-psc-sb-psc-ilb-crun/templates/AM-SetAudience.template.xml new file mode 100644 index 0000000..d727843 --- /dev/null +++ b/samples/x-nb-psc-sb-psc-ilb-crun/templates/AM-SetAudience.template.xml @@ -0,0 +1,19 @@ + + + + + flow.audience + + + diff --git a/samples/x-nb-psc-sb-psc-ilb-crun/variables.tf b/samples/x-nb-psc-sb-psc-ilb-crun/variables.tf new file mode 100644 index 0000000..ba67396 --- /dev/null +++ b/samples/x-nb-psc-sb-psc-ilb-crun/variables.tf @@ -0,0 +1,50 @@ +/** + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +variable "gcp_project_id" { + type = string + description = "The GCP project ID to create the gcp resources in." +} + +variable "gcp_region" { + type = string + description = "The GCP region to create the gcp resources in." +} + +variable "gcp_zone" { + type = string + description = "The GCP zone to create the gcp resources in." +} + +variable "repository_id" { + type = string + description = "Repository id of the artifact registry." +} + +variable "url_mask" { + type = string + description = "URL mask of the serverless network endpoint group (neg)." +} + +variable "apigee_endpoint_attachment" { + type = string + description = "Apigee endpoint attachment value." +} + +variable "consumer_vpc" { + type = string + description = "Consumer VPC network name." +} \ No newline at end of file