databases/gke-stateful-postgres/terraform/modules/beta-private-cluster/cluster.tf (703 lines of code) (raw):
/**
* Copyright 2022 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// This file was automatically generated from a template in ./autogen/main
/******************************************
Create Container Cluster
*****************************************/
resource "google_container_cluster" "primary" {
provider = google-beta
name = var.name
description = var.description
project = var.project_id
resource_labels = var.cluster_resource_labels
location = local.location
node_locations = local.node_locations
cluster_ipv4_cidr = var.cluster_ipv4_cidr
network = "projects/${local.network_project_id}/global/networks/${var.network}"
dynamic "network_policy" {
for_each = local.cluster_network_policy
content {
enabled = network_policy.value.enabled
provider = network_policy.value.provider
}
}
dynamic "release_channel" {
for_each = local.release_channel
content {
channel = release_channel.value.channel
}
}
dynamic "cost_management_config" {
for_each = var.enable_cost_allocation ? [1] : []
content {
enabled = var.enable_cost_allocation
}
}
dynamic "confidential_nodes" {
for_each = local.confidential_node_config
content {
enabled = confidential_nodes.value.enabled
}
}
subnetwork = "projects/${local.network_project_id}/regions/${local.region}/subnetworks/${var.subnetwork}"
default_snat_status {
disabled = var.disable_default_snat
}
min_master_version = var.release_channel == null || var.release_channel == "UNSPECIFIED" ? local.master_version : null
dynamic "cluster_telemetry" {
for_each = local.cluster_telemetry_type_is_set ? [1] : []
content {
type = var.cluster_telemetry_type
}
}
# only one of logging/monitoring_service or logging/monitoring_config can be specified
logging_service = local.cluster_telemetry_type_is_set || local.logmon_config_is_set ? null : var.logging_service
dynamic "logging_config" {
for_each = length(var.logging_enabled_components) > 0 ? [1] : []
content {
enable_components = var.logging_enabled_components
}
}
monitoring_service = local.cluster_telemetry_type_is_set || local.logmon_config_is_set ? null : var.monitoring_service
dynamic "monitoring_config" {
for_each = length(var.monitoring_enabled_components) > 0 || var.monitoring_enable_managed_prometheus ? [1] : []
content {
enable_components = length(var.monitoring_enabled_components) > 0 ? var.monitoring_enabled_components : null
dynamic "managed_prometheus" {
for_each = var.monitoring_enable_managed_prometheus ? [1] : []
content {
enabled = var.monitoring_enable_managed_prometheus
}
}
}
}
cluster_autoscaling {
enabled = var.cluster_autoscaling.enabled
dynamic "auto_provisioning_defaults" {
for_each = var.cluster_autoscaling.enabled ? [1] : []
content {
service_account = local.service_account
oauth_scopes = local.node_pools_oauth_scopes["all"]
min_cpu_platform = lookup(var.node_pools[0], "min_cpu_platform", "")
}
}
autoscaling_profile = var.cluster_autoscaling.autoscaling_profile != null ? var.cluster_autoscaling.autoscaling_profile : "BALANCED"
dynamic "resource_limits" {
for_each = local.autoscaling_resource_limits
content {
resource_type = lookup(resource_limits.value, "resource_type")
minimum = lookup(resource_limits.value, "minimum")
maximum = lookup(resource_limits.value, "maximum")
}
}
}
vertical_pod_autoscaling {
enabled = var.enable_vertical_pod_autoscaling
}
default_max_pods_per_node = var.default_max_pods_per_node
enable_shielded_nodes = var.enable_shielded_nodes
dynamic "binary_authorization" {
for_each = var.enable_binary_authorization ? [var.enable_binary_authorization] : []
content {
evaluation_mode = "PROJECT_SINGLETON_POLICY_ENFORCE"
}
}
enable_intranode_visibility = var.enable_intranode_visibility
enable_kubernetes_alpha = var.enable_kubernetes_alpha
enable_tpu = var.enable_tpu
dynamic "pod_security_policy_config" {
for_each = var.enable_pod_security_policy ? [var.enable_pod_security_policy] : []
content {
enabled = pod_security_policy_config.value
}
}
dynamic "identity_service_config" {
for_each = var.enable_identity_service ? [var.enable_identity_service] : []
content {
enabled = identity_service_config.value
}
}
enable_l4_ilb_subsetting = var.enable_l4_ilb_subsetting
dynamic "master_authorized_networks_config" {
for_each = local.master_authorized_networks_config
content {
dynamic "cidr_blocks" {
for_each = master_authorized_networks_config.value.cidr_blocks
content {
cidr_block = lookup(cidr_blocks.value, "cidr_block", "")
display_name = lookup(cidr_blocks.value, "display_name", "")
}
}
}
}
master_auth {
client_certificate_config {
issue_client_certificate = var.issue_client_certificate
}
}
dynamic "service_external_ips_config" {
for_each = var.service_external_ips ? [1] : []
content {
enabled = var.service_external_ips
}
}
addons_config {
http_load_balancing {
disabled = !var.http_load_balancing
}
horizontal_pod_autoscaling {
disabled = !var.horizontal_pod_autoscaling
}
network_policy_config {
disabled = !var.network_policy
}
dns_cache_config {
enabled = var.dns_cache
}
gcp_filestore_csi_driver_config {
enabled = var.filestore_csi_driver
}
istio_config {
disabled = !var.istio
auth = var.istio_auth
}
dynamic "cloudrun_config" {
for_each = local.cluster_cloudrun_config
content {
disabled = cloudrun_config.value.disabled
}
}
dynamic "gce_persistent_disk_csi_driver_config" {
for_each = local.cluster_gce_pd_csi_config
content {
enabled = gce_persistent_disk_csi_driver_config.value.enabled
}
}
kalm_config {
enabled = var.kalm_config
}
config_connector_config {
enabled = var.config_connector
}
dynamic "gke_backup_agent_config" {
for_each = local.gke_backup_agent_config
content {
enabled = gke_backup_agent_config.value.enabled
}
}
}
datapath_provider = var.datapath_provider
networking_mode = "VPC_NATIVE"
ip_allocation_policy {
cluster_secondary_range_name = var.ip_range_pods
services_secondary_range_name = var.ip_range_services
}
maintenance_policy {
dynamic "recurring_window" {
for_each = local.cluster_maintenance_window_is_recurring
content {
start_time = var.maintenance_start_time
end_time = var.maintenance_end_time
recurrence = var.maintenance_recurrence
}
}
dynamic "daily_maintenance_window" {
for_each = local.cluster_maintenance_window_is_daily
content {
start_time = var.maintenance_start_time
}
}
dynamic "maintenance_exclusion" {
for_each = var.maintenance_exclusions
content {
exclusion_name = maintenance_exclusion.value.name
start_time = maintenance_exclusion.value.start_time
end_time = maintenance_exclusion.value.end_time
dynamic "exclusion_options" {
for_each = maintenance_exclusion.value.exclusion_scope == null ? [] : [maintenance_exclusion.value.exclusion_scope]
content {
scope = exclusion_options.value
}
}
}
}
}
lifecycle {
ignore_changes = [node_pool, initial_node_count, resource_labels["asmv"], resource_labels["mesh_id"]]
}
dynamic "dns_config" {
for_each = var.cluster_dns_provider == "CLOUD_DNS" ? [1] : []
content {
cluster_dns = var.cluster_dns_provider
cluster_dns_scope = var.cluster_dns_scope
cluster_dns_domain = var.cluster_dns_domain
}
}
timeouts {
create = lookup(var.timeouts, "create", "45m")
update = lookup(var.timeouts, "update", "45m")
delete = lookup(var.timeouts, "delete", "45m")
}
node_pool {
name = "default-pool"
initial_node_count = var.initial_node_count
node_config {
image_type = lookup(var.node_pools[0], "image_type", "COS_CONTAINERD")
machine_type = lookup(var.node_pools[0], "machine_type", "e2-medium")
min_cpu_platform = lookup(var.node_pools[0], "min_cpu_platform", "")
dynamic "gcfs_config" {
for_each = lookup(var.node_pools[0], "enable_gcfs", false) ? [true] : []
content {
enabled = gcfs_config.value
}
}
dynamic "gvnic" {
for_each = lookup(var.node_pools[0], "enable_gvnic", false) ? [true] : []
content {
enabled = gvnic.value
}
}
service_account = lookup(var.node_pools[0], "service_account", local.service_account)
tags = concat(
lookup(local.node_pools_tags, "default_values", [true, true])[0] ? [local.cluster_network_tag] : [],
lookup(local.node_pools_tags, "default_values", [true, true])[1] ? ["${local.cluster_network_tag}-default-pool"] : [],
lookup(local.node_pools_tags, "all", []),
lookup(local.node_pools_tags, var.node_pools[0].name, []),
)
dynamic "workload_metadata_config" {
for_each = local.cluster_node_metadata_config
content {
mode = workload_metadata_config.value.mode
}
}
metadata = local.node_pools_metadata["all"]
dynamic "sandbox_config" {
for_each = tobool((lookup(var.node_pools[0], "sandbox_enabled", var.sandbox_enabled))) ? ["gvisor"] : []
content {
sandbox_type = sandbox_config.value
}
}
boot_disk_kms_key = lookup(var.node_pools[0], "boot_disk_kms_key", "")
shielded_instance_config {
enable_secure_boot = lookup(var.node_pools[0], "enable_secure_boot", false)
enable_integrity_monitoring = lookup(var.node_pools[0], "enable_integrity_monitoring", true)
}
}
}
dynamic "resource_usage_export_config" {
for_each = var.resource_usage_export_dataset_id != "" ? [{
enable_network_egress_metering = var.enable_network_egress_export
enable_resource_consumption_metering = var.enable_resource_consumption_export
dataset_id = var.resource_usage_export_dataset_id
}] : []
content {
enable_network_egress_metering = resource_usage_export_config.value.enable_network_egress_metering
enable_resource_consumption_metering = resource_usage_export_config.value.enable_resource_consumption_metering
bigquery_destination {
dataset_id = resource_usage_export_config.value.dataset_id
}
}
}
dynamic "private_cluster_config" {
for_each = var.enable_private_nodes ? [{
enable_private_nodes = var.enable_private_nodes,
enable_private_endpoint = var.enable_private_endpoint
master_ipv4_cidr_block = var.master_ipv4_cidr_block
}] : []
content {
enable_private_endpoint = private_cluster_config.value.enable_private_endpoint
enable_private_nodes = private_cluster_config.value.enable_private_nodes
master_ipv4_cidr_block = private_cluster_config.value.master_ipv4_cidr_block
dynamic "master_global_access_config" {
for_each = var.master_global_access_enabled ? [var.master_global_access_enabled] : []
content {
enabled = master_global_access_config.value
}
}
}
}
remove_default_node_pool = var.remove_default_node_pool
dynamic "database_encryption" {
for_each = var.database_encryption
content {
key_name = database_encryption.value.key_name
state = database_encryption.value.state
}
}
dynamic "workload_identity_config" {
for_each = local.cluster_workload_identity_config
content {
workload_pool = workload_identity_config.value.workload_pool
}
}
dynamic "authenticator_groups_config" {
for_each = local.cluster_authenticator_security_group
content {
security_group = authenticator_groups_config.value.security_group
}
}
notification_config {
pubsub {
enabled = var.notification_config_topic != "" ? true : false
topic = var.notification_config_topic
}
}
}
/******************************************
Create Container Cluster node pools
*****************************************/
resource "google_container_node_pool" "pools" {
provider = google-beta
for_each = local.node_pools
name = each.key
project = var.project_id
location = local.location
// use node_locations if provided, defaults to cluster level node_locations if not specified
node_locations = lookup(each.value, "node_locations", "") != "" ? split(",", each.value["node_locations"]) : null
cluster = google_container_cluster.primary.name
version = lookup(each.value, "auto_upgrade", local.default_auto_upgrade) ? "" : lookup(
each.value,
"version",
google_container_cluster.primary.min_master_version,
)
initial_node_count = lookup(each.value, "autoscaling", true) ? lookup(
each.value,
"initial_node_count",
lookup(each.value, "min_count", 1)
) : null
max_pods_per_node = lookup(each.value, "max_pods_per_node", null)
node_count = lookup(each.value, "autoscaling", true) ? null : lookup(each.value, "node_count", 1)
dynamic "autoscaling" {
for_each = lookup(each.value, "autoscaling", true) ? [each.value] : []
content {
min_node_count = lookup(autoscaling.value, "min_count", 1)
max_node_count = lookup(autoscaling.value, "max_count", 100)
location_policy = lookup(autoscaling.value, "location_policy", null)
total_min_node_count = lookup(autoscaling.value, "total_min_count", null)
total_max_node_count = lookup(autoscaling.value, "total_max_count", null)
}
}
dynamic "placement_policy" {
for_each = length(lookup(each.value, "placement_policy", "")) > 0 ? [each.value] : []
content {
type = lookup(placement_policy.value, "placement_policy", null)
}
}
dynamic "network_config" {
for_each = length(lookup(each.value, "pod_range", "")) > 0 ? [each.value] : []
content {
pod_range = lookup(network_config.value, "pod_range", null)
}
}
management {
auto_repair = lookup(each.value, "auto_repair", true)
auto_upgrade = lookup(each.value, "auto_upgrade", local.default_auto_upgrade)
}
upgrade_settings {
max_surge = lookup(each.value, "max_surge", 1)
max_unavailable = lookup(each.value, "max_unavailable", 0)
}
node_config {
image_type = lookup(each.value, "image_type", "COS_CONTAINERD")
machine_type = lookup(each.value, "machine_type", "e2-medium")
min_cpu_platform = lookup(each.value, "min_cpu_platform", "")
dynamic "gcfs_config" {
for_each = lookup(each.value, "enable_gcfs", false) ? [true] : []
content {
enabled = gcfs_config.value
}
}
dynamic "gvnic" {
for_each = lookup(each.value, "enable_gvnic", false) ? [true] : []
content {
enabled = gvnic.value
}
}
labels = merge(
lookup(lookup(local.node_pools_labels, "default_values", {}), "cluster_name", true) ? { "cluster_name" = var.name } : {},
lookup(lookup(local.node_pools_labels, "default_values", {}), "node_pool", true) ? { "node_pool" = each.value["name"] } : {},
local.node_pools_labels["all"],
local.node_pools_labels[each.value["name"]],
)
metadata = merge(
lookup(lookup(local.node_pools_metadata, "default_values", {}), "cluster_name", true) ? { "cluster_name" = var.name } : {},
lookup(lookup(local.node_pools_metadata, "default_values", {}), "node_pool", true) ? { "node_pool" = each.value["name"] } : {},
local.node_pools_metadata["all"],
local.node_pools_metadata[each.value["name"]],
{
"disable-legacy-endpoints" = var.disable_legacy_metadata_endpoints
},
)
dynamic "taint" {
for_each = concat(
local.node_pools_taints["all"],
local.node_pools_taints[each.value["name"]],
)
content {
effect = taint.value.effect
key = taint.value.key
value = taint.value.value
}
}
tags = concat(
lookup(local.node_pools_tags, "default_values", [true, true])[0] ? [local.cluster_network_tag] : [],
lookup(local.node_pools_tags, "default_values", [true, true])[1] ? ["${local.cluster_network_tag}-${each.value["name"]}"] : [],
local.node_pools_tags["all"],
local.node_pools_tags[each.value["name"]],
)
local_ssd_count = lookup(each.value, "local_ssd_count", 0)
disk_size_gb = lookup(each.value, "disk_size_gb", 100)
disk_type = lookup(each.value, "disk_type", "pd-standard")
dynamic "ephemeral_storage_config" {
for_each = lookup(each.value, "local_ssd_ephemeral_count", 0) > 0 ? [each.value.local_ssd_ephemeral_count] : []
content {
local_ssd_count = ephemeral_storage_config.value
}
}
service_account = lookup(
each.value,
"service_account",
local.service_account,
)
preemptible = lookup(each.value, "preemptible", false)
spot = lookup(each.value, "spot", false)
oauth_scopes = concat(
local.node_pools_oauth_scopes["all"],
local.node_pools_oauth_scopes[each.value["name"]],
)
dynamic "guest_accelerator" {
for_each = lookup(each.value, "accelerator_count", 0) > 0 ? [1] : []
content {
type = lookup(each.value, "accelerator_type", "")
count = lookup(each.value, "accelerator_count", 0)
gpu_partition_size = lookup(each.value, "gpu_partition_size", null)
}
}
dynamic "workload_metadata_config" {
for_each = local.cluster_node_metadata_config
content {
mode = lookup(each.value, "node_metadata", workload_metadata_config.value.mode)
}
}
dynamic "sandbox_config" {
for_each = tobool((lookup(each.value, "sandbox_enabled", var.sandbox_enabled))) ? ["gvisor"] : []
content {
sandbox_type = sandbox_config.value
}
}
dynamic "kubelet_config" {
for_each = length(setintersection(
keys(each.value),
["cpu_manager_policy", "cpu_cfs_quota", "cpu_cfs_quota_period"]
)) != 0 ? [1] : []
content {
cpu_manager_policy = lookup(each.value, "cpu_manager_policy", "static")
cpu_cfs_quota = lookup(each.value, "cpu_cfs_quota", null)
cpu_cfs_quota_period = lookup(each.value, "cpu_cfs_quota_period", null)
}
}
dynamic "linux_node_config" {
for_each = length(merge(
local.node_pools_linux_node_configs_sysctls["all"],
local.node_pools_linux_node_configs_sysctls[each.value["name"]]
)) != 0 ? [1] : []
content {
sysctls = merge(
local.node_pools_linux_node_configs_sysctls["all"],
local.node_pools_linux_node_configs_sysctls[each.value["name"]]
)
}
}
boot_disk_kms_key = lookup(each.value, "boot_disk_kms_key", "")
shielded_instance_config {
enable_secure_boot = lookup(each.value, "enable_secure_boot", false)
enable_integrity_monitoring = lookup(each.value, "enable_integrity_monitoring", true)
}
}
lifecycle {
ignore_changes = [initial_node_count]
}
timeouts {
create = lookup(var.timeouts, "create", "45m")
update = lookup(var.timeouts, "update", "45m")
delete = lookup(var.timeouts, "delete", "45m")
}
}
resource "google_container_node_pool" "windows_pools" {
provider = google-beta
for_each = local.windows_node_pools
name = each.key
project = var.project_id
location = local.location
// use node_locations if provided, defaults to cluster level node_locations if not specified
node_locations = lookup(each.value, "node_locations", "") != "" ? split(",", each.value["node_locations"]) : null
cluster = google_container_cluster.primary.name
version = lookup(each.value, "auto_upgrade", local.default_auto_upgrade) ? "" : lookup(
each.value,
"version",
google_container_cluster.primary.min_master_version,
)
initial_node_count = lookup(each.value, "autoscaling", true) ? lookup(
each.value,
"initial_node_count",
lookup(each.value, "min_count", 1)
) : null
max_pods_per_node = lookup(each.value, "max_pods_per_node", null)
node_count = lookup(each.value, "autoscaling", true) ? null : lookup(each.value, "node_count", 1)
dynamic "autoscaling" {
for_each = lookup(each.value, "autoscaling", true) ? [each.value] : []
content {
min_node_count = lookup(autoscaling.value, "min_count", 1)
max_node_count = lookup(autoscaling.value, "max_count", 100)
location_policy = lookup(autoscaling.value, "location_policy", null)
total_min_node_count = lookup(autoscaling.value, "total_min_count", null)
total_max_node_count = lookup(autoscaling.value, "total_max_count", null)
}
}
dynamic "placement_policy" {
for_each = length(lookup(each.value, "placement_policy", "")) > 0 ? [each.value] : []
content {
type = lookup(placement_policy.value, "placement_policy", null)
}
}
dynamic "network_config" {
for_each = length(lookup(each.value, "pod_range", "")) > 0 ? [each.value] : []
content {
pod_range = lookup(network_config.value, "pod_range", null)
}
}
management {
auto_repair = lookup(each.value, "auto_repair", true)
auto_upgrade = lookup(each.value, "auto_upgrade", local.default_auto_upgrade)
}
upgrade_settings {
max_surge = lookup(each.value, "max_surge", 1)
max_unavailable = lookup(each.value, "max_unavailable", 0)
}
node_config {
image_type = lookup(each.value, "image_type", "COS_CONTAINERD")
machine_type = lookup(each.value, "machine_type", "e2-medium")
min_cpu_platform = lookup(each.value, "min_cpu_platform", "")
dynamic "gcfs_config" {
for_each = lookup(each.value, "enable_gcfs", false) ? [true] : []
content {
enabled = gcfs_config.value
}
}
dynamic "gvnic" {
for_each = lookup(each.value, "enable_gvnic", false) ? [true] : []
content {
enabled = gvnic.value
}
}
labels = merge(
lookup(lookup(local.node_pools_labels, "default_values", {}), "cluster_name", true) ? { "cluster_name" = var.name } : {},
lookup(lookup(local.node_pools_labels, "default_values", {}), "node_pool", true) ? { "node_pool" = each.value["name"] } : {},
local.node_pools_labels["all"],
local.node_pools_labels[each.value["name"]],
)
metadata = merge(
lookup(lookup(local.node_pools_metadata, "default_values", {}), "cluster_name", true) ? { "cluster_name" = var.name } : {},
lookup(lookup(local.node_pools_metadata, "default_values", {}), "node_pool", true) ? { "node_pool" = each.value["name"] } : {},
local.node_pools_metadata["all"],
local.node_pools_metadata[each.value["name"]],
{
"disable-legacy-endpoints" = var.disable_legacy_metadata_endpoints
},
)
dynamic "taint" {
for_each = concat(
local.node_pools_taints["all"],
local.node_pools_taints[each.value["name"]],
)
content {
effect = taint.value.effect
key = taint.value.key
value = taint.value.value
}
}
tags = concat(
lookup(local.node_pools_tags, "default_values", [true, true])[0] ? [local.cluster_network_tag] : [],
lookup(local.node_pools_tags, "default_values", [true, true])[1] ? ["${local.cluster_network_tag}-${each.value["name"]}"] : [],
local.node_pools_tags["all"],
local.node_pools_tags[each.value["name"]],
)
local_ssd_count = lookup(each.value, "local_ssd_count", 0)
disk_size_gb = lookup(each.value, "disk_size_gb", 100)
disk_type = lookup(each.value, "disk_type", "pd-standard")
dynamic "ephemeral_storage_config" {
for_each = lookup(each.value, "local_ssd_ephemeral_count", 0) > 0 ? [each.value.local_ssd_ephemeral_count] : []
content {
local_ssd_count = ephemeral_storage_config.value
}
}
service_account = lookup(
each.value,
"service_account",
local.service_account,
)
preemptible = lookup(each.value, "preemptible", false)
spot = lookup(each.value, "spot", false)
oauth_scopes = concat(
local.node_pools_oauth_scopes["all"],
local.node_pools_oauth_scopes[each.value["name"]],
)
dynamic "guest_accelerator" {
for_each = lookup(each.value, "accelerator_count", 0) > 0 ? [1] : []
content {
type = lookup(each.value, "accelerator_type", "")
count = lookup(each.value, "accelerator_count", 0)
gpu_partition_size = lookup(each.value, "gpu_partition_size", null)
}
}
dynamic "workload_metadata_config" {
for_each = local.cluster_node_metadata_config
content {
mode = lookup(each.value, "node_metadata", workload_metadata_config.value.mode)
}
}
dynamic "sandbox_config" {
for_each = tobool((lookup(each.value, "sandbox_enabled", var.sandbox_enabled))) ? ["gvisor"] : []
content {
sandbox_type = sandbox_config.value
}
}
dynamic "kubelet_config" {
for_each = length(setintersection(
keys(each.value),
["cpu_manager_policy", "cpu_cfs_quota", "cpu_cfs_quota_period"]
)) != 0 ? [1] : []
content {
cpu_manager_policy = lookup(each.value, "cpu_manager_policy", "static")
cpu_cfs_quota = lookup(each.value, "cpu_cfs_quota", null)
cpu_cfs_quota_period = lookup(each.value, "cpu_cfs_quota_period", null)
}
}
boot_disk_kms_key = lookup(each.value, "boot_disk_kms_key", "")
shielded_instance_config {
enable_secure_boot = lookup(each.value, "enable_secure_boot", false)
enable_integrity_monitoring = lookup(each.value, "enable_integrity_monitoring", true)
}
}
lifecycle {
ignore_changes = [initial_node_count]
}
timeouts {
create = lookup(var.timeouts, "create", "45m")
update = lookup(var.timeouts, "update", "45m")
delete = lookup(var.timeouts, "delete", "45m")
}
depends_on = [google_container_node_pool.pools[0]]
}