mirror of
https://github.com/letic/terraform-provider-google.git
synced 2024-10-03 01:01:06 +00:00
regional and private clusters are in GA now (#2364)
<!-- This change is generated by MagicModules. --> /cc @danawillow Fixes #2286
This commit is contained in:
parent
94727a73ff
commit
0f5c81ce65
@ -97,7 +97,6 @@ func resourceContainerCluster() *schema.Resource {
|
||||
},
|
||||
|
||||
"region": {
|
||||
Deprecated: "This field is in beta and will be removed from this provider. Use it in the the google-beta provider instead. See https://terraform.io/docs/providers/google/provider_versions.html for more details.",
|
||||
Type: schema.TypeString,
|
||||
Optional: true,
|
||||
Computed: true,
|
||||
@ -505,11 +504,48 @@ func resourceContainerCluster() *schema.Resource {
|
||||
},
|
||||
|
||||
"private_cluster": {
|
||||
Deprecated: "This field is in beta and will be removed from this provider. Use it in the the google-beta provider instead. See https://terraform.io/docs/providers/google/provider_versions.html for more details.",
|
||||
Default: false,
|
||||
Type: schema.TypeBool,
|
||||
Optional: true,
|
||||
ForceNew: true,
|
||||
Deprecated: "Use private_cluster_config.enable_private_nodes instead.",
|
||||
ConflictsWith: []string{"private_cluster_config"},
|
||||
Computed: true,
|
||||
Type: schema.TypeBool,
|
||||
Optional: true,
|
||||
ForceNew: true,
|
||||
},
|
||||
|
||||
"private_cluster_config": {
|
||||
Type: schema.TypeList,
|
||||
Optional: true,
|
||||
MaxItems: 1,
|
||||
Computed: true,
|
||||
ConflictsWith: []string{"private_cluster", "master_ipv4_cidr_block"},
|
||||
Elem: &schema.Resource{
|
||||
Schema: map[string]*schema.Schema{
|
||||
"enable_private_endpoint": {
|
||||
Type: schema.TypeBool,
|
||||
Optional: true,
|
||||
ForceNew: true,
|
||||
},
|
||||
"enable_private_nodes": {
|
||||
Type: schema.TypeBool,
|
||||
Optional: true,
|
||||
ForceNew: true,
|
||||
},
|
||||
"master_ipv4_cidr_block": {
|
||||
Type: schema.TypeString,
|
||||
Optional: true,
|
||||
ForceNew: true,
|
||||
ValidateFunc: validation.CIDRNetwork(28, 28),
|
||||
},
|
||||
"private_endpoint": {
|
||||
Type: schema.TypeString,
|
||||
Computed: true,
|
||||
},
|
||||
"public_endpoint": {
|
||||
Type: schema.TypeString,
|
||||
Computed: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
"master_ipv4_cidr_block": {
|
||||
@ -651,6 +687,10 @@ func resourceContainerClusterCreate(d *schema.ResourceData, meta interface{}) er
|
||||
}
|
||||
}
|
||||
|
||||
if v, ok := d.GetOk("private_cluster_config"); ok {
|
||||
cluster.PrivateClusterConfig = expandPrivateClusterConfig(v)
|
||||
}
|
||||
|
||||
req := &containerBeta.CreateClusterRequest{
|
||||
Cluster: cluster,
|
||||
}
|
||||
@ -777,6 +817,10 @@ func resourceContainerClusterRead(d *schema.ResourceData, meta interface{}) erro
|
||||
return err
|
||||
}
|
||||
|
||||
if err := d.Set("private_cluster_config", flattenPrivateClusterConfig(cluster.PrivateClusterConfig)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
igUrls, err := getInstanceGroupUrlsFromManagerUrls(config, cluster.InstanceGroupUrls)
|
||||
if err != nil {
|
||||
return err
|
||||
@ -1513,6 +1557,20 @@ func expandNetworkPolicy(configured interface{}) *containerBeta.NetworkPolicy {
|
||||
return result
|
||||
}
|
||||
|
||||
func expandPrivateClusterConfig(configured interface{}) *containerBeta.PrivateClusterConfig {
|
||||
l := configured.([]interface{})
|
||||
if len(l) == 0 {
|
||||
return nil
|
||||
}
|
||||
config := l[0].(map[string]interface{})
|
||||
return &containerBeta.PrivateClusterConfig{
|
||||
EnablePrivateEndpoint: config["enable_private_endpoint"].(bool),
|
||||
EnablePrivateNodes: config["enable_private_nodes"].(bool),
|
||||
MasterIpv4CidrBlock: config["master_ipv4_cidr_block"].(string),
|
||||
ForceSendFields: []string{"EnablePrivateEndpoint", "EnablePrivateNodes", "MasterIpv4CidrBlock"},
|
||||
}
|
||||
}
|
||||
|
||||
func expandPodSecurityPolicyConfig(configured interface{}) *containerBeta.PodSecurityPolicyConfig {
|
||||
l := configured.([]interface{})
|
||||
if len(l) == 0 || l[0] == nil {
|
||||
@ -1594,6 +1652,21 @@ func flattenClusterNodePools(d *schema.ResourceData, config *Config, c []*contai
|
||||
return nodePools, nil
|
||||
}
|
||||
|
||||
func flattenPrivateClusterConfig(c *containerBeta.PrivateClusterConfig) []map[string]interface{} {
|
||||
if c == nil {
|
||||
return nil
|
||||
}
|
||||
return []map[string]interface{}{
|
||||
{
|
||||
"enable_private_endpoint": c.EnablePrivateEndpoint,
|
||||
"enable_private_nodes": c.EnablePrivateNodes,
|
||||
"master_ipv4_cidr_block": c.MasterIpv4CidrBlock,
|
||||
"private_endpoint": c.PrivateEndpoint,
|
||||
"public_endpoint": c.PublicEndpoint,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func flattenIPAllocationPolicy(c *containerBeta.IPAllocationPolicy) []map[string]interface{} {
|
||||
if c == nil {
|
||||
return nil
|
||||
|
@ -509,6 +509,28 @@ func TestAccContainerCluster_withPrivateCluster(t *testing.T) {
|
||||
},
|
||||
})
|
||||
}
|
||||
func TestAccContainerCluster_withPrivateClusterConfig(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
clusterName := fmt.Sprintf("cluster-test-%s", acctest.RandString(10))
|
||||
|
||||
resource.Test(t, resource.TestCase{
|
||||
PreCheck: func() { testAccPreCheck(t) },
|
||||
Providers: testAccProviders,
|
||||
CheckDestroy: testAccCheckContainerClusterDestroy,
|
||||
Steps: []resource.TestStep{
|
||||
{
|
||||
Config: testAccContainerCluster_withPrivateClusterConfig(clusterName),
|
||||
},
|
||||
{
|
||||
ResourceName: "google_container_cluster.with_private_cluster",
|
||||
ImportStateIdPrefix: "us-central1-a/",
|
||||
ImportState: true,
|
||||
ImportStateVerify: true,
|
||||
},
|
||||
},
|
||||
})
|
||||
}
|
||||
func TestAccContainerCluster_withLegacyAbac(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
@ -2408,6 +2430,51 @@ resource "google_container_cluster" "with_private_cluster" {
|
||||
}
|
||||
}`, clusterName, clusterName)
|
||||
}
|
||||
func testAccContainerCluster_withPrivateClusterConfig(clusterName string) string {
|
||||
return fmt.Sprintf(`
|
||||
resource "google_compute_network" "container_network" {
|
||||
name = "container-net-%s"
|
||||
auto_create_subnetworks = false
|
||||
}
|
||||
|
||||
resource "google_compute_subnetwork" "container_subnetwork" {
|
||||
name = "${google_compute_network.container_network.name}"
|
||||
network = "${google_compute_network.container_network.name}"
|
||||
ip_cidr_range = "10.0.36.0/24"
|
||||
region = "us-central1"
|
||||
private_ip_google_access = true
|
||||
|
||||
secondary_ip_range {
|
||||
range_name = "pod"
|
||||
ip_cidr_range = "10.0.0.0/19"
|
||||
}
|
||||
|
||||
secondary_ip_range {
|
||||
range_name = "svc"
|
||||
ip_cidr_range = "10.0.32.0/22"
|
||||
}
|
||||
}
|
||||
|
||||
resource "google_container_cluster" "with_private_cluster" {
|
||||
name = "cluster-test-%s"
|
||||
zone = "us-central1-a"
|
||||
initial_node_count = 1
|
||||
|
||||
network = "${google_compute_network.container_network.name}"
|
||||
subnetwork = "${google_compute_subnetwork.container_subnetwork.name}"
|
||||
|
||||
private_cluster_config {
|
||||
enable_private_endpoint = true
|
||||
enable_private_nodes = true
|
||||
master_ipv4_cidr_block = "10.42.0.0/28"
|
||||
}
|
||||
master_authorized_networks_config { cidr_blocks = [] }
|
||||
ip_allocation_policy {
|
||||
cluster_secondary_range_name = "${google_compute_subnetwork.container_subnetwork.secondary_ip_range.0.range_name}"
|
||||
services_secondary_range_name = "${google_compute_subnetwork.container_subnetwork.secondary_ip_range.1.range_name}"
|
||||
}
|
||||
}`, clusterName, clusterName)
|
||||
}
|
||||
func testAccContainerCluster_sharedVpc(org, billingId, projectName, name string) string {
|
||||
return fmt.Sprintf(`
|
||||
resource "google_project" "host_project" {
|
||||
|
Loading…
Reference in New Issue
Block a user