@@ -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 , false , 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 , true , 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 , false , false , clusterInternetSecurityGroup , intranetSubnetId , clusterIntranetDomain ); err != nil {
2656+ return err
2657+ }
2658+ // then reopen
2659+ if err := ModifyClusterInternetOrIntranetAccess (ctx , d , & tkeService , false , true , 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 , true , false , clusterInternetSecurityGroup , "" , clusterInternetDomain ); err != nil {
2667+ return err
2668+ }
2669+ // then reopen
2670+ if err := ModifyClusterInternetOrIntranetAccess (ctx , d , & tkeService , true , true , clusterInternetSecurityGroup , "" , clusterInternetDomain ); err != nil {
2671+ return err
27472672 }
27482673 }
27492674
0 commit comments