setup/infra/cluster/main.tf (102 lines of code) (raw):

/** * Copyright 2019 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. */ module "broker" { source = "github.com/terraform-google-modules/terraform-google-kubernetes-engine//modules/beta-public-cluster?ref=v9.0.0" project_id = var.project_id release_channel = "REGULAR" name = "${var.name}-${var.region}" regional = true region = var.region network = data.google_compute_network.broker.name subnetwork = google_compute_subnetwork.broker.name ip_range_pods = google_compute_subnetwork.broker.secondary_ip_range[0].range_name ip_range_services = google_compute_subnetwork.broker.secondary_ip_range[1].range_name node_metadata = "GKE_METADATA_SERVER" create_service_account = false service_account = length(var.service_account) == 0 ? "broker@${var.project_id}.iam.gserviceaccount.com" : var.service_account remove_default_node_pool = true network_policy = var.network_policy # Zones must be compatible with the chosen accelerator_type in the gpu-* node pools. zones = length(var.zones) == 0 ? lookup(local.cluster_node_zones, var.region) : var.zones node_pools = [ { # Default node pool name = "default-node-pool" machine_type = var.default_pool_machine_type initial_node_count = var.default_pool_initial_node_count min_count = var.default_pool_min_node_count max_count = var.default_pool_max_node_count local_ssd_count = 0 disk_size_gb = var.default_pool_disk_size_gb disk_type = var.default_pool_disk_type image_type = "COS" auto_repair = true auto_upgrade = true service_account = length(var.service_account) == 0 ? "broker@${var.project_id}.iam.gserviceaccount.com" : var.service_account preemptible = var.default_pool_preemptive_nodes }, { # TURN node pool for apps with NAT traversal name = "turn" machine_type = var.turn_pool_machine_type initial_node_count = var.turn_pool_initial_node_count min_count = var.turn_pool_min_node_count max_count = var.turn_pool_max_node_count local_ssd_count = 0 disk_size_gb = var.turn_pool_disk_size_gb disk_type = var.turn_pool_disk_type image_type = "COS" auto_repair = true auto_upgrade = true service_account = length(var.service_account) == 0 ? "broker@${var.project_id}.iam.gserviceaccount.com" : var.service_account preemptible = var.turn_pool_preemptive_nodes }, ] node_pools_oauth_scopes = { all = [] default-node-pool = [ "https://www.googleapis.com/auth/cloud-platform", ] turn = [ "https://www.googleapis.com/auth/cloud-platform", ] } node_pools_labels = { all = {} default-node-pool = {} turn = { "app.broker/gke-turn" = "true" } } node_pools_metadata = { all = {} default-node-pool = {} turn = {} } node_pools_taints = { all = [] default-node-pool = [] turn = [ { key = "app.broker/gke-turn" value = "true" effect = "NO_SCHEDULE" }, ] } node_pools_tags = { all = [] default-node-pool = [] turn = ["gke-turn"] } }