Skip to content

Commit 2388ef9

Browse files
committed
kubernetes supports internet and intranet.
1 parent 26b6809 commit 2388ef9

File tree

4 files changed

+40
-35
lines changed

4 files changed

+40
-35
lines changed

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
ENHANCEMENTS:
44

5-
* Resource: `tencentcloud_kubernetes_cluster` add new attribute `cluster_os_type`.
5+
* Resource: `tencentcloud_kubernetes_cluster` add new attributes `cluster_os_type`,`cluster_internet`,`cluster_intranet`,`managed_cluster_internet_security_policies` and `cluster_intranet_subnet_id`.
66

77
## 1.30.3 (February 24, 2020)
88

tencentcloud/resource_tc_kubernetes_cluster.go

Lines changed: 31 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -445,26 +445,27 @@ func resourceTencentCloudTkeCluster() *schema.Resource {
445445
Type: schema.TypeBool,
446446
Default: false,
447447
Optional: true,
448-
Description: "Open internet access or not",
448+
Description: "Open internet access or not.",
449449
},
450450
"cluster_intranet": {
451451
Type: schema.TypeBool,
452452
Default: false,
453453
Optional: true,
454-
Description: "Open intranet access or not",
454+
Description: "Open intranet access or not.",
455455
},
456456
"managed_cluster_internet_security_policies": {
457-
Type: schema.TypeList,
458-
//Computed: true,
459-
Optional: true,
460-
Elem: &schema.Schema{Type: schema.TypeString},
461-
Description: "Security policies for managed cluster internet, like:'192.168.1.0/24' or '113.116.51.27', '0.0.0.0/0' means all. This field can only set when field `cluster_deploy_type` is " +
462-
"'MANAGED_CLUSTER' and `cluster_internet` is true.If your set `cluster_internet` false, you should delete this field self",
457+
Type: schema.TypeList,
458+
Optional: true,
459+
Elem: &schema.Schema{Type: schema.TypeString},
460+
Description: "Security policies for managed cluster internet, like:'192.168.1.0/24' or '113.116.51.27', '0.0.0.0/0' means all." +
461+
" This field can only set when field `cluster_deploy_type` is 'MANAGED_CLUSTER' and `cluster_internet` is true." +
462+
" `managed_cluster_internet_security_policies` can not delete or empty once be set.",
463463
},
464464
"cluster_intranet_subnet_id": {
465-
Type: schema.TypeString,
466-
Optional: true,
467-
Description: "Subnet id who can access this independent cluster, this field must and can only set when `cluster_intranet` is true. once set can not modify.",
465+
Type: schema.TypeString,
466+
Optional: true,
467+
Description: "Subnet id who can access this independent cluster, this field must and can only set when `cluster_intranet` is true." +
468+
" `cluster_intranet_subnet_id` can not modify once be set.",
468469
},
469470
"project_id": {
470471
Type: schema.TypeInt,
@@ -1008,7 +1009,6 @@ func resourceTencentCloudTkeClusterCreate(d *schema.ResourceData, meta interface
10081009
}
10091010
}
10101011

