{"id":25230486,"url":"https://github.com/notablehealth/terraform-google-gke-node-pools","last_synced_at":"2025-07-09T17:06:14.065Z","repository":{"id":201044743,"uuid":"703680646","full_name":"notablehealth/terraform-google-gke-node-pools","owner":"notablehealth","description":"Manage independent GKE node pools","archived":false,"fork":false,"pushed_at":"2024-04-04T00:32:48.000Z","size":34,"stargazers_count":0,"open_issues_count":2,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-05T15:24:18.860Z","etag":null,"topics":["gcp","gke","google","terraform-module"],"latest_commit_sha":null,"homepage":"","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/notablehealth.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-10-11T17:38:58.000Z","updated_at":"2023-10-11T17:50:21.000Z","dependencies_parsed_at":"2023-10-28T17:28:51.547Z","dependency_job_id":null,"html_url":"https://github.com/notablehealth/terraform-google-gke-node-pools","commit_stats":null,"previous_names":["notablehealth/terraform-google-gke-node-pools"],"tags_count":0,"template":false,"template_full_name":"notablehealth/terraform-google-module-template","purl":"pkg:github/notablehealth/terraform-google-gke-node-pools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/notablehealth%2Fterraform-google-gke-node-pools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/notablehealth%2Fterraform-google-gke-node-pools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/notablehealth%2Fterraform-google-gke-node-pools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/notablehealth%2Fterraform-google-gke-node-pools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/notablehealth","download_url":"https://codeload.github.com/notablehealth/terraform-google-gke-node-pools/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/notablehealth%2Fterraform-google-gke-node-pools/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264502127,"owners_count":23618554,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gcp","gke","google","terraform-module"],"created_at":"2025-02-11T11:59:20.562Z","updated_at":"2025-07-09T17:06:13.994Z","avatar_url":"https://github.com/notablehealth.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\u003c!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK --\u003e\n# terraform-google-gke-node-pools\n\n[![Releases](https://img.shields.io/github/v/release/notablehealth/terraform-google-gke-node-pools)](https://github.com/notablehealth/terraform-google-gke-node-pools/releases)\n\n[Terraform Module Registry](https://registry.terraform.io/modules/notablehealth/gke-node-pools/google)\n\nManage independent node pools in a GKE cluster.\n\nWork in Progress - May get redesigned before it's finished\n\n## Features\n\n- Manage any number of node pools\n\n## Usage\n\nBasic usage of this module is as follows:\n\n```hcl\nmodule \"example\" {\n    source = \"notablehealth/\u003cmodule-name\u003e/google\"\n    # Recommend pinning every module to a specific version\n    # version = \"x.x.x\"\n\n    # Required variables\n    cluster_location =\n    cluster_name =\n    node_pools =\n    project_id =\n}\n```\n\n## Requirements\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"requirement_terraform\"\u003e\u003c/a\u003e [terraform](#requirement\\_terraform) | \u003e= 1.5.7 |\n| \u003ca name=\"requirement_google\"\u003e\u003c/a\u003e [google](#requirement\\_google) | ~\u003e 5.0 |\n| \u003ca name=\"requirement_random\"\u003e\u003c/a\u003e [random](#requirement\\_random) | ~\u003e 3.5 |\n\n## Providers\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"provider_google\"\u003e\u003c/a\u003e [google](#provider\\_google) | 5.1.0 |\n| \u003ca name=\"provider_random\"\u003e\u003c/a\u003e [random](#provider\\_random) | 3.5.1 |\n\n## Modules\n\nNo modules.\n\n## Resources\n\n| Name | Type |\n|------|------|\n| [google_container_node_pool.self](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/container_node_pool) | resource |\n| [random_shuffle.available_zones](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/shuffle) | resource |\n| [google_compute_zones.available](https://registry.terraform.io/providers/hashicorp/google/latest/docs/data-sources/compute_zones) | data source |\n| [google_container_cluster.existing](https://registry.terraform.io/providers/hashicorp/google/latest/docs/data-sources/container_cluster) | data source |\n\n## Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|:--------:|\n| \u003ca name=\"input_cluster_location\"\u003e\u003c/a\u003e [cluster\\_location](#input\\_cluster\\_location) | Location of the existing GKE cluster | `string` | n/a | yes |\n| \u003ca name=\"input_cluster_name\"\u003e\u003c/a\u003e [cluster\\_name](#input\\_cluster\\_name) | Name of the existing GKE cluster to add node pools too | `string` | n/a | yes |\n| \u003ca name=\"input_default_auto_repair\"\u003e\u003c/a\u003e [default\\_auto\\_repair](#input\\_default\\_auto\\_repair) | Default value for auto\\_repair in node pools | `bool` | `true` | no |\n| \u003ca name=\"input_default_auto_upgrade\"\u003e\u003c/a\u003e [default\\_auto\\_upgrade](#input\\_default\\_auto\\_upgrade) | Default value for auto\\_upgrade in node pools | `bool` | `true` | no |\n| \u003ca name=\"input_disable_legacy_metadata_endpoints\"\u003e\u003c/a\u003e [disable\\_legacy\\_metadata\\_endpoints](#input\\_disable\\_legacy\\_metadata\\_endpoints) | Disable the /0.1/ and /v1beta1/ metadata server endpoints on the node. Changing this value will cause all node pools to be recreated. | `bool` | `true` | no |\n| \u003ca name=\"input_node_metadata\"\u003e\u003c/a\u003e [node\\_metadata](#input\\_node\\_metadata) | Specifies how node metadata is exposed to the workload running on the node | `string` | `\"GKE_METADATA\"` | no |\n| \u003ca name=\"input_node_pools\"\u003e\u003c/a\u003e [node\\_pools](#input\\_node\\_pools) | Map of node pool objects | \u003cpre\u003emap(object({ # list(map(any))\u003cbr\u003e    #auto_upgrade       = optional(bool)\u003cbr\u003e    autoscaling                      = optional(bool, true)\u003cbr\u003e    autoscaling_min_node_count       = optional(number)\u003cbr\u003e    autoscaling_max_node_count       = optional(number)\u003cbr\u003e    autoscaling_location_policy      = optional(string)\u003cbr\u003e    autoscaling_total_min_node_count = optional(number)\u003cbr\u003e    autoscaling_total_max_node_count = optional(number)\u003cbr\u003e    initial_node_count               = optional(number)\u003cbr\u003e    max_pods_per_node                = optional(number)\u003cbr\u003e    #min_count          = optional(number)\u003cbr\u003e    node_locations = optional(string, \"\")\u003cbr\u003e    version        = optional(string)\u003cbr\u003e    management = optional(object({\u003cbr\u003e      auto_repair  = optional(bool, true)\u003cbr\u003e      auto_upgrade = optional(bool, true)\u003cbr\u003e    }))\u003cbr\u003e    node_config = optional(object({\u003cbr\u003e      boot_disk_kms_key = optional(string)\u003cbr\u003e      disk_size_gb      = optional(number)\u003cbr\u003e      disk_type         = optional(string)\u003cbr\u003e      enable_gcfs       = optional(bool, false)\u003cbr\u003e      enable_gvnic      = optional(bool, false)\u003cbr\u003e      image_type        = optional(string)\u003cbr\u003e      labels            = optional(map(string))\u003cbr\u003e      local_ssd_count   = optional(number)\u003cbr\u003e      logging_variant   = optional(string)\u003cbr\u003e      machine_type      = optional(string)\u003cbr\u003e      metadata          = optional(map(string))\u003cbr\u003e      min_cpu_platform  = optional(string)\u003cbr\u003e      oauth_scopes      = optional(list(string))\u003cbr\u003e      preemptible       = optional(bool)\u003cbr\u003e      resource_labels   = optional(map(string))\u003cbr\u003e      service_account   = optional(string)\u003cbr\u003e      spot              = optional(bool)\u003cbr\u003e      tags              = optional(list(string))\u003cbr\u003e      workload_metadata = optional(string)\u003cbr\u003e      guest_accelerator = optional(object({\u003cbr\u003e        type               = optional(string)\u003cbr\u003e        count              = optional(number)\u003cbr\u003e        gpu_partition_size = optional(number)\u003cbr\u003e      }))\u003cbr\u003e      linux_node_config = optional(object({\u003cbr\u003e        sysctls = optional(map(string))\u003cbr\u003e      }))\u003cbr\u003e      shielded_instance_config = optional(object({\u003cbr\u003e        enable_secure_boot          = optional(bool)\u003cbr\u003e        enable_integrity_monitoring = optional(bool)\u003cbr\u003e      }))\u003cbr\u003e      taints = optional(list(object({\u003cbr\u003e        key    = string\u003cbr\u003e        value  = string\u003cbr\u003e        effect = string\u003cbr\u003e      })), [])\u003cbr\u003e    }))\u003cbr\u003e    #upgrade_strategy = optional(string)\u003cbr\u003e    #upgrade_max_surge = optional(number)\u003cbr\u003e    #upgrade_max_unavailable =  optional(number)\u003cbr\u003e    #upgrade_bg_node_pool_soak_duration = optional(string)\u003cbr\u003e    #upgrade_bg_standard_rollout_policy_batch_soak_duration = optional(string)\u003cbr\u003e    #upgrade_bg_standard_rollout_policy_batch_percentage = optional(number)\u003cbr\u003e    #upgrade_bg_standard_rollout_policy_batch_node_count = optional(number)\u003cbr\u003e    upgrade_settings = optional(object({\u003cbr\u003e      strategy        = optional(string)\u003cbr\u003e      max_surge       = optional(number)\u003cbr\u003e      max_unavailable = optional(number)\u003cbr\u003e      blue_green_settings = optional(object({\u003cbr\u003e        node_pool_soak_duration = optional(string)\u003cbr\u003e        standard_rollout_policy = optional(object({\u003cbr\u003e          batch_soak_duration = optional(string)\u003cbr\u003e          batch_percentage    = optional(number)\u003cbr\u003e          batch_node_count    = optional(number)\u003cbr\u003e        }))\u003cbr\u003e      }))\u003cbr\u003e    }))\u003cbr\u003e\u003cbr\u003e  }))\u003c/pre\u003e | n/a | yes |\n| \u003ca name=\"input_node_pools_labels\"\u003e\u003c/a\u003e [node\\_pools\\_labels](#input\\_node\\_pools\\_labels) | Map of maps containing node labels by node-pool name | `map(map(any))` | \u003cpre\u003e{\u003cbr\u003e  \"all\": {\u003cbr\u003e    \"terraform\": true\u003cbr\u003e  }\u003cbr\u003e}\u003c/pre\u003e | no |\n| \u003ca name=\"input_node_pools_linux_node_configs_sysctls\"\u003e\u003c/a\u003e [node\\_pools\\_linux\\_node\\_configs\\_sysctls](#input\\_node\\_pools\\_linux\\_node\\_configs\\_sysctls) | Map of maps containing linux node config sysctls by node-pool name | `map(map(string))` | \u003cpre\u003e{\u003cbr\u003e  \"all\": {}\u003cbr\u003e}\u003c/pre\u003e | no |\n| \u003ca name=\"input_node_pools_metadata\"\u003e\u003c/a\u003e [node\\_pools\\_metadata](#input\\_node\\_pools\\_metadata) | Map of maps containing node metadata by node-pool name | `map(map(string))` | \u003cpre\u003e{\u003cbr\u003e  \"all\": {}\u003cbr\u003e}\u003c/pre\u003e | no |\n| \u003ca name=\"input_node_pools_oauth_scopes\"\u003e\u003c/a\u003e [node\\_pools\\_oauth\\_scopes](#input\\_node\\_pools\\_oauth\\_scopes) | Map of lists containing node oauth scopes by node-pool name | `map(list(string))` | \u003cpre\u003e{\u003cbr\u003e  \"all\": [\u003cbr\u003e    \"https://www.googleapis.com/auth/cloud-platform\"\u003cbr\u003e  ]\u003cbr\u003e}\u003c/pre\u003e | no |\n| \u003ca name=\"input_node_pools_resource_labels\"\u003e\u003c/a\u003e [node\\_pools\\_resource\\_labels](#input\\_node\\_pools\\_resource\\_labels) | Map of maps containing resource labels by node-pool name | `map(map(string))` | \u003cpre\u003e{\u003cbr\u003e  \"all\": {}\u003cbr\u003e}\u003c/pre\u003e | no |\n| \u003ca name=\"input_node_pools_tags\"\u003e\u003c/a\u003e [node\\_pools\\_tags](#input\\_node\\_pools\\_tags) | Map of lists containing node network tags by node-pool name | `map(list(string))` | \u003cpre\u003e{\u003cbr\u003e  \"all\": []\u003cbr\u003e}\u003c/pre\u003e | no |\n| \u003ca name=\"input_node_pools_taints\"\u003e\u003c/a\u003e [node\\_pools\\_taints](#input\\_node\\_pools\\_taints) | Map of lists containing node taints by node-pool name | `map(list(object({ key = string, value = string, effect = string })))` | \u003cpre\u003e{\u003cbr\u003e  \"all\": []\u003cbr\u003e}\u003c/pre\u003e | no |\n| \u003ca name=\"input_project_id\"\u003e\u003c/a\u003e [project\\_id](#input\\_project\\_id) | The ID of the project in which the resource belongs. | `string` | n/a | yes |\n| \u003ca name=\"input_release_channel\"\u003e\u003c/a\u003e [release\\_channel](#input\\_release\\_channel) | The release channel of this cluster. Accepted values are `UNSPECIFIED`, `RAPID`, `REGULAR` and `STABLE`. Defaults to `REGULAR`. | `string` | `\"REGULAR\"` | no |\n| \u003ca name=\"input_timeouts\"\u003e\u003c/a\u003e [timeouts](#input\\_timeouts) | Timeout for cluster operations. | `map(string)` | `{}` | no |\n\n## Outputs\n\n| Name | Description |\n|------|-------------|\n| \u003ca name=\"output_cluster_default_node_zones\"\u003e\u003c/a\u003e [cluster\\_default\\_node\\_zones](#output\\_cluster\\_default\\_node\\_zones) | The default zones for node pools in the cluster |\n| \u003ca name=\"output_instance_group_urls\"\u003e\u003c/a\u003e [instance\\_group\\_urls](#output\\_instance\\_group\\_urls) | List of GKE generated instance groups |\n| \u003ca name=\"output_zones\"\u003e\u003c/a\u003e [zones](#output\\_zones) | Available zones |\n| \u003ca name=\"output_zones_random\"\u003e\u003c/a\u003e [zones\\_random](#output\\_zones\\_random) | Available zones - randomized |\n\n\n\u003c!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnotablehealth%2Fterraform-google-gke-node-pools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnotablehealth%2Fterraform-google-gke-node-pools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnotablehealth%2Fterraform-google-gke-node-pools/lists"}