mirror of
https://github.com/letic/terraform-provider-google.git
synced 2024-07-09 11:38:29 +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
6f05ee3f72
commit
b08884f49e
|
@ -97,7 +97,6 @@ func resourceContainerCluster() *schema.Resource {
|
||||||
},
|
},
|
||||||
|
|
||||||
"region": {
|
"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,
|
Type: schema.TypeString,
|
||||||
Optional: true,
|
Optional: true,
|
||||||
Computed: true,
|
Computed: true,
|
||||||
|
@ -505,11 +504,48 @@ func resourceContainerCluster() *schema.Resource {
|
||||||
},
|
},
|
||||||
|
|
||||||
"private_cluster": {
|
"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.",
|
Deprecated: "Use private_cluster_config.enable_private_nodes instead.",
|
||||||
Default: false,
|
ConflictsWith: []string{"private_cluster_config"},
|
||||||
Type: schema.TypeBool,
|
Computed: true,
|
||||||
Optional: true,
|
Type: schema.TypeBool,
|
||||||
ForceNew: true,
|
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": {
|
"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{
|
req := &containerBeta.CreateClusterRequest{
|
||||||
Cluster: cluster,
|
Cluster: cluster,
|
||||||
}
|
}
|
||||||
|
@ -777,6 +817,10 @@ func resourceContainerClusterRead(d *schema.ResourceData, meta interface{}) erro
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if err := d.Set("private_cluster_config", flattenPrivateClusterConfig(cluster.PrivateClusterConfig)); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
igUrls, err := getInstanceGroupUrlsFromManagerUrls(config, cluster.InstanceGroupUrls)
|
igUrls, err := getInstanceGroupUrlsFromManagerUrls(config, cluster.InstanceGroupUrls)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -1513,6 +1557,20 @@ func expandNetworkPolicy(configured interface{}) *containerBeta.NetworkPolicy {
|
||||||
return result
|
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 {
|
func expandPodSecurityPolicyConfig(configured interface{}) *containerBeta.PodSecurityPolicyConfig {
|
||||||
l := configured.([]interface{})
|
l := configured.([]interface{})
|
||||||
if len(l) == 0 || l[0] == nil {
|
if len(l) == 0 || l[0] == nil {
|
||||||
|
@ -1594,6 +1652,21 @@ func flattenClusterNodePools(d *schema.ResourceData, config *Config, c []*contai
|
||||||
return nodePools, nil
|
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{} {
|
func flattenIPAllocationPolicy(c *containerBeta.IPAllocationPolicy) []map[string]interface{} {
|
||||||
if c == nil {
|
if c == nil {
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -512,6 +512,29 @@ 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) {
|
func TestAccContainerCluster_withLegacyAbac(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
|
@ -2478,6 +2501,52 @@ resource "google_container_cluster" "with_private_cluster" {
|
||||||
}`, clusterName, clusterName)
|
}`, 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 {
|
func testAccContainerCluster_sharedVpc(org, billingId, projectName, name string) string {
|
||||||
return fmt.Sprintf(`
|
return fmt.Sprintf(`
|
||||||
resource "google_project" "host_project" {
|
resource "google_project" "host_project" {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user