Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Requirements

No requirements.

Providers

Name Version
google n/a
google-beta n/a

Resources

Name Type
google-beta_google_container_node_pool.pools resource
google_compute_firewall.master_webhook resource
google_container_cluster.this resource
google_project_iam_member.cluster resource
google_service_account.cluster_default resource
google_service_account_iam_member.terraform_gke_impersonation resource
google_tags_location_tag_binding.cluster resource

Inputs

Name Description Type Default Required
advanced_datapath_observability_config Config for Advanced Datapath Monitoring.
object({
enable = optional(bool, false)
enable_metrics = optional(bool, true)
enable_relay = optional(bool, true)
})
{} no
cluster_autoscaling Enabling of node auto-provisioning bool false no
cluster_autoscaling_cpu_limits Cluster autoscaling cpu limits
object({
resource_type = optional(string, "cpu")
minimum = optional(number, 4)
maximum = optional(number, 10)
})
{} no
cluster_autoscaling_gpu_limits GPU resource limits for cluster autoscaling NAP. Each entry specifies a GPU resource type and its min/max limits.
list(object({
resource_type = string
minimum = number
maximum = number
}))
[] no
cluster_autoscaling_memory_limits Cluster autoscaling memory limits
object({
resource_type = optional(string, "memory"),
minimum = optional(number, 8)
maximum = optional(number, 80)
})
null no
cluster_autoscaling_profile Cluster autoscaler profile (BALANCED or OPTIMIZE_UTILIZATION). Governs the standard per-node-pool cluster autoscaler, so it is settable independently of node auto-provisioning (var.cluster_autoscaling). string null no
cluster_autoscaling_provisioning_defaults Cluster autoscaling provisioning defaults
object({
disk_size = optional(number, null)
disk_type = optional(string, null)
shielded_instance_config = optional(object({
enable_secure_boot = optional(bool, null)
enable_integrity_monitoring = optional(bool, null)
}), null)
management = optional(object({
auto_upgrade = optional(bool, null)
auto_repair = optional(bool, null)
}), null)
})
null no
cluster_secondary_range_name Name of an existing subnet secondary range to use for Pods. When null, GKE auto-allocates a pod range. Required on a Shared VPC, where secondary ranges are pre-created on the host subnet and referenced by name (GKE cannot create ranges on a subnet it does not own). string null no
database_encryption_key Cloud KMS key resource ID for application-layer Secrets encryption (e.g. projects/P/locations/L/keyRings/R/cryptoKeys/K). When null (default), Secrets use Google-managed etcd encryption only. The GKE service agent must hold roles/cloudkms.cryptoKeyEncrypterDecrypter on the key, and the key must outlive the cluster. string null no
default_compute_class_enabled Specifies whether default compute class behavior is enabled. If enabled, cluster autoscaler will use Compute Class with name default for all the workloads, if not overridden. bool false no
deletion_protection Toggle to prevent accidental deletion of resources. bool true no
disable_horizontal_pod_autoscaling Whether to disable the HPA addon on this cluster. When true, the metrics-server is not deployed and HPA resources will not function. bool null no
enable_dns_cache Enable the NodeLocal DNSCache addon. Reduces external DNS lookup latency and load on kube-dns by caching responses on each node. bool false no
enable_fqdn_network_policy Enable FQDN-based network policies on Dataplane V2 clusters. When true, the FQDNNetworkPolicy CRD (networking.gke.io/v1alpha1) becomes available for restricting pod egress to specific domains. bool false no
enable_private_nodes Enable private nodes by default bool false no
extra_roles Extra roles to add to the cluster's default service account map(string) {} no
labels Labels to apply to the gke resources. map(string) {} no
name n/a string n/a yes
network The network to deploy the cluster in. string n/a yes
pools n/a
map(object({
min_node_count = optional(number, 1)
max_node_count = optional(number, 1)
machine_type = optional(string, "c3-standard-4")
disk_type = optional(string, "pd-balanced")
disk_size = optional(number, 100)
ephemeral_storage_local_ssd_count = optional(number, 0)
node_locations = optional(list(string), null)
spot = optional(bool, false)
gvisor = optional(bool, false)
enable_nested_virtualization = optional(bool, null)
enable_secure_boot = optional(bool, false)
enable_integrity_monitoring = optional(bool, true)
labels = optional(map(string), {})
tags = optional(list(string), [])
taints = optional(list(object({
key = string
value = string
effect = string
})), [])
network_config = optional(object({
enable_private_nodes = optional(bool, false)
create_pod_range = optional(bool, true)
pod_ipv4_cidr_block = optional(string, null)
}), null)
guest_accelerator = optional(list(object({
type = string
count = number
gpu_driver_installation_config = optional(list(object({
gpu_driver_version = string
})), [])
})), [])
}))
n/a yes
product Product label to apply to the service. string "unknown" no
project n/a string n/a yes
region Always create a regional cluster since GKE doesn't charge differently for regional/zonal clusters. Rather, we configure the node locations using var.zones any n/a yes
release_channel GKE release channel string "REGULAR" no
resource_manager_tags Resource Manager tags to bind to the GKE cluster, as tagKeys/ => tagValues/. map(string) {} no
resource_usage_export_config Config for exporting resource usage.
object({
bigquery_dataset_id = optional(string, "")
enable_network_egress_metering = optional(bool, false)
enable_resource_consumption_metering = optional(bool, true)
})
{} no
service_account_impersonation_email Service account email impersonation for the service account created by this module. string null no
service_account_suffix Suffix appended to var.name to form the node service account ID. When null (the default), uses the region as the suffix (e.g. "-us-central1") so clusters sharing a project (e.g. the same name across regions) don't collide on this project-global resource. Set explicitly to pin a specific service account ID. string null no
services_secondary_range_name Name of an existing subnet secondary range to use for Services. When null, GKE auto-allocates a service range. Required on a Shared VPC, where secondary ranges are pre-created on the host subnet and referenced by name. string null no
subnetwork The subnetwork to deploy the cluster in. string n/a yes
team Team label to apply to resources (replaces deprecated 'squad'). string n/a yes
zones If specified, will spread nodes across these zones list(string) null no

Outputs

Name Description
cluster_ca_certificate n/a
cluster_endpoint n/a
cluster_id n/a
cluster_name n/a
cluster_pod_ipv4_cidr_block The cluster's pod secondary IPv4 CIDR range (ip_allocation_policy.cluster_ipv4_cidr_block).
service_account_email n/a