diff --git a/.changelog/2949.txt b/.changelog/2949.txt new file mode 100644 index 0000000000..0d3c22ae9e --- /dev/null +++ b/.changelog/2949.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/tencentcloud_kubernetes_cluster: support set `instance_delete_mode` +``` \ No newline at end of file diff --git a/tencentcloud/services/tke/resource_tc_kubernetes_cluster.go b/tencentcloud/services/tke/resource_tc_kubernetes_cluster.go index 55cb807ddc..054f958e8d 100644 --- a/tencentcloud/services/tke/resource_tc_kubernetes_cluster.go +++ b/tencentcloud/services/tke/resource_tc_kubernetes_cluster.go @@ -1325,6 +1325,12 @@ func ResourceTencentCloudKubernetesCluster() *schema.Resource { Optional: true, Description: "CDC ID.", }, + + "instance_delete_mode": { + Type: schema.TypeString, + Optional: true, + Description: "The strategy for deleting cluster instances: terminate (destroy instances, only support pay as you go cloud host instances) retain (remove only, keep instances), Default is terminate.", + }, }, } } @@ -1945,6 +1951,10 @@ func resourceTencentCloudKubernetesClusterDelete(d *schema.ResourceData, meta in request.ClusterId = helper.String(clusterId) instanceDeleteMode := "terminate" + if v, ok := d.GetOk("instance_delete_mode"); ok { + instanceDeleteMode = v.(string) + } + request.InstanceDeleteMode = &instanceDeleteMode if v, ok := d.GetOk("resource_delete_options"); ok { diff --git a/tencentcloud/services/tke/resource_tc_kubernetes_cluster.md b/tencentcloud/services/tke/resource_tc_kubernetes_cluster.md index d73252dd17..d6e43ee1e1 100644 --- a/tencentcloud/services/tke/resource_tc_kubernetes_cluster.md +++ b/tencentcloud/services/tke/resource_tc_kubernetes_cluster.md @@ -5,6 +5,8 @@ Provide a resource to create a kubernetes cluster. ~> **NOTE:** We recommend this usage that uses the `tencentcloud_kubernetes_cluster` resource to create a cluster without any `worker_config`, then adds nodes by the `tencentcloud_kubernetes_node_pool` resource. It's more flexible than managing worker config directly with `tencentcloud_kubernetes_cluster`, `tencentcloud_kubernetes_scale_worker`, or existing node management of `tencentcloud_kubernetes_attachment`. The reason is that `worker_config` is unchangeable and may cause the whole cluster resource to `ForceNew`. +~> **NOTE:** Executing `terraform destroy` to destroy the resource will default to deleting the node resource, If it is necessary to preserve node instance resources, Please set `instance_delete_mode` to `retain`. + Example Usage Create a basic cluster with two worker nodes @@ -397,7 +399,6 @@ resource "tencentcloud_kubernetes_cluster_endpoint" "example" { tencentcloud_kubernetes_node_pool.example ] } - ```` Use Kubelet @@ -699,6 +700,7 @@ resource "tencentcloud_kubernetes_cluster" "test_node_pool_global_config" { ``` Using VPC-CNI network type + ```hcl variable "availability_zone" { default = "ap-guangzhou-1" @@ -756,6 +758,7 @@ resource "tencentcloud_kubernetes_cluster" "managed_cluster" { ``` Using ops options + ``` resource "tencentcloud_kubernetes_cluster" "managed_cluster" { # ...your basic fields @@ -868,5 +871,5 @@ Import tke cluster can be imported, e.g. ``` -$ terraform import tencentcloud_kubernetes_cluster.test cls-xxx +$ terraform import tencentcloud_kubernetes_cluster.example cls-n2h4jbtk ``` \ No newline at end of file diff --git a/website/docs/r/kubernetes_cluster.html.markdown b/website/docs/r/kubernetes_cluster.html.markdown index 5da4e8eba4..07edbc6348 100644 --- a/website/docs/r/kubernetes_cluster.html.markdown +++ b/website/docs/r/kubernetes_cluster.html.markdown @@ -16,6 +16,8 @@ Provide a resource to create a kubernetes cluster. ~> **NOTE:** We recommend this usage that uses the `tencentcloud_kubernetes_cluster` resource to create a cluster without any `worker_config`, then adds nodes by the `tencentcloud_kubernetes_node_pool` resource. It's more flexible than managing worker config directly with `tencentcloud_kubernetes_cluster`, `tencentcloud_kubernetes_scale_worker`, or existing node management of `tencentcloud_kubernetes_attachment`. The reason is that `worker_config` is unchangeable and may cause the whole cluster resource to `ForceNew`. +~> **NOTE:** Executing `terraform destroy` to destroy the resource will default to deleting the node resource, If it is necessary to preserve node instance resources, Please set `instance_delete_mode` to `retain`. + ## Example Usage ### Create a basic cluster with two worker nodes @@ -917,6 +919,7 @@ The following arguments are supported: * `globe_desired_pod_num` - (Optional, Int, ForceNew) Indicate to set desired pod number in node. valid when enable_customized_pod_cidr=true, and it takes effect for all nodes. * `ignore_cluster_cidr_conflict` - (Optional, Bool, ForceNew) Indicates whether to ignore the cluster cidr conflict error. Default is false. * `ignore_service_cidr_conflict` - (Optional, Bool, ForceNew) Indicates whether to ignore the service cidr conflict error. Only valid in `VPC-CNI` mode. +* `instance_delete_mode` - (Optional, String) The strategy for deleting cluster instances: terminate (destroy instances, only support pay as you go cloud host instances) retain (remove only, keep instances), Default is terminate. * `is_non_static_ip_mode` - (Optional, Bool, ForceNew) Indicates whether non-static ip mode is enabled. Default is false. * `kube_proxy_mode` - (Optional, String) Cluster kube-proxy mode, the available values include: 'kube-proxy-bpf'. Default is not set.When set to kube-proxy-bpf, cluster version greater than 1.14 and with Tencent Linux 2.4 is required. * `labels` - (Optional, Map, ForceNew) Labels of tke cluster nodes. @@ -1116,6 +1119,6 @@ In addition to all arguments above, the following attributes are exported: tke cluster can be imported, e.g. ``` -$ terraform import tencentcloud_kubernetes_cluster.test cls-xxx +$ terraform import tencentcloud_kubernetes_cluster.example cls-n2h4jbtk ```