From 2843faec13498f689cd49ff8152dbe19eb50262f Mon Sep 17 00:00:00 2001 From: Peter Schuurman Date: Mon, 1 Apr 2024 14:07:34 -0700 Subject: [PATCH] Add support for GKE Addon StatefulHA --- .../resource_container_cluster.go.erb | 34 +++++++++++++++++++ .../resource_container_cluster_test.go.erb | 6 ++++ .../docs/r/container_cluster.html.markdown | 3 ++ 3 files changed, 43 insertions(+) diff --git a/mmv1/third_party/terraform/services/container/resource_container_cluster.go.erb b/mmv1/third_party/terraform/services/container/resource_container_cluster.go.erb index 221b01ac9403..adb7b70afe64 100644 --- a/mmv1/third_party/terraform/services/container/resource_container_cluster.go.erb +++ b/mmv1/third_party/terraform/services/container/resource_container_cluster.go.erb @@ -80,6 +80,7 @@ var ( "addons_config.0.gke_backup_agent_config", "addons_config.0.config_connector_config", "addons_config.0.gcs_fuse_csi_driver_config", + "addons_config.0.stateful_ha_config", <% unless version == 'ga' -%> "addons_config.0.istio_config", "addons_config.0.kalm_config", @@ -505,6 +506,23 @@ func ResourceContainerCluster() *schema.Resource { }, }, }, + "stateful_ha_config": { + Type: schema.TypeList, + Optional: true, + Computed: true, + AtLeastOneOf: addonsConfigKeys, + MaxItems: 1, + Description: `The status of the Stateful HA addon, which provides automatic configurable failover for stateful applications. Defaults to disabled; set enabled = true to enable.`, + ConflictsWith: []string{"enable_autopilot"}, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "enabled": { + Type: schema.TypeBool, + Required: true, + }, + }, + }, + }, }, }, }, @@ -4458,6 +4476,14 @@ func expandClusterAddonsConfig(configured interface{}) *container.AddonsConfig { } } + if v, ok := config["stateful_ha_config"]; ok && len(v.([]interface{})) > 0 { + addon := v.([]interface{})[0].(map[string]interface{}) + ac.StatefulHaConfig = &container.StatefulHAConfig{ + Enabled: addon["enabled"].(bool), + ForceSendFields: []string{"Enabled"}, + } + } + <% unless version == 'ga' -%> if v, ok := config["istio_config"]; ok && len(v.([]interface{})) > 0 { addon := v.([]interface{})[0].(map[string]interface{}) @@ -5633,6 +5659,13 @@ func flattenClusterAddonsConfig(c *container.AddonsConfig) []map[string]interfac }, } } + if c.StatefulHaConfig != nil { + result["stateful_ha_config"] = []map[string]interface{}{ + { + "enabled": c.StatefulHaConfig.Enabled, + }, + } + } <% unless version == 'ga' -%> if c.IstioConfig != nil { @@ -5652,6 +5685,7 @@ func flattenClusterAddonsConfig(c *container.AddonsConfig) []map[string]interfac } } <% end -%> + return []map[string]interface{}{result} } diff --git a/mmv1/third_party/terraform/services/container/resource_container_cluster_test.go.erb b/mmv1/third_party/terraform/services/container/resource_container_cluster_test.go.erb index bf45123177b3..3c0fc1dec3fc 100644 --- a/mmv1/third_party/terraform/services/container/resource_container_cluster_test.go.erb +++ b/mmv1/third_party/terraform/services/container/resource_container_cluster_test.go.erb @@ -4957,6 +4957,9 @@ resource "google_container_cluster" "primary" { gcs_fuse_csi_driver_config { enabled = false } + stateful_ha_config { + enabled = false + } <% unless version == 'ga' -%> istio_config { disabled = true @@ -5024,6 +5027,9 @@ resource "google_container_cluster" "primary" { gcs_fuse_csi_driver_config { enabled = true } + stateful_ha_config { + enabled = true + } <% unless version == 'ga' -%> istio_config { disabled = false diff --git a/mmv1/third_party/terraform/website/docs/r/container_cluster.html.markdown b/mmv1/third_party/terraform/website/docs/r/container_cluster.html.markdown index 2212db48beed..7c40314a5ac4 100644 --- a/mmv1/third_party/terraform/website/docs/r/container_cluster.html.markdown +++ b/mmv1/third_party/terraform/website/docs/r/container_cluster.html.markdown @@ -448,6 +448,9 @@ Fleet configuration for the cluster. Structure is [documented below](#nested_fle * `config_connector_config` - (Optional). The status of the ConfigConnector addon. It is disabled by default; Set `enabled = true` to enable. +* `stateful_ha_config` - (Optional). + The status of the Stateful HA addon, which provides automatic configurable failover for stateful applications. + It is disabled by default for Standard clusters. Set `enabled = true` to enable. This example `addons_config` disables two addons: