chaostoolkit-examples/l7ilb-urlmap-fault-injection-gke/app/terraform/lb.tf (104 lines of code) (raw):

# # 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. # resource "google_compute_address" "ip_address" { name = "chaos-controlplane-ipv4address-gke" address = var.compute_ip_address address_type = "INTERNAL" subnetwork = google_compute_subnetwork.ilb_subnet.id } # forwarding rule resource "google_compute_forwarding_rule" "google_compute_forwarding_rule" { name = "l7-ilb-forwarding-rule-gke" region = var.region ip_address = google_compute_address.ip_address.address depends_on = [google_compute_subnetwork.proxy_subnet] ip_protocol = "TCP" load_balancing_scheme = "INTERNAL_MANAGED" port_range = "8080" target = google_compute_region_target_http_proxy.default.id network = google_compute_network.ilb_vpc.id subnetwork = google_compute_subnetwork.ilb_subnet.id network_tier = "PREMIUM" } # HTTP target proxy resource "google_compute_region_target_http_proxy" "default" { name = "l7-ilb-target-http-proxy-gke" region = var.region url_map = google_compute_region_url_map.default.id } # URL map resource "google_compute_region_url_map" "default" { name = var.url_map_name region = var.region default_service = google_compute_region_backend_service.default.id host_rule { hosts = ["*"] path_matcher = var.url_map_target_name } path_matcher { name = var.url_map_target_name default_service = google_compute_region_backend_service.default.id path_rule { paths = ["/*"] service = google_compute_region_backend_service.default.id } } } # backend service resource "google_compute_region_backend_service" "default" { name = "l7-ilb-backend-subnet-gke" region = var.region protocol = "HTTP" load_balancing_scheme = "INTERNAL_MANAGED" timeout_sec = 10 health_checks = [google_compute_region_health_check.default.id] port_name = "http" backend { group = google_compute_region_instance_group_manager.mig.instance_group balancing_mode = "UTILIZATION" capacity_scaler = 1.0 } } # instance template resource "google_compute_instance_template" "instance_template" { name = "l7-ilb-mig-template-gke" machine_type = "e2-small" tags = ["http-server"] network_interface { network = google_compute_network.ilb_vpc.id subnetwork = google_compute_subnetwork.ilb_subnet.id } disk { source_image = "debian-cloud/debian-12" auto_delete = true boot = true } # install nginx and serve a simple web page metadata = { startup-script = file("../scripts/server_startup.sh") } lifecycle { create_before_destroy = true } shielded_instance_config { enable_integrity_monitoring = true enable_secure_boot = true enable_vtpm = true } } # health check resource "google_compute_region_health_check" "default" { name = "l7-ilb-hc-gke" region = var.region http_health_check { port_specification = "USE_SERVING_PORT" } depends_on = [ google_project_service.enable_apis ] } # MIG resource "google_compute_region_instance_group_manager" "mig" { name = "l7-ilb-mig-gke" region = var.region version { instance_template = google_compute_instance_template.instance_template.id name = "primary" } base_instance_name = "l7-ilb-mig" target_size = 1 named_port { name = "http" port = 80 } }