From 9d1274f9dc7cf3ed8d22690c7cd0fda08265da84 Mon Sep 17 00:00:00 2001 From: Ilia Lazebnik Date: Wed, 25 Aug 2021 01:53:23 +0300 Subject: [PATCH] feat: Add support for setting additional `pod_range` to beta node pools (#984) BREAKING CHANGE: Minimum beta provider version increased to v3.79.0. --- autogen/main/README.md | 3 +++ autogen/main/cluster.tf.tmpl | 9 +++++++++ autogen/main/versions.tf.tmpl | 2 +- cluster.tf | 1 + examples/node_pool/main.tf | 3 ++- examples/node_pool_update_variant_beta/main.tf | 2 +- examples/node_pool_update_variant_public_beta/main.tf | 2 +- .../regional_private_node_pool_oauth_scopes/provider.tf | 2 +- examples/safer_cluster/main.tf | 2 +- examples/safer_cluster_iap_bastion/provider.tf | 2 +- examples/simple_regional_beta/main.tf | 2 +- examples/simple_regional_private_beta/main.tf | 2 +- examples/simple_zonal_with_asm/main.tf | 2 +- examples/workload_metadata_config/main.tf | 2 +- modules/beta-private-cluster-update-variant/README.md | 1 + modules/beta-private-cluster-update-variant/cluster.tf | 7 +++++++ modules/beta-private-cluster-update-variant/versions.tf | 2 +- modules/beta-private-cluster/README.md | 1 + modules/beta-private-cluster/cluster.tf | 7 +++++++ modules/beta-private-cluster/versions.tf | 2 +- modules/beta-public-cluster-update-variant/README.md | 1 + modules/beta-public-cluster-update-variant/cluster.tf | 7 +++++++ modules/beta-public-cluster-update-variant/versions.tf | 2 +- modules/beta-public-cluster/README.md | 1 + modules/beta-public-cluster/cluster.tf | 7 +++++++ modules/beta-public-cluster/versions.tf | 2 +- modules/private-cluster-update-variant/cluster.tf | 1 + modules/private-cluster/cluster.tf | 1 + 28 files changed, 63 insertions(+), 15 deletions(-) diff --git a/autogen/main/README.md b/autogen/main/README.md index f8e64b051..589791cb5 100644 --- a/autogen/main/README.md +++ b/autogen/main/README.md @@ -199,6 +199,9 @@ The node_pools variable takes the following parameters: {% endif %} | min_count | Minimum number of nodes in the NodePool. Must be >=0 and <= max_count. Should be used when autoscaling is true | 1 | Optional | | name | The name of the node pool | | Required | +{% if beta_cluster %} +| pod_range | The ID of the secondary range for pod IPs. | | Optional | +{% endif %} | node_count | The number of nodes in the nodepool when autoscaling is false. Otherwise defaults to 1. Only valid for non-autoscaling clusers | | Required | | node_locations | The list of zones in which the cluster's nodes are located. Nodes must be in the region of their regional cluster or in the same region as their cluster's zone for zonal clusters. Defaults to cluster level node locations if nothing is specified | " " | Optional | | node_metadata | Options to expose the node metadata to the workload running on the node | | Optional | diff --git a/autogen/main/cluster.tf.tmpl b/autogen/main/cluster.tf.tmpl index 87ea3678a..754779b7f 100644 --- a/autogen/main/cluster.tf.tmpl +++ b/autogen/main/cluster.tf.tmpl @@ -472,6 +472,15 @@ resource "google_container_node_pool" "pools" { } } + {% if beta_cluster %} + dynamic "network_config" { + for_each = length(lookup(each.value, "pod_range", "")) > 0 ? [each.value] : [] + content { + pod_range = lookup(network_config.value, "pod_range", null) + } + } + {% endif %} + management { auto_repair = lookup(each.value, "auto_repair", true) auto_upgrade = lookup(each.value, "auto_upgrade", local.default_auto_upgrade) diff --git a/autogen/main/versions.tf.tmpl b/autogen/main/versions.tf.tmpl index ccec40a6b..d32c40d74 100644 --- a/autogen/main/versions.tf.tmpl +++ b/autogen/main/versions.tf.tmpl @@ -24,7 +24,7 @@ terraform { required_providers { google-beta = { source = "hashicorp/google-beta" - version = ">= 3.63.0, <4.0.0" + version = ">= 3.79.0, <4.0.0" } kubernetes = { source = "hashicorp/kubernetes" diff --git a/cluster.tf b/cluster.tf index a9a8f81f8..26e7116ff 100644 --- a/cluster.tf +++ b/cluster.tf @@ -226,6 +226,7 @@ resource "google_container_node_pool" "pools" { } } + management { auto_repair = lookup(each.value, "auto_repair", true) auto_upgrade = lookup(each.value, "auto_upgrade", local.default_auto_upgrade) diff --git a/examples/node_pool/main.tf b/examples/node_pool/main.tf index 71b9501d5..08744bc4c 100644 --- a/examples/node_pool/main.tf +++ b/examples/node_pool/main.tf @@ -19,7 +19,7 @@ locals { } provider "google-beta" { - version = "~> 3.63.0" + version = "~> 3.79.0" region = var.region } @@ -77,6 +77,7 @@ module "gke" { image_type = "COS" auto_upgrade = true service_account = var.compute_engine_service_account + pod_range = "test" }, ] diff --git a/examples/node_pool_update_variant_beta/main.tf b/examples/node_pool_update_variant_beta/main.tf index f377cf5d4..e292fab99 100644 --- a/examples/node_pool_update_variant_beta/main.tf +++ b/examples/node_pool_update_variant_beta/main.tf @@ -19,7 +19,7 @@ locals { } provider "google-beta" { - version = "~> 3.63.0" + version = "~> 3.79.0" credentials = file(var.credentials_path) region = var.region } diff --git a/examples/node_pool_update_variant_public_beta/main.tf b/examples/node_pool_update_variant_public_beta/main.tf index 042e83299..4dedb7776 100644 --- a/examples/node_pool_update_variant_public_beta/main.tf +++ b/examples/node_pool_update_variant_public_beta/main.tf @@ -19,7 +19,7 @@ locals { } provider "google-beta" { - version = "~> 3.63.0" + version = "~> 3.79.0" credentials = file(var.credentials_path) region = var.region } diff --git a/examples/regional_private_node_pool_oauth_scopes/provider.tf b/examples/regional_private_node_pool_oauth_scopes/provider.tf index 05a66220a..4fa3c380a 100644 --- a/examples/regional_private_node_pool_oauth_scopes/provider.tf +++ b/examples/regional_private_node_pool_oauth_scopes/provider.tf @@ -19,7 +19,7 @@ provider "google" { } provider "google-beta" { - version = "~> 3.63.0" + version = "~> 3.79.0" } data "google_client_config" "default" {} diff --git a/examples/safer_cluster/main.tf b/examples/safer_cluster/main.tf index 26f025f6c..585392f9c 100644 --- a/examples/safer_cluster/main.tf +++ b/examples/safer_cluster/main.tf @@ -35,7 +35,7 @@ provider "google" { } provider "google-beta" { - version = "~> 3.63.0" + version = "~> 3.79.0" } data "google_client_config" "default" {} diff --git a/examples/safer_cluster_iap_bastion/provider.tf b/examples/safer_cluster_iap_bastion/provider.tf index 0d3dfe9ff..cd56d735b 100644 --- a/examples/safer_cluster_iap_bastion/provider.tf +++ b/examples/safer_cluster_iap_bastion/provider.tf @@ -19,7 +19,7 @@ provider "google" { } provider "google-beta" { - version = "~> 3.63.0" + version = "~> 3.79.0" } data "google_client_config" "default" {} diff --git a/examples/simple_regional_beta/main.tf b/examples/simple_regional_beta/main.tf index 85f91cbb0..9bb78ddd7 100644 --- a/examples/simple_regional_beta/main.tf +++ b/examples/simple_regional_beta/main.tf @@ -19,7 +19,7 @@ locals { } provider "google-beta" { - version = "~> 3.63.0" + version = "~> 3.79.0" region = var.region } diff --git a/examples/simple_regional_private_beta/main.tf b/examples/simple_regional_private_beta/main.tf index 919f76c3a..f68d828b3 100644 --- a/examples/simple_regional_private_beta/main.tf +++ b/examples/simple_regional_private_beta/main.tf @@ -24,7 +24,7 @@ provider "google" { } provider "google-beta" { - version = "~> 3.63.0" + version = "~> 3.79.0" region = var.region } diff --git a/examples/simple_zonal_with_asm/main.tf b/examples/simple_zonal_with_asm/main.tf index c6d5ecef3..bffde7f7c 100644 --- a/examples/simple_zonal_with_asm/main.tf +++ b/examples/simple_zonal_with_asm/main.tf @@ -19,7 +19,7 @@ locals { } provider "google-beta" { - version = "~> 3.63.0" + version = "~> 3.79.0" region = var.region } diff --git a/examples/workload_metadata_config/main.tf b/examples/workload_metadata_config/main.tf index 350a5a560..7ae00e779 100644 --- a/examples/workload_metadata_config/main.tf +++ b/examples/workload_metadata_config/main.tf @@ -19,7 +19,7 @@ locals { } provider "google-beta" { - version = "~> 3.63.0" + version = "~> 3.79.0" region = var.region } diff --git a/modules/beta-private-cluster-update-variant/README.md b/modules/beta-private-cluster-update-variant/README.md index 5925df3a8..072b435b3 100644 --- a/modules/beta-private-cluster-update-variant/README.md +++ b/modules/beta-private-cluster-update-variant/README.md @@ -316,6 +316,7 @@ The node_pools variable takes the following parameters: | max_unavailable | The number of nodes that can be simultaneously unavailable during an upgrade. Increasing max_unavailable raises the number of nodes that can be upgraded in parallel. Can be set to 0 or greater. | 0 | Optional | | min_count | Minimum number of nodes in the NodePool. Must be >=0 and <= max_count. Should be used when autoscaling is true | 1 | Optional | | name | The name of the node pool | | Required | +| pod_range | The ID of the secondary range for pod IPs. | | Optional | | node_count | The number of nodes in the nodepool when autoscaling is false. Otherwise defaults to 1. Only valid for non-autoscaling clusers | | Required | | node_locations | The list of zones in which the cluster's nodes are located. Nodes must be in the region of their regional cluster or in the same region as their cluster's zone for zonal clusters. Defaults to cluster level node locations if nothing is specified | " " | Optional | | node_metadata | Options to expose the node metadata to the workload running on the node | | Optional | diff --git a/modules/beta-private-cluster-update-variant/cluster.tf b/modules/beta-private-cluster-update-variant/cluster.tf index 47e1b0a96..c50137843 100644 --- a/modules/beta-private-cluster-update-variant/cluster.tf +++ b/modules/beta-private-cluster-update-variant/cluster.tf @@ -429,6 +429,13 @@ resource "google_container_node_pool" "pools" { } } + 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) diff --git a/modules/beta-private-cluster-update-variant/versions.tf b/modules/beta-private-cluster-update-variant/versions.tf index 0746fbf59..98f79cf77 100644 --- a/modules/beta-private-cluster-update-variant/versions.tf +++ b/modules/beta-private-cluster-update-variant/versions.tf @@ -21,7 +21,7 @@ terraform { required_providers { google-beta = { source = "hashicorp/google-beta" - version = ">= 3.63.0, <4.0.0" + version = ">= 3.79.0, <4.0.0" } kubernetes = { source = "hashicorp/kubernetes" diff --git a/modules/beta-private-cluster/README.md b/modules/beta-private-cluster/README.md index eaef523b8..c6f82df27 100644 --- a/modules/beta-private-cluster/README.md +++ b/modules/beta-private-cluster/README.md @@ -294,6 +294,7 @@ The node_pools variable takes the following parameters: | max_unavailable | The number of nodes that can be simultaneously unavailable during an upgrade. Increasing max_unavailable raises the number of nodes that can be upgraded in parallel. Can be set to 0 or greater. | 0 | Optional | | min_count | Minimum number of nodes in the NodePool. Must be >=0 and <= max_count. Should be used when autoscaling is true | 1 | Optional | | name | The name of the node pool | | Required | +| pod_range | The ID of the secondary range for pod IPs. | | Optional | | node_count | The number of nodes in the nodepool when autoscaling is false. Otherwise defaults to 1. Only valid for non-autoscaling clusers | | Required | | node_locations | The list of zones in which the cluster's nodes are located. Nodes must be in the region of their regional cluster or in the same region as their cluster's zone for zonal clusters. Defaults to cluster level node locations if nothing is specified | " " | Optional | | node_metadata | Options to expose the node metadata to the workload running on the node | | Optional | diff --git a/modules/beta-private-cluster/cluster.tf b/modules/beta-private-cluster/cluster.tf index 7ee24bab6..dc30efc0e 100644 --- a/modules/beta-private-cluster/cluster.tf +++ b/modules/beta-private-cluster/cluster.tf @@ -345,6 +345,13 @@ resource "google_container_node_pool" "pools" { } } + 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) diff --git a/modules/beta-private-cluster/versions.tf b/modules/beta-private-cluster/versions.tf index eefc04c8d..06cffb1d6 100644 --- a/modules/beta-private-cluster/versions.tf +++ b/modules/beta-private-cluster/versions.tf @@ -21,7 +21,7 @@ terraform { required_providers { google-beta = { source = "hashicorp/google-beta" - version = ">= 3.63.0, <4.0.0" + version = ">= 3.79.0, <4.0.0" } kubernetes = { source = "hashicorp/kubernetes" diff --git a/modules/beta-public-cluster-update-variant/README.md b/modules/beta-public-cluster-update-variant/README.md index 36bbe72bc..a06a76817 100644 --- a/modules/beta-public-cluster-update-variant/README.md +++ b/modules/beta-public-cluster-update-variant/README.md @@ -303,6 +303,7 @@ The node_pools variable takes the following parameters: | max_unavailable | The number of nodes that can be simultaneously unavailable during an upgrade. Increasing max_unavailable raises the number of nodes that can be upgraded in parallel. Can be set to 0 or greater. | 0 | Optional | | min_count | Minimum number of nodes in the NodePool. Must be >=0 and <= max_count. Should be used when autoscaling is true | 1 | Optional | | name | The name of the node pool | | Required | +| pod_range | The ID of the secondary range for pod IPs. | | Optional | | node_count | The number of nodes in the nodepool when autoscaling is false. Otherwise defaults to 1. Only valid for non-autoscaling clusers | | Required | | node_locations | The list of zones in which the cluster's nodes are located. Nodes must be in the region of their regional cluster or in the same region as their cluster's zone for zonal clusters. Defaults to cluster level node locations if nothing is specified | " " | Optional | | node_metadata | Options to expose the node metadata to the workload running on the node | | Optional | diff --git a/modules/beta-public-cluster-update-variant/cluster.tf b/modules/beta-public-cluster-update-variant/cluster.tf index a71c638b0..3c6e8501c 100644 --- a/modules/beta-public-cluster-update-variant/cluster.tf +++ b/modules/beta-public-cluster-update-variant/cluster.tf @@ -410,6 +410,13 @@ resource "google_container_node_pool" "pools" { } } + 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) diff --git a/modules/beta-public-cluster-update-variant/versions.tf b/modules/beta-public-cluster-update-variant/versions.tf index 6e64882a0..e6e56bfb5 100644 --- a/modules/beta-public-cluster-update-variant/versions.tf +++ b/modules/beta-public-cluster-update-variant/versions.tf @@ -21,7 +21,7 @@ terraform { required_providers { google-beta = { source = "hashicorp/google-beta" - version = ">= 3.63.0, <4.0.0" + version = ">= 3.79.0, <4.0.0" } kubernetes = { source = "hashicorp/kubernetes" diff --git a/modules/beta-public-cluster/README.md b/modules/beta-public-cluster/README.md index 4fe59e729..69fd8fddb 100644 --- a/modules/beta-public-cluster/README.md +++ b/modules/beta-public-cluster/README.md @@ -281,6 +281,7 @@ The node_pools variable takes the following parameters: | max_unavailable | The number of nodes that can be simultaneously unavailable during an upgrade. Increasing max_unavailable raises the number of nodes that can be upgraded in parallel. Can be set to 0 or greater. | 0 | Optional | | min_count | Minimum number of nodes in the NodePool. Must be >=0 and <= max_count. Should be used when autoscaling is true | 1 | Optional | | name | The name of the node pool | | Required | +| pod_range | The ID of the secondary range for pod IPs. | | Optional | | node_count | The number of nodes in the nodepool when autoscaling is false. Otherwise defaults to 1. Only valid for non-autoscaling clusers | | Required | | node_locations | The list of zones in which the cluster's nodes are located. Nodes must be in the region of their regional cluster or in the same region as their cluster's zone for zonal clusters. Defaults to cluster level node locations if nothing is specified | " " | Optional | | node_metadata | Options to expose the node metadata to the workload running on the node | | Optional | diff --git a/modules/beta-public-cluster/cluster.tf b/modules/beta-public-cluster/cluster.tf index d7d4b00ad..7f3770f3f 100644 --- a/modules/beta-public-cluster/cluster.tf +++ b/modules/beta-public-cluster/cluster.tf @@ -326,6 +326,13 @@ resource "google_container_node_pool" "pools" { } } + 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) diff --git a/modules/beta-public-cluster/versions.tf b/modules/beta-public-cluster/versions.tf index 548becc09..178978ae5 100644 --- a/modules/beta-public-cluster/versions.tf +++ b/modules/beta-public-cluster/versions.tf @@ -21,7 +21,7 @@ terraform { required_providers { google-beta = { source = "hashicorp/google-beta" - version = ">= 3.63.0, <4.0.0" + version = ">= 3.79.0, <4.0.0" } kubernetes = { source = "hashicorp/kubernetes" diff --git a/modules/private-cluster-update-variant/cluster.tf b/modules/private-cluster-update-variant/cluster.tf index 4ad2c094d..edb968404 100644 --- a/modules/private-cluster-update-variant/cluster.tf +++ b/modules/private-cluster-update-variant/cluster.tf @@ -323,6 +323,7 @@ resource "google_container_node_pool" "pools" { } } + management { auto_repair = lookup(each.value, "auto_repair", true) auto_upgrade = lookup(each.value, "auto_upgrade", local.default_auto_upgrade) diff --git a/modules/private-cluster/cluster.tf b/modules/private-cluster/cluster.tf index d33f19cee..8e0a3a1fc 100644 --- a/modules/private-cluster/cluster.tf +++ b/modules/private-cluster/cluster.tf @@ -239,6 +239,7 @@ resource "google_container_node_pool" "pools" { } } + management { auto_repair = lookup(each.value, "auto_repair", true) auto_upgrade = lookup(each.value, "auto_upgrade", local.default_auto_upgrade)