# TODO: Rename networks
resource "google_compute_network" "default" {
  project = google_project.project.project_id
  name    = "example-network"
  depends_on = [
    google_project_service.service["compute"]
  ]

  auto_create_subnetworks = false
}

resource "google_compute_subnetwork" "default" {
  project = google_project.project.project_id
  name    = "example-subnetwork"

  ip_cidr_range = "10.10.10.0/26" # Node range
  region        = var.region

  stack_type = "IPV4_ONLY"

  network = google_compute_network.default.id

  secondary_ip_range {
    range_name    = "services-range"
    ip_cidr_range = "100.64.0.0/19"
  }

  secondary_ip_range {
    # Each node will grab a /24 from this range
    range_name    = "pod-ranges"
    ip_cidr_range = "240.10.0.0/17"
  }
}

resource "google_compute_subnetwork" "network-for-l7lb" {
  project = google_project.project.project_id
  name    = "l7lb-subnetwork"
  region  = var.region

  ip_cidr_range = "100.64.96.0/24"
  purpose       = "REGIONAL_MANAGED_PROXY"
  role          = "ACTIVE"
  network       = google_compute_network.default.id
}

output "subnet_ip_address_list_url" {
  description = "URL to a list of IP addresses on the subnet to see which addresses are being used."
  value       = "https://console.cloud.google.com/networking/addresses/list?project=${google_project.project.project_id}"
}

resource "google_service_account" "k8s_service_account" {
  project      = google_project.project.project_id
  account_id   = "k8s-service-account"
  display_name = "K8s Service Account"
}

# =====================================================================================================================
# count and for_each are not possible in terraform for providers so this is a gross copy+paste.
# ref: https://support.hashicorp.com/hc/en-us/articles/6304194229267-Using-count-or-for-each-in-Provider-Configuration
# =====================================================================================================================

module "cluster1" {
  source                                 = "./modules/cluster"
  project                                = google_project.project.project_id
  region                                 = var.region
  ssh_key                                = var.ssh_key
  zones                                  = toset([var.zone])
  name                                   = "cluster1"
  network_id                             = google_compute_network.default.id
  subnetwork_id                          = google_compute_subnetwork.default.id
  service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
  pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
  service_account_email                  = google_service_account.k8s_service_account.email
  dns_managed_zone                       = google_dns_managed_zone.zone
  ingress_type                           = var.ingress_type
  public_ingress                         = var.public_ingress
  external_dns_k8s_namespace             = local.external_dns_k8s_namespace
  external_dns_k8s_service_account       = local.external_dns_k8s_service_account
  external_dns_gcp_service_account_email = google_service_account.external_dns.email
  cluster_exists                         = var.cluster_exists
  enable_snat                            = var.enable_snat
  service_container                      = google_project_service.service["container"]
}

output "gke_connect_command_cluster1" {
  description = "Command to run to connect to the kubernetes cluster."
  value       = module.cluster1.gke_connect_command
}

output "kubectl_cluster1" {
  description = "Kubectl command to access the kubernetes cluster."
  value       = module.cluster1.kubectl_command
}

output "cluster_ip_address_utilization_url_cluster1" {
  description = "URL to a page showing IP address utilization within the cluster."
  value       = module.cluster1.cluster_ip_address_utilization_url
}

# module "cluster2" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster2"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster3" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster3"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster4" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster4"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster5" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster5"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster6" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster6"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster7" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster7"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster8" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster8"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster9" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster9"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster10" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster10"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster11" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster11"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster12" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster12"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster13" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster13"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster14" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster14"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster15" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster15"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster16" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster16"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster17" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster17"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster18" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster18"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster19" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster19"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster20" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster20"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster21" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster21"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster22" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster22"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster23" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster23"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster24" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster24"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster25" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster25"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster26" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster26"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster27" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster27"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster28" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster28"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster29" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster29"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster30" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster30"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster31" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster31"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster32" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster32"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster33" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster33"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster34" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster34"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster35" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster35"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster36" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster36"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster37" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster37"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster38" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster38"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster39" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster39"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster40" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster40"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster41" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster41"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster42" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster42"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster43" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster43"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster44" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster44"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster45" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster45"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster46" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster46"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster47" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster47"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster48" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster48"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster49" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster49"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster50" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster50"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster51" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster51"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster52" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster52"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster53" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster53"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster54" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster54"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster55" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster55"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster56" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster56"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster57" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster57"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster58" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster58"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster59" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster59"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster60" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster60"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster61" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster61"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster62" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster62"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }

# module "cluster63" {
#   source                                 = "./modules/cluster"
#   project                                = google_project.project.project_id
#   region                                 = var.region
#   ssh_key                                = var.ssh_key
#   zones                                  = toset([var.zone])
#   name                                   = "cluster63"
#   network_id                             = google_compute_network.default.id
#   subnetwork_id                          = google_compute_subnetwork.default.id
#   service_range_name                     = google_compute_subnetwork.default.secondary_ip_range[0].range_name
#   pod_range_name                         = google_compute_subnetwork.default.secondary_ip_range[1].range_name
#   service_account_email                  = google_service_account.k8s_service_account.email
#   dns_managed_zone                       = google_dns_managed_zone.zone
#   ingress_type                           = var.ingress_type
#   public_ingress                         = var.public_ingress
#   external_dns_k8s_namespace             = local.external_dns_k8s_namespace
#   external_dns_k8s_service_account       = local.external_dns_k8s_service_account
#   external_dns_gcp_service_account_email = google_service_account.external_dns.email
#   cluster_exists                         = var.cluster_exists
#   enable_snat                            = var.enable_snat
#   service_container                      = google_project_service.service["container"]
# }