Skip to content

Commit a9000ea

Browse files
container: promote enable_fqdn_network_policy to GA (#12498) (#20609)
[upstream:677f7a7f0a08555c2b8741b236d6f3deaeb92dba] Signed-off-by: Modular Magician <[email protected]>
1 parent b3781fa commit a9000ea

File tree

4 files changed

+124
-1
lines changed

4 files changed

+124
-1
lines changed

.changelog/12498.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
container: promoted `google_container_cluster.enable_fqdn_network_policy` to GA
3+
```

google/services/container/resource_container_cluster.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ func ResourceContainerCluster() *schema.Resource {
189189
CustomizeDiff: customdiff.All(
190190
resourceNodeConfigEmptyGuestAccelerator,
191191
customdiff.ForceNewIfChange("enable_l4_ilb_subsetting", isBeenEnabled),
192+
customdiff.ForceNewIfChange("enable_fqdn_network_policy", isBeenEnabled),
192193
containerClusterAutopilotCustomizeDiff,
193194
containerClusterNodeVersionRemoveDefaultCustomizeDiff,
194195
containerClusterNetworkPolicyEmptyCustomizeDiff,
@@ -1910,6 +1911,12 @@ func ResourceContainerCluster() *schema.Resource {
19101911
Description: `Whether multi-networking is enabled for this cluster.`,
19111912
Default: false,
19121913
},
1914+
"enable_fqdn_network_policy": {
1915+
Type: schema.TypeBool,
1916+
Optional: true,
1917+
Description: `Whether FQDN Network Policy is enabled on this cluster.`,
1918+
Default: false,
1919+
},
19131920
"private_ipv6_google_access": {
19141921
Type: schema.TypeString,
19151922
Optional: true,
@@ -2296,6 +2303,7 @@ func resourceContainerClusterCreate(d *schema.ResourceData, meta interface{}) er
22962303
GatewayApiConfig: expandGatewayApiConfig(d.Get("gateway_api_config")),
22972304
EnableMultiNetworking: d.Get("enable_multi_networking").(bool),
22982305
DefaultEnablePrivateNodes: expandDefaultEnablePrivateNodes(d),
2306+
EnableFqdnNetworkPolicy: d.Get("enable_fqdn_network_policy").(bool),
22992307
},
23002308
MasterAuth: expandMasterAuth(d.Get("master_auth")),
23012309
NotificationConfig: expandNotificationConfig(d.Get("notification_config")),
@@ -2855,6 +2863,9 @@ func resourceContainerClusterRead(d *schema.ResourceData, meta interface{}) erro
28552863
if err := d.Set("enable_multi_networking", cluster.NetworkConfig.EnableMultiNetworking); err != nil {
28562864
return fmt.Errorf("Error setting enable_multi_networking: %s", err)
28572865
}
2866+
if err := d.Set("enable_fqdn_network_policy", cluster.NetworkConfig.EnableFqdnNetworkPolicy); err != nil {
2867+
return fmt.Errorf("Error setting enable_fqdn_network_policy: %s", err)
2868+
}
28582869
if err := d.Set("private_ipv6_google_access", cluster.NetworkConfig.PrivateIpv6GoogleAccess); err != nil {
28592870
return fmt.Errorf("Error setting private_ipv6_google_access: %s", err)
28602871
}
@@ -3307,6 +3318,22 @@ func resourceContainerClusterUpdate(d *schema.ResourceData, meta interface{}) er
33073318
log.Printf("[INFO] GKE cluster %s L4 ILB Subsetting has been updated to %v", d.Id(), enabled)
33083319
}
33093320

3321+
if d.HasChange("enable_fqdn_network_policy") {
3322+
enabled := d.Get("enable_fqdn_network_policy").(bool)
3323+
req := &container.UpdateClusterRequest{
3324+
Update: &container.ClusterUpdate{
3325+
DesiredEnableFqdnNetworkPolicy: enabled,
3326+
},
3327+
}
3328+
updateF := updateFunc(req, "updating fqdn network policy")
3329+
// Call update serially.
3330+
if err := transport_tpg.LockedCall(lockKey, updateF); err != nil {
3331+
return err
3332+
}
3333+
3334+
log.Printf("[INFO] GKE cluster %s FQDN Network Policy has been updated to %v", d.Id(), enabled)
3335+
}
3336+
33103337
if d.HasChange("enable_cilium_clusterwide_network_policy") {
33113338
enabled := d.Get("enable_cilium_clusterwide_network_policy").(bool)
33123339
req := &container.UpdateClusterRequest{

google/services/container/resource_container_cluster_test.go

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -510,6 +510,38 @@ func TestAccContainerCluster_withMultiNetworking(t *testing.T) {
510510
})
511511
}
512512

513+
func TestAccContainerCluster_withFQDNNetworkPolicy(t *testing.T) {
514+
t.Parallel()
515+
516+
clusterName := fmt.Sprintf("tf-test-cluster-%s", acctest.RandString(t, 10))
517+
518+
acctest.VcrTest(t, resource.TestCase{
519+
PreCheck: func() { acctest.AccTestPreCheck(t) },
520+
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
521+
CheckDestroy: testAccCheckContainerClusterDestroyProducer(t),
522+
Steps: []resource.TestStep{
523+
{
524+
Config: testAccContainerCluster_withFQDNNetworkPolicy(clusterName, false),
525+
},
526+
{
527+
ResourceName: "google_container_cluster.cluster",
528+
ImportState: true,
529+
ImportStateVerify: true,
530+
ImportStateVerifyIgnore: []string{"min_master_version", "deletion_protection"},
531+
},
532+
{
533+
Config: testAccContainerCluster_withFQDNNetworkPolicy(clusterName, true),
534+
},
535+
{
536+
ResourceName: "google_container_cluster.cluster",
537+
ImportState: true,
538+
ImportStateVerify: true,
539+
ImportStateVerifyIgnore: []string{"min_master_version", "deletion_protection"},
540+
},
541+
},
542+
})
543+
}
544+
513545
func TestAccContainerCluster_withAdditiveVPC(t *testing.T) {
514546
t.Parallel()
515547

@@ -733,6 +765,67 @@ resource "google_container_cluster" "cluster" {
733765
`, clusterName)
734766
}
735767

