Skip to content

Commit 5cfb575

Browse files
authored
Merge pull request #1564 from xawei/feat/tke-endpint-domain
feat: support setting tke cluster internet/intranet domain
2 parents 2bd6533 + 0b81cc4 commit 5cfb575

8 files changed

+224
-135
lines changed

.changelog/1564.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
```release-note:enhancement
2+
resource/tencentcloud_kubernetes_cluster: support setting tke cluster internet/intranet domain
3+
```
4+
```release-note:enhancement
5+
resource/tencentcloud_kubernetes_cluster_endpoint: support setting tke cluster internet/intranet domain
6+
```

tencentcloud/extension_tke.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,3 +124,11 @@ var TKE_ADDON_DEFAULT_VALUES_KEY = []string{
124124
const (
125125
InstallSecurityAgentCommandId = "cmd-d8jj2skv"
126126
)
127+
128+
const (
129+
TKE_CLUSTER_INTERNET = true
130+
TKE_CLUSTER_INTRANET = false
131+
132+
TKE_CLUSTER_OPEN_ACCESS = true
133+
TKE_CLUSTER_CLOSE_ACCESS = false
134+
)

tencentcloud/resource_tc_kubernetes_cluster.go

Lines changed: 45 additions & 120 deletions
Original file line numberDiff line numberDiff line change
@@ -1068,6 +1068,12 @@ func resourceTencentCloudTkeCluster() *schema.Resource {
10681068
" If this field is set 'true', the field below `worker_config` must be set." +
10691069
" Because only cluster with node is allowed enable access endpoint.",
10701070
},
1071+
"cluster_internet_domain": {
1072+
Type: schema.TypeString,
1073+
Optional: true,
1074+
Description: "Domain name for cluster Kube-apiserver internet access." +
1075+
" Be careful if you modify value of this parameter, the cluster_external_endpoint value may be changed automatically too.",
1076+
},
10711077
"cluster_intranet": {
10721078
Type: schema.TypeBool,
10731079
Default: false,
@@ -1076,6 +1082,12 @@ func resourceTencentCloudTkeCluster() *schema.Resource {
10761082
" If this field is set 'true', the field below `worker_config` must be set." +
10771083
" Because only cluster with node is allowed enable access endpoint.",
10781084
},
1085+
"cluster_intranet_domain": {
1086+
Type: schema.TypeString,
1087+
Optional: true,
1088+
Description: "Domain name for cluster Kube-apiserver intranet access." +
1089+
" Be careful if you modify value of this parameter, the pgw_endpoint value may be changed automatically too.",
1090+
},
10791091
"cluster_internet_security_group": {
10801092
Type: schema.TypeString,
10811093
Optional: true,
@@ -1902,6 +1914,8 @@ func resourceTencentCloudTkeClusterCreate(d *schema.ResourceData, meta interface
19021914
clusterIntranet = d.Get("cluster_intranet").(bool)
19031915
intranetSubnetId = d.Get("cluster_intranet_subnet_id").(string)
19041916
clusterInternetSecurityGroup = d.Get("cluster_internet_security_group").(string)
1917+
clusterInternetDomain = d.Get("cluster_internet_domain").(string)
1918+
clusterIntranetDomain = d.Get("cluster_intranet_domain").(string)
19051919
)
19061920

19071921
clusterDeployType := d.Get("cluster_deploy_type").(string)
@@ -2223,7 +2237,7 @@ func resourceTencentCloudTkeClusterCreate(d *schema.ResourceData, meta interface
22232237
//intranet
22242238
if clusterIntranet {
22252239
err = resource.Retry(writeRetryTimeout, func() *resource.RetryError {
2226-
inErr := service.CreateClusterEndpoint(ctx, id, intranetSubnetId, clusterInternetSecurityGroup, false)
2240+
inErr := service.CreateClusterEndpoint(ctx, id, intranetSubnetId, clusterInternetSecurityGroup, false, clusterIntranetDomain)
22272241
if inErr != nil {
22282242
return retryError(inErr)
22292243
}
@@ -2254,7 +2268,7 @@ func resourceTencentCloudTkeClusterCreate(d *schema.ResourceData, meta interface
22542268

22552269
if clusterInternet {
22562270
err = resource.Retry(writeRetryTimeout, func() *resource.RetryError {
2257-
inErr := service.CreateClusterEndpoint(ctx, id, "", clusterInternetSecurityGroup, true)
2271+
inErr := service.CreateClusterEndpoint(ctx, id, "", clusterInternetSecurityGroup, true, clusterInternetDomain)
22582272
if inErr != nil {
22592273
return retryError(inErr)
22602274
}
@@ -2599,6 +2613,8 @@ func resourceTencentCloudTkeClusterUpdate(d *schema.ResourceData, meta interface
25992613
clusterIntranet = d.Get("cluster_intranet").(bool)
26002614
intranetSubnetId = d.Get("cluster_intranet_subnet_id").(string)
26012615
clusterInternetSecurityGroup = d.Get("cluster_internet_security_group").(string)
2616+
clusterInternetDomain = d.Get("cluster_internet_domain").(string)
2617+
clusterIntranetDomain = d.Get("cluster_intranet_domain").(string)
26022618
)
26032619

26042620
if clusterIntranet && intranetSubnetId == "" {
@@ -2619,131 +2635,40 @@ func resourceTencentCloudTkeClusterUpdate(d *schema.ResourceData, meta interface
26192635
}
26202636

26212637
if d.HasChange("cluster_intranet") {
2622-
//open intranet
2623-
if clusterIntranet {
2624-
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
2625-
inErr := tkeService.CreateClusterEndpoint(ctx, id, intranetSubnetId, clusterInternetSecurityGroup, false)
2626-
if inErr != nil {
2627-
return retryError(inErr)
2628-
}
2629-
return nil
2630-
})
2631-
if err != nil {
2632-
return err
2633-
}
2634-
err = resource.Retry(2*readRetryTimeout, func() *resource.RetryError {
2635-
status, message, inErr := tkeService.DescribeClusterEndpointStatus(ctx, id, false)
2636-
if inErr != nil {
2637-
return retryError(inErr)
2638-
}
2639-
if status == TkeInternetStatusCreating {
2640-
return resource.RetryableError(
2641-
fmt.Errorf("%s create intranet cluster endpoint status still is %s", id, status))
2642-
}
2643-
if status == TkeInternetStatusNotfound || status == TkeInternetStatusCreated {
2644-
return nil
2645-
}
2646-
return resource.NonRetryableError(
2647-
fmt.Errorf("%s create intranet cluster endpoint error ,status is %s,message is %s", id, status, message))
2648-
})
2649-
if err != nil {
2650-
return err
2651-
}
2652-
//close
2653-
} else {
2654-
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
2655-
inErr := tkeService.DeleteClusterEndpoint(ctx, id, false)
2656-
if inErr != nil {
2657-
return retryError(inErr)
2658-
}
2659-
return nil
2660-
})
2661-
if err != nil {
2662-
return err
2663-
}
2664-
err = resource.Retry(2*readRetryTimeout, func() *resource.RetryError {
2665-
status, message, inErr := tkeService.DescribeClusterEndpointStatus(ctx, id, false)
2666-
if inErr != nil {
2667-
return retryError(inErr)
2668-
}
2669-
if status == TkeInternetStatusDeleting {
2670-
return resource.RetryableError(
2671-
fmt.Errorf("%s close cluster internet endpoint status still is %s", id, status))
2672-
}
2673-
if status == TkeInternetStatusNotfound || status == TkeInternetStatusDeleted || status == TkeInternetStatusCreated {
2674-
return nil
2675-
}
2676-
return resource.NonRetryableError(
2677-
fmt.Errorf("%s close cluster internet endpoint error ,status is %s,message is %s", id, status, message))
2678-
})
2679-
if err != nil {
2680-
return err
2681-
}
2638+
if err := ModifyClusterInternetOrIntranetAccess(ctx, d, &tkeService, TKE_CLUSTER_INTRANET, clusterIntranet, clusterInternetSecurityGroup, intranetSubnetId, clusterIntranetDomain); err != nil {
2639+
return err
26822640
}
26832641

26842642
d.SetPartial("cluster_intranet")
26852643
}
26862644

26872645
if d.HasChange("cluster_internet") {
2646+
if err := ModifyClusterInternetOrIntranetAccess(ctx, d, &tkeService, TKE_CLUSTER_INTERNET, clusterInternet, clusterInternetSecurityGroup, "", clusterInternetDomain); err != nil {
2647+
return err
2648+
}
2649+
}
26882650

2689-
if clusterInternet {
2690-
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
2691-
inErr := tkeService.CreateClusterEndpoint(ctx, id, "", clusterInternetSecurityGroup, true)
2692-
if inErr != nil {
2693-
return retryError(inErr)
2694-
}
2695-
return nil
2696-
})
2697-
if err != nil {
2698-
return err
2699-
}
2700-
err = resource.Retry(2*readRetryTimeout, func() *resource.RetryError {
2701-
status, message, inErr := tkeService.DescribeClusterEndpointStatus(ctx, id, true)
2702-
if inErr != nil {
2703-
return retryError(inErr)
2704-
}
2705-
if status == TkeInternetStatusCreating {
2706-
return resource.RetryableError(
2707-
fmt.Errorf("%s create cluster internet endpoint status still is %s", id, status))
2708-
}
2709-
if status == TkeInternetStatusNotfound || status == TkeInternetStatusCreated {
2710-
return nil
2711-
}
2712-
return resource.NonRetryableError(
2713-
fmt.Errorf("%s create cluster internet endpoint error ,status is %s,message is %s", id, status, message))
2714-
})
2715-
if err != nil {
2716-
return err
2717-
}
2718-
} else {
2719-
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
2720-
inErr := tkeService.DeleteClusterEndpoint(ctx, id, true)
2721-
if inErr != nil {
2722-
return retryError(inErr)
2723-
}
2724-
return nil
2725-
})
2726-
if err != nil {
2727-
return err
2728-
}
2729-
err = resource.Retry(2*readRetryTimeout, func() *resource.RetryError {
2730-
status, message, inErr := tkeService.DescribeClusterEndpointStatus(ctx, id, true)
2731-
if inErr != nil {
2732-
return retryError(inErr)
2733-
}
2734-
if status == TkeInternetStatusDeleting {
2735-
return resource.RetryableError(
2736-
fmt.Errorf("%s close cluster internet endpoint status still is %s", id, status))
2737-
}
2738-
if status == TkeInternetStatusNotfound || status == TkeInternetStatusDeleted || status == TkeInternetStatusCreated {
2739-
return nil
2740-
}
2741-
return resource.NonRetryableError(
2742-
fmt.Errorf("%s close cluster internet endpoint error ,status is %s,message is %s", id, status, message))
2743-
})
2744-
if err != nil {
2745-
return err
2746-
}
2651+
// situation when only domain changed
2652+
if !d.HasChange("cluster_intranet") && clusterIntranet && d.HasChange("cluster_intranet_domain") {
2653+
// recreate the cluster intranet endpoint using new domain
2654+
// first close
2655+
if err := ModifyClusterInternetOrIntranetAccess(ctx, d, &tkeService, TKE_CLUSTER_INTRANET, TKE_CLUSTER_CLOSE_ACCESS, clusterInternetSecurityGroup, intranetSubnetId, clusterIntranetDomain); err != nil {
2656+
return err
2657+
}
2658+
// then reopen
2659+
if err := ModifyClusterInternetOrIntranetAccess(ctx, d, &tkeService, TKE_CLUSTER_INTRANET, TKE_CLUSTER_OPEN_ACCESS, clusterInternetSecurityGroup, intranetSubnetId, clusterIntranetDomain); err != nil {
2660+
return err
2661+
}
2662+
}
2663+
if !d.HasChange("cluster_internet") && clusterInternet && d.HasChange("cluster_internet_domain") {
2664+
// recreate the cluster internet endpoint using new domain
2665+
// first close
2666+
if err := ModifyClusterInternetOrIntranetAccess(ctx, d, &tkeService, TKE_CLUSTER_INTERNET, TKE_CLUSTER_CLOSE_ACCESS, clusterInternetSecurityGroup, "", clusterInternetDomain); err != nil {
2667+
return err
2668+
}
2669+
// then reopen
2670+
if err := ModifyClusterInternetOrIntranetAccess(ctx, d, &tkeService, TKE_CLUSTER_INTERNET, TKE_CLUSTER_OPEN_ACCESS, clusterInternetSecurityGroup, "", clusterInternetDomain); err != nil {
2671+
return err
27472672
}
27482673
}
27492674

0 commit comments

Comments
 (0)