1011-
10121012
//TKE_DEPLOY_TYPE_MANAGED Open the internet
10131013
if clusterDeployType == TKE_DEPLOY_TYPE_MANAGED && clusterInternet {
10141014
err = resource.Retry(writeRetryTimeout, func() *resource.RetryError {
@@ -1200,7 +1200,7 @@ func resourceTencentCloudTkeClusterRead(d *schema.ResourceData, meta interface{}
12001200
_ = d.Set("cluster_internet", true)
12011201
}
12021202

1203-
if emptyStrFunc(securityRet.Response.PgwEndpoint) == ""{
1203+
if emptyStrFunc(securityRet.Response.PgwEndpoint) == "" {
12041204
_ = d.Set("cluster_intranet", false)
12051205
} else {
12061206
_ = d.Set("cluster_intranet", true)
@@ -1244,10 +1244,10 @@ func resourceTencentCloudTkeClusterUpdate(d *schema.ResourceData, meta interface
12441244
}
12451245
clusterDeployType := d.Get("cluster_deploy_type").(string)
12461246

1247-
if d.HasChange("cluster_intranet_subnet_id"){
1248-
oldKey,newKey:=d.GetChange("cluster_intranet_subnet_id")
1249-
if (oldKey.(string) !="" && newKey.(string)=="") || (oldKey.(string) !="" && newKey.(string)!=""){
1250-
return fmt.Errorf("`cluster_intranet_subnet_id` can not modify")
1247+
if d.HasChange("cluster_intranet_subnet_id") {
1248+
oldKey, newKey := d.GetChange("cluster_intranet_subnet_id")
1249+
if (oldKey.(string) != "" && newKey.(string) == "") || (oldKey.(string) != "" && newKey.(string) != "") {
1250+
return fmt.Errorf("`cluster_intranet_subnet_id` can not modify once be set")
12511251
}
12521252
}
12531253
if clusterIntranet && intranetSubnetId == "" {
@@ -1260,9 +1260,9 @@ func resourceTencentCloudTkeClusterUpdate(d *schema.ResourceData, meta interface
12601260
}
12611261
}
12621262

1263-
if d.HasChange("cluster_intranet"){
1263+
if d.HasChange("cluster_intranet") {
12641264
//open intranet
1265-
if clusterIntranet{
1265+
if clusterIntranet {
12661266
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
12671267
inErr := tkeService.CreateClusterEndpoint(ctx, id, intranetSubnetId, false)
12681268
if inErr != nil {
@@ -1291,10 +1291,10 @@ func resourceTencentCloudTkeClusterUpdate(d *schema.ResourceData, meta interface
12911291
if err != nil {
12921292
return err
12931293
}
1294-
//close
1295-
}else{
1294+
//close
1295+
} else {
12961296
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
1297-
inErr := tkeService.DeleteClusterEndpoint(ctx, id,false)
1297+
inErr := tkeService.DeleteClusterEndpoint(ctx, id, false)
12981298
if inErr != nil {
12991299
return retryError(inErr)
13001300
}
@@ -1312,7 +1312,7 @@ func resourceTencentCloudTkeClusterUpdate(d *schema.ResourceData, meta interface
13121312
return resource.RetryableError(
13131313
fmt.Errorf("%s close cluster internet endpoint status still is %s", id, status))
13141314
}
1315-
if status == TkeInternetStatusNotfound || status == TkeInternetStatusDeleted {
1315+
if status == TkeInternetStatusNotfound || status == TkeInternetStatusDeleted || status == TkeInternetStatusCreated {
13161316
return nil
13171317
}
13181318
return resource.NonRetryableError(
@@ -1326,8 +1326,7 @@ func resourceTencentCloudTkeClusterUpdate(d *schema.ResourceData, meta interface
13261326
d.SetPartial("cluster_intranet")
13271327
}
13281328

1329-
1330-
if d.HasChange("cluster_internet"){
1329+
if d.HasChange("cluster_internet") {
13311330

13321331
//TKE_DEPLOY_TYPE_INDEPENDENT open internet
13331332
if clusterDeployType == TKE_DEPLOY_TYPE_INDEPENDENT && clusterInternet {
@@ -1364,7 +1363,7 @@ func resourceTencentCloudTkeClusterUpdate(d *schema.ResourceData, meta interface
13641363
//TKE_DEPLOY_TYPE_INDEPENDENT close internet
13651364
if clusterDeployType == TKE_DEPLOY_TYPE_INDEPENDENT && !clusterInternet {
13661365
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
1367-
inErr := tkeService.DeleteClusterEndpoint(ctx, id,true)
1366+
inErr := tkeService.DeleteClusterEndpoint(ctx, id, true)
13681367
if inErr != nil {
13691368
return retryError(inErr)
13701369
}
@@ -1382,7 +1381,7 @@ func resourceTencentCloudTkeClusterUpdate(d *schema.ResourceData, meta interface
13821381
return resource.RetryableError(
13831382
fmt.Errorf("%s close cluster internet endpoint status still is %s", id, status))
13841383
}
1385-
if status == TkeInternetStatusNotfound || status == TkeInternetStatusDeleted {
1384+
if status == TkeInternetStatusNotfound || status == TkeInternetStatusDeleted || status == TkeInternetStatusCreated {
13861385
return nil
13871386
}
13881387
return resource.NonRetryableError(
@@ -1446,7 +1445,7 @@ func resourceTencentCloudTkeClusterUpdate(d *schema.ResourceData, meta interface
14461445
return resource.RetryableError(
14471446
fmt.Errorf("%s close cluster internet endpoint status still is %s", id, status))
14481447
}
1449-
if status == TkeInternetStatusNotfound || status == TkeInternetStatusDeleted {
1448+
if status == TkeInternetStatusNotfound || status == TkeInternetStatusDeleted || status == TkeInternetStatusCreated {
14501449
return nil
14511450
}
14521451
return resource.NonRetryableError(
@@ -1459,18 +1458,17 @@ func resourceTencentCloudTkeClusterUpdate(d *schema.ResourceData, meta interface
14591458
d.SetPartial("cluster_internet")
14601459
}
14611460

1462-
1463-
if clusterInternet{
1464-
if !d.HasChange("cluster_internet") && d.HasChange("managed_cluster_internet_security_policies"){
1461+
if clusterInternet {
1462+
if !d.HasChange("cluster_internet") && d.HasChange("managed_cluster_internet_security_policies") {
14651463
if len(securityPolicies) == 0 {
1466-
return fmt.Errorf("`managed_cluster_internet_security_policies` can not delete once be setted")
1464+
return fmt.Errorf("`managed_cluster_internet_security_policies` can not delete or empty once be setted")
14671465
}
14681466
if err := tkeService.ModifyClusterEndpointSP(ctx, id, securityPolicies); err != nil {
14691467
return err
14701468
}
14711469
d.SetPartial("managed_cluster_internet_security_policies")
14721470
}
1473-
}else{
1471+
} else {
14741472
d.SetPartial("managed_cluster_internet_security_policies")
14751473
}
14761474
d.Partial(false)

tencentcloud/resource_tc_kubernetes_cluster_test.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ func TestAccTencentCloudTkeResource(t *testing.T) {
3434
resource.TestCheckResourceAttrSet(testTkeClusterResourceKey, "user_name"),
3535
resource.TestCheckResourceAttrSet(testTkeClusterResourceKey, "password"),
3636
resource.TestCheckResourceAttr(testTkeClusterResourceKey, "tags.test", "test"),
37+
resource.TestCheckResourceAttr(testTkeClusterResourceKey, "security_policy.#", "2"),
38+
resource.TestCheckResourceAttrSet(testTkeClusterResourceKey, "cluster_external_endpoint"),
3739
),
3840
},
3941
{
@@ -155,7 +157,8 @@ func testAccTkeCluster(key, value string) string {
155157
cluster_name = "test"
156158
cluster_desc = "test cluster desc"
157159
cluster_max_service_num = 32
158-
160+
cluster_internet=true
161+
managed_cluster_internet_security_policies =["3.3.3.3","1.1.1.1"]
159162
worker_config {
160163
count = 1
161164
availability_zone = var.availability_zone

website/docs/r/kubernetes_cluster.html.markdown

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,9 @@ The following arguments are supported:
128128
* `vpc_id` - (Required, ForceNew) Vpc Id of the cluster.
129129
* `cluster_deploy_type` - (Optional, ForceNew) Deployment type of the cluster, the available values include: 'MANAGED_CLUSTER' and 'INDEPENDENT_CLUSTER', Default is 'MANAGED_CLUSTER'.
130130
* `cluster_desc` - (Optional, ForceNew) Description of the cluster.
131+
* `cluster_internet` - (Optional) Open internet access or not.
132+
* `cluster_intranet_subnet_id` - (Optional) Subnet id who can access this independent cluster, this field must and can only set when `cluster_intranet` is true. `cluster_intranet_subnet_id` can not modify once be set.
133+
* `cluster_intranet` - (Optional) Open intranet access or not.
131134
* `cluster_ipvs` - (Optional, ForceNew) Indicates whether ipvs is enabled. Default is true.
132135
* `cluster_max_pod_num` - (Optional, ForceNew) The maximum number of Pods per node in the cluster. Default is 256. Must be a multiple of 16 and large than 32.
133136
* `cluster_max_service_num` - (Optional, ForceNew) The maximum number of services in the cluster. Default is 256. Must be a multiple of 16.
@@ -137,6 +140,7 @@ The following arguments are supported:
137140
* `cluster_version` - (Optional, ForceNew) Version of the cluster, Default is '1.10.5'.
138141
* `container_runtime` - (Optional, ForceNew) Runtime type of the cluster, the available values include: 'docker' and 'containerd'. Default is 'docker'.
139142
* `ignore_cluster_cidr_conflict` - (Optional, ForceNew) Indicates whether to ignore the cluster cidr conflict error. Default is false.
143+
* `managed_cluster_internet_security_policies` - (Optional) Security policies for managed cluster internet, like:'192.168.1.0/24' or '113.116.51.27', '0.0.0.0/0' means all. This field can only set when field `cluster_deploy_type` is 'MANAGED_CLUSTER' and `cluster_internet` is true. `managed_cluster_internet_security_policies` can not delete or empty once be set.
140144
* `master_config` - (Optional, ForceNew) Deploy the machine configuration information of the 'MASTER_ETCD' service, and create <=7 units for common users.
141145
* `project_id` - (Optional, ForceNew) Project ID, default value is 0.
142146
* `tags` - (Optional) The tags of the cluster.

0 commit comments

Comments
 (0)