768+
func testAccContainerCluster_withFQDNNetworkPolicy(clusterName string, enabled bool) string {
769+
return fmt.Sprintf(`
770+
data "google_container_engine_versions" "uscentral1a" {
771+
location = "us-central1-a"
772+
}
773+
774+
resource "google_compute_network" "container_network" {
775+
name = "%s-nw"
776+
auto_create_subnetworks = false
777+
}
778+
779+
resource "google_compute_subnetwork" "container_subnetwork" {
780+
name = google_compute_network.container_network.name
781+
network = google_compute_network.container_network.name
782+
ip_cidr_range = "10.0.36.0/24"
783+
region = "us-central1"
784+
private_ip_google_access = true
785+
786+
secondary_ip_range {
787+
range_name = "pod"
788+
ip_cidr_range = "10.0.0.0/19"
789+
}
790+
791+
secondary_ip_range {
792+
range_name = "svc"
793+
ip_cidr_range = "10.0.32.0/22"
794+
}
795+
796+
secondary_ip_range {
797+
range_name = "another-pod"
798+
ip_cidr_range = "10.1.32.0/22"
799+
}
800+
801+
lifecycle {
802+
ignore_changes = [
803+
# The auto nodepool creates a secondary range which diffs this resource.
804+
secondary_ip_range,
805+
]
806+
}
807+
}
808+
809+
resource "google_container_cluster" "cluster" {
810+
name = "%s"
811+
location = "us-central1-a"
812+
min_master_version = data.google_container_engine_versions.uscentral1a.release_channel_latest_version["STABLE"]
813+
initial_node_count = 1
814+
815+
network = google_compute_network.container_network.name
816+
subnetwork = google_compute_subnetwork.container_subnetwork.name
817+
ip_allocation_policy {
818+
cluster_secondary_range_name = google_compute_subnetwork.container_subnetwork.secondary_ip_range[0].range_name
819+
services_secondary_range_name = google_compute_subnetwork.container_subnetwork.secondary_ip_range[1].range_name
820+
}
821+
822+
enable_fqdn_network_policy = %t
823+
datapath_provider = "ADVANCED_DATAPATH"
824+
deletion_protection = false
825+
}
826+
`, clusterName, clusterName, enabled)
827+
}
828+
736829
func TestAccContainerCluster_withNetworkPolicyEnabled(t *testing.T) {
737830
t.Parallel()
738831

website/docs/r/container_cluster.html.markdown

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,7 @@ subnetwork in which the cluster's instances are launched.
372372
* `enable_multi_networking` - (Optional)
373373
Whether multi-networking is enabled for this cluster.
374374

375-
* `enable_fqdn_network_policy` - (Optional, [Beta](https://terraform.io/docs/providers/google/guides/provider_versions.html))
375+
* `enable_fqdn_network_policy` - (Optional)
376376
Whether FQDN Network Policy is enabled on this cluster. Users who enable this feature for existing Standard clusters must restart the GKE Dataplane V2 `anetd` DaemonSet after enabling it. See the [Enable FQDN Network Policy in an existing cluster](https://cloud.google.com/kubernetes-engine/docs/how-to/fqdn-network-policies#enable_fqdn_network_policy_in_an_existing_cluster) for more information.
377377

378378
* `private_ipv6_google_access` - (Optional)

0 commit comments

Comments
 (0)