Provisions a basic network appliance VM that allows accessing an Apigee X endpoint from a transitively peered VPC network.
Some background information and explanations can be found in this community article.
This sample contains:
- Apigee Basic Setup with internal Endpoint
- Internal HTTP Backend MIG with ILB
- Network Appliance MIG with custom routes for backend and the Apigee IP range.
- Firewalls
To validate or demo the setup:
- In a browser open the Apigee UI
- Ensure you are in the correct Apigee Organization
- Create an passthrough API proxy with base path
/internal
and a hostname ofhttp://BACKEND_ILB_IP
- Create and ssh into a temporary bastion VM in the backend network or use one of the backend VMs directly.
- Set the
ENDPOINT_IP
variable to your internal Apigee Endpoint and call the API proxy with:curl https://test.api.example.com/internal/get --resolve test.api.example.com:443:${ENDPOINT_IP} -kv
Please see the main README for detailed instructions.
Name | Version |
---|---|
n/a |
Name | Source | Version |
---|---|---|
apigee-x-core | ../../modules/apigee-x-core | n/a |
backend-example | ../../modules/development-backend | n/a |
backend-vpc | github.com/terraform-google-modules/cloud-foundation-fabric//modules/net-vpc | v16.0.0 |
peering-apigee-backend | github.com/terraform-google-modules/cloud-foundation-fabric//modules/net-vpc-peering | v16.0.0 |
project | github.com/terraform-google-modules/cloud-foundation-fabric//modules/project | v16.0.0 |
routing-appliance | ../../modules/routing-appliance | n/a |
vpc | github.com/terraform-google-modules/cloud-foundation-fabric//modules/net-vpc | v16.0.0 |
Name | Type |
---|---|
google_compute_firewall.allow-appliance-ingress | resource |
google_compute_firewall.allow-backend-ingress | resource |
Name | Description | Type | Default | Required |
---|---|---|---|---|
apigee_envgroups | Apigee Environment Groups. | map(object({ |
null |
no |
apigee_environments | Apigee Environments. | map(object({ |
null |
no |
apigee_instances | Apigee Instances (only one instance for EVAL orgs). | map(object({ |
null |
no |
apigee_network | Apigee VPC name. | string |
n/a | yes |
appliance_forwarded_ranges | CDIR ranges that should route via the network appliance | map(object({ |
{} |
no |
appliance_name | Name for the routing appliance | string |
"routing-appliance" |
no |
appliance_region | GCP Region for Routing Appliance (ensure this matches appliance_subnet.region). | string |
n/a | yes |
appliance_subnet | Subnet to host the routing appliance | object({ |
n/a | yes |
ax_region | GCP region for storing Apigee analytics data (see https://cloud.google.com/apigee/docs/api-platform/get-started/install-cli). | string |
n/a | yes |
backend_name | Name for the Demo Backend | string |
"demo-backend" |
no |
backend_network | Peered Backend VPC name. | string |
n/a | yes |
backend_region | GCP Region Backend (ensure this matches backend_subnet.region). | string |
n/a | yes |
backend_subnet | Subnet to host the backend service | object({ |
n/a | yes |
billing_account | Billing account id. | string |
null |
no |
peering_range | Peering CIDR range | string |
n/a | yes |
project_create | Create project. When set to false, uses a data source to reference existing project. | bool |
false |
no |
project_id | Project id (also used for the Apigee Organization). | string |
n/a | yes |
project_parent | Parent folder or organization in 'folders/folder_id' or 'organizations/org_id' format. | string |
null |
no |
support_range | Support CIDR range of length /28 (required by Apigee for troubleshooting purposes). | string |
n/a | yes |
No outputs.