tutorials/private-targets/terraform-config/networking.tf (173 lines of code) (raw):

/** * Copyright 2021 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. */ resource "google_compute_network" "network_gke" { name = "gke-network" auto_create_subnetworks = false } resource "google_compute_network" "network_gcb" { name = "gcb-network" auto_create_subnetworks = false } resource "google_compute_subnetwork" "subnetwork_gcb" { name = "gcb-subnetwork" network = google_compute_network.network_gcb.id region = var.region ip_cidr_range = "10.0.0.0/16" } resource "google_compute_subnetwork" "subnetwork_gke_test" { name = "gke-subnetwork-test" network = google_compute_network.network_gke.id region = var.region ip_cidr_range = "10.1.0.0/16" } resource "google_compute_subnetwork" "subnetwork_gke_staging" { name = "gke-subnetwork-staging" network = google_compute_network.network_gke.id region = var.region ip_cidr_range = "10.2.0.0/16" } resource "google_compute_subnetwork" "subnetwork_gke_prod" { name = "gke-subnetwork-prod" network = google_compute_network.network_gke.id region = var.region ip_cidr_range = "10.3.0.0/16" } resource "google_compute_router" "router_gke" { name = "gke-router" region = var.region network = google_compute_network.network_gke.id bgp { asn = var.gke_asn advertise_mode = "CUSTOM" advertised_groups = ["ALL_SUBNETS"] advertised_ip_ranges { range = var.test_cluster_master_cidr } advertised_ip_ranges { range = var.staging_cluster_master_cidr } advertised_ip_ranges { range = var.prod_cluster_master_cidr } } } resource "google_compute_router" "router_gcb" { name = "gcb-router" region = var.region network = google_compute_network.network_gcb.id bgp { asn = var.gcb_asn advertise_mode = "CUSTOM" advertised_groups = ["ALL_SUBNETS"] advertised_ip_ranges { range = "${var.private_pool_address}/${var.private_pool_prefix}" } } } module "gke_vpn" { source = "terraform-google-modules/vpn/google//modules/vpn_ha" version = "2.4.0" name = "gke-to-gcb-vpn" project_id = var.project_id region = var.region network = google_compute_network.network_gke.id router_name = google_compute_router.router_gke.name peer_gcp_gateway = module.gcb_vpn.self_link tunnels = { remote-0 = { bgp_peer = { address = "169.254.1.1" asn = var.gcb_asn } bgp_peer_options = null bgp_session_range = "169.254.1.2/30" ike_version = 2 vpn_gateway_interface = 0 peer_external_gateway_interface = null shared_secret = "" } remote-1 = { bgp_peer = { address = "169.254.2.1" asn = var.gcb_asn } bgp_peer_options = null bgp_session_range = "169.254.2.2/30" ike_version = 2 vpn_gateway_interface = 1 peer_external_gateway_interface = null shared_secret = "" } } } module "gcb_vpn" { source = "terraform-google-modules/vpn/google//modules/vpn_ha" version = "2.4.0" name = "gcb-to-gke-vpn" project_id = var.project_id region = var.region network = google_compute_network.network_gcb.id router_name = google_compute_router.router_gcb.name peer_gcp_gateway = module.gke_vpn.self_link tunnels = { remote-0 = { bgp_peer = { address = "169.254.1.2" asn = var.gke_asn } bgp_peer_options = null bgp_session_range = "169.254.1.1/30" ike_version = 2 vpn_gateway_interface = 0 peer_external_gateway_interface = null shared_secret = module.gke_vpn.random_secret } remote-1 = { bgp_peer = { address = "169.254.2.2" asn = var.gke_asn } bgp_peer_options = null bgp_session_range = "169.254.2.1/30" ike_version = 2 vpn_gateway_interface = 1 peer_external_gateway_interface = null shared_secret = module.gke_vpn.random_secret } } } resource "google_compute_router_nat" "nat_gke" { name = "gke-router-nat" router = google_compute_router.router_gke.name region = google_compute_router.router_gke.region nat_ip_allocate_option = "AUTO_ONLY" source_subnetwork_ip_ranges_to_nat = "ALL_SUBNETWORKS_ALL_IP_RANGES" log_config { enable = true filter = "ERRORS_ONLY" } } resource "google_compute_router_nat" "nat_gcb" { name = "gcb-router-nat" router = google_compute_router.router_gcb.name region = google_compute_router.router_gcb.region nat_ip_allocate_option = "AUTO_ONLY" source_subnetwork_ip_ranges_to_nat = "ALL_SUBNETWORKS_ALL_IP_RANGES" log_config { enable = true filter = "ERRORS_ONLY" } }