databases/gke-stateful-postgres/terraform/gke-standard/main.tf (174 lines of code) (raw):

#Copyright 2022 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. # google_client_config and kubernetes provider must be explicitly specified like the following. data "google_client_config" "default" {} # [START artifactregistry_docker_repo] resource "google_artifact_registry_repository" "main" { location = "us" repository_id = "main" format = "DOCKER" project = var.project_id } resource "google_artifact_registry_repository_iam_binding" "binding" { provider = google-beta project = google_artifact_registry_repository.main.project location = google_artifact_registry_repository.main.location repository = google_artifact_registry_repository.main.name role = "roles/artifactregistry.reader" members = [ "serviceAccount:${module.gke-db1.service_account}", ] } # [END artifactregistry_docker_repo] module "network" { source = "../modules/network" project_id = var.project_id } # [START gke_standard_private_regional_primary_cluster] module "gke-db1" { source = "../modules/beta-private-cluster" project_id = var.project_id name = "cluster-db1" regional = true region = "us-central1" network = module.network.network_name subnetwork = module.network.primary_subnet_name ip_range_pods = "ip-range-pods-db1" ip_range_services = "ip-range-svc-db1" create_service_account = true enable_private_endpoint = false enable_private_nodes = true master_ipv4_cidr_block = "172.16.0.0/28" network_policy = true cluster_autoscaling = { "autoscaling_profile": "OPTIMIZE_UTILIZATION", "enabled" : true, "gpu_resources" : [], "min_cpu_cores" : 36, "min_memory_gb" : 144, "max_cpu_cores" : 48, "max_memory_gb" : 192, } monitoring_enable_managed_prometheus = true gke_backup_agent_config = true node_pools = [ { name = "pool-sys" autoscaling = true min_count = 1 max_count = 3 max_surge = 1 max_unavailable = 0 machine_type = "e2-standard-4" node_locations = "us-central1-a,us-central1-b,us-central1-c" auto_repair = true }, { name = "pool-db" autoscaling = true max_surge = 1 max_unavailable = 0 machine_type = "e2-standard-8" node_locations = "us-central1-a,us-central1-b,us-central1-c" auto_repair = true }, ] node_pools_labels = { all = {} pool-db = { "app.stateful/component" = "postgresql" } pool-sys = { "app.stateful/component" = "postgresql-pgpool" } } node_pools_taints = { all = [] pool-db = [ { key = "app.stateful/component" value = "postgresql" effect = "NO_SCHEDULE" }, ], pool-sys = [ { key = "app.stateful/component" value = "postgresql-pgpool" effect = "NO_SCHEDULE" }, ], } gce_pd_csi_driver = true } # [END gke_standard_private_regional_primary_cluster] # [START gke_standard_private_regional_backup_cluster] module "gke-db2" { source = "../modules/beta-private-cluster" project_id = var.project_id name = "cluster-db2" regional = true region = "us-west1" network = module.network.network_name subnetwork = module.network.secondary_subnet_name ip_range_pods = "ip-range-pods-db2" ip_range_services = "ip-range-svc-db2" create_service_account = false service_account = module.gke-db1.service_account enable_private_endpoint = false enable_private_nodes = true master_ipv4_cidr_block = "172.16.0.16/28" network_policy = true cluster_autoscaling = { "autoscaling_profile": "OPTIMIZE_UTILIZATION", "enabled" : true, "gpu_resources" : [], "min_cpu_cores" : 10, "min_memory_gb" : 144, "max_cpu_cores" : 48, "max_memory_gb" : 192, } monitoring_enable_managed_prometheus = true gke_backup_agent_config = true node_pools = [ { name = "pool-sys" autoscaling = true min_count = 1 max_count = 3 max_surge = 1 max_unavailable = 0 machine_type = "e2-standard-4" node_locations = "us-west1-a,us-west1-b,us-west1-c" auto_repair = true }, { name = "pool-db" autoscaling = true max_surge = 1 max_unavailable = 0 machine_type = "e2-standard-8" node_locations = "us-west1-a,us-west1-b,us-west1-c" auto_repair = true }, ] node_pools_labels = { all = {} pool-db = { "app.stateful/component" = "postgresql" } pool-sys = { "app.stateful/component" = "postgresql-pgpool" } } node_pools_taints = { all = [] pool-db = [ { key = "app.stateful/component" value = "postgresql" effect = "NO_SCHEDULE" }, ], pool-sys = [ { key = "app.stateful/component" value = "postgresql-pgpool" effect = "NO_SCHEDULE" }, ], } gce_pd_csi_driver = true } # [END gke_standard_private_regional_backup_cluster]