Skip to content

Commit e455cc2

Browse files
authored
TKE needs (#543)
tencentcloud_kubernetes_cluster add new argument
1 parent 1184a53 commit e455cc2

15 files changed

+267
-38
lines changed

CHANGELOG.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,21 @@
11
## 1.46.2 (Unreleased)
2+
23
ENHANCEMENTS:
34

5+
* Resource: `tencentcloud_kubernetes_cluster` add new argument `kube_config`.
6+
* Resource: `tencentcloud_kubernetes_cluster` add value `tlinux2.4x86_64` with argument `cluster_os` to support linux OS system.
7+
* Resource: `tencentcloud_kubernetes_cluster` add new argument `mount_target` to support set disk mount path.
8+
* Resource: `tencentcloud_kubernetes_cluster` add new argument `docker_graph_path` to support set docker graph path.
9+
* Resource: `tencentcloud_clb_redirection` add new argument `delete_all_auto_rewirte` to delete all auto-associated redirection when destroying the resource.
10+
* Data Source: `tencentcloud_kubernetes_clusters` add new argument `kube_config`.
11+
* Data Source: `tencentcloud_availability_regions` support getting local region info by setting argument `name` with value `default`.
412
* Resource: `tencentcloud_kubernetes_scale_worker` add new argument `labels` to support scale worker labels.
513

14+
BUG FIXES:
15+
16+
* Resource: `tencentcloud_clb_redirection` fix inconsistent bugs when creating more than one auto redirection.
17+
* Resource: `tencentcloud_redis_instance` fix updating issue when redis `type_id` is set `5`.
18+
619
## 1.46.1 (October 29, 2020)
720

821
ENHANCEMENTS:

tencentcloud/data_source_tc_availability_regions.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,9 @@ func dataSourceTencentCloudAvailabilityRegionsRead(d *schema.ResourceData, meta
8585
if v, ok := d.GetOk("name"); ok {
8686
name = v.(string)
8787
}
88+
if name == "default" {
89+
name = meta.(*TencentCloudClient).apiV3Conn.Region
90+
}
8891
if v, ok := d.GetOkExists("include_unavailable"); ok {
8992
includeUnavailable = v.(bool)
9093
}

tencentcloud/data_source_tc_kubernetes_clusters.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ func tkeClusterInfo() map[string]*schema.Schema {
144144
Computed: true,
145145
Description: "Cluster kube-proxy mode.",
146146
},
147+
147148
"service_cidr": {
148149
Type: schema.TypeString,
149150
Computed: true,
@@ -183,6 +184,11 @@ func tkeClusterInfo() map[string]*schema.Schema {
183184
Computed: true,
184185
Description: "Tags of the cluster.",
185186
},
187+
"kube_config": {
188+
Type: schema.TypeString,
189+
Computed: true,
190+
Description: "kubernetes config.",
191+
},
186192
}
187193

188194
for k, v := range tkeSecurityInfo() {
@@ -367,6 +373,16 @@ LOOP:
367373
infoMap["pgw_endpoint"] = emptyStrFunc(securityRet.Response.PgwEndpoint)
368374
infoMap["security_policy"] = policies
369375

376+
config, err := service.DescribeClusterConfig(ctx, info.ClusterId)
377+
if err != nil {
378+
config, err = service.DescribeClusterConfig(ctx, info.ClusterId)
379+
}
380+
if err != nil {
381+
log.Printf("[CRITAL]%s tencentcloud_kubernetes_clusters DescribeClusterInstances fail, reason:%s\n ", logId, err.Error())
382+
return err
383+
}
384+
385+
infoMap["kube_config"] = config
370386
list = append(list, infoMap)
371387
}
372388

tencentcloud/extension_tke.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,16 @@ const (
55
TKE_CLUSTER_OS_CENTOS76 = "centos7.6x86_64"
66
TKE_CLUSTER_OS_UBUNTU16 = "ubuntu16.04.1 LTSx86_64"
77
TKE_CLUSTER_OS_UBUNTU18 = "ubuntu18.04.1 LTSx86_64"
8+
TKE_CLUSTER_OS_LINUX24 = "tlinux2.4x86_64"
89
)
910

10-
var TKE_CLUSTER_OS = []string{TKE_CLUSTER_OS_CENTOS72, TKE_CLUSTER_OS_CENTOS76, TKE_CLUSTER_OS_UBUNTU16, TKE_CLUSTER_OS_UBUNTU18}
11+
var TKE_CLUSTER_OS = []string{TKE_CLUSTER_OS_CENTOS72, TKE_CLUSTER_OS_CENTOS76, TKE_CLUSTER_OS_UBUNTU16, TKE_CLUSTER_OS_UBUNTU18, TKE_CLUSTER_OS_LINUX24}
1112

1213
var tkeClusterOsMap = map[string]string{TKE_CLUSTER_OS_CENTOS72: TKE_CLUSTER_OS_CENTOS72,
1314
TKE_CLUSTER_OS_CENTOS76: "centos7.6.0_x64",
1415
TKE_CLUSTER_OS_UBUNTU16: TKE_CLUSTER_OS_UBUNTU16,
1516
TKE_CLUSTER_OS_UBUNTU18: "ubuntu18.04.1x86_64",
17+
TKE_CLUSTER_OS_LINUX24: "tlinux2.4x86_64",
1618
}
1719

1820
func tkeToShowClusterOs(apiOs string) string {

tencentcloud/resource_tc_clb_listener_rule.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,9 @@ func resourceTencentCloudClbListenerRuleCreate(d *schema.ResourceData, meta inte
197197
if e != nil {
198198
return retryError(e)
199199
}
200-
protocol = *(instance.Protocol)
200+
if instance != nil {
201+
protocol = *(instance.Protocol)
202+
}
201203
return nil
202204
})
203205
if err != nil {

tencentcloud/resource_tc_clb_redirection.go

Lines changed: 62 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ func resourceTencentCloudClbRedirection() *schema.Resource {
5252
return &schema.Resource{
5353
Create: resourceTencentCloudClbRedirectionCreate,
5454
Read: resourceTencentCloudClbRedirectionRead,
55+
Update: resourceTencentCloudClbRedirectionUpdate,
5556
Delete: resourceTencentCloudClbRedirectionDelete,
5657
Importer: &schema.ResourceImporter{
5758
State: schema.ImportStatePassthrough,
@@ -98,6 +99,12 @@ func resourceTencentCloudClbRedirection() *schema.Resource {
9899
Optional: true,
99100
Description: "Indicates whether automatic forwarding is enable, default is false. If enabled, the source listener and location should be empty, the target listener must be https protocol and port is 443.",
100101
},
102+
"delete_all_auto_rewrite": {
103+
Type: schema.TypeBool,
104+
Default: false,
105+
Optional: true,
106+
Description: "Indicates whether delete all auto redirection. Default is false. It will take effect only when this redirection is auto-rewrite and this auto-rewrite auto redirected more than one rules. All the auto-rewrite relations will be deleted when this parameter set true.",
107+
},
101108
},
102109
}
103110
}
@@ -333,6 +340,13 @@ func resourceTencentCloudClbRedirectionRead(d *schema.ResourceData, meta interfa
333340
return nil
334341
}
335342

343+
func resourceTencentCloudClbRedirectionUpdate(d *schema.ResourceData, meta interface{}) error {
344+
defer logElapsed("resource.tencentcloud_clb_redirection.update")()
345+
defer inconsistentCheck(d, meta)()
346+
// this nil update method works for the only filed `delete_all_auto_rewrite`
347+
return resourceTencentCloudClbRedirectionRead(d, meta)
348+
}
349+
336350
func resourceTencentCloudClbRedirectionDelete(d *schema.ResourceData, meta interface{}) error {
337351
defer logElapsed("resource.tencentcloud_clb_redirection.delete")()
338352

@@ -342,20 +356,58 @@ func resourceTencentCloudClbRedirectionDelete(d *schema.ResourceData, meta inter
342356
logId := getLogId(contextNil)
343357
ctx := context.WithValue(context.TODO(), logIdKey, logId)
344358

345-
clbId := d.Id()
359+
id := d.Id()
346360
clbService := ClbService{
347361
client: meta.(*TencentCloudClient).apiV3Conn,
348362
}
349-
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
350-
e := clbService.DeleteRedirectionById(ctx, clbId)
351-
if e != nil {
352-
return retryError(e)
363+
364+
deleteAll := d.Get("delete_all_auto_rewrite").(bool)
365+
isAutoRewrite := d.Get("is_auto_rewrite").(bool)
366+
if deleteAll && isAutoRewrite {
367+
//delete all the auto rewrite
368+
var rewrites []*map[string]string
369+
err := resource.Retry(readRetryTimeout, func() *resource.RetryError {
370+
result, inErr := clbService.DescribeAllAutoRedirections(ctx, id)
371+
if inErr != nil {
372+
return retryError(inErr)
373+
}
374+
rewrites = result
375+
return nil
376+
})
377+
if err != nil {
378+
log.Printf("[CRITAL]%s delete CLB redirection failed, reason:%+v", logId, err)
379+
return err
380+
}
381+
382+
for _, rewrite := range rewrites {
383+
if rewrite == nil {
384+
continue
385+
}
386+
rewriteId := (*rewrite)["source_rule_id"] + FILED_SP + (*rewrite)["target_rule_id"] + FILED_SP + (*rewrite)["source_listener_id"] + FILED_SP + (*rewrite)["target_listener_id"] + FILED_SP + (*rewrite)["clb_id"]
387+
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
388+
e := clbService.DeleteRedirectionById(ctx, rewriteId)
389+
if e != nil {
390+
return retryError(e)
391+
}
392+
return nil
393+
})
394+
if err != nil {
395+
log.Printf("[CRITAL]%s delete CLB redirection failed, reason:%+v", logId, err)
396+
return err
397+
}
398+
}
399+
} else {
400+
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
401+
e := clbService.DeleteRedirectionById(ctx, id)
402+
if e != nil {
403+
return retryError(e)
404+
}
405+
return nil
406+
})
407+
if err != nil {
408+
log.Printf("[CRITAL]%s delete CLB redirection failed, reason:%+v", logId, err)
409+
return err
353410
}
354-
return nil
355-
})
356-
if err != nil {
357-
log.Printf("[CRITAL]%s delete CLB redirection failed, reason:%+v", logId, err)
358-
return err
359411
}
360412
return nil
361413
}

tencentcloud/resource_tc_kubernetes_cluster.go

Lines changed: 50 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -471,11 +471,10 @@ func resourceTencentCloudTkeCluster() *schema.Resource {
471471
Description: "Description of the cluster.",
472472
},
473473
"cluster_os": {
474-
Type: schema.TypeString,
475-
ForceNew: true,
476-
Optional: true,
477-
Default: TKE_CLUSTER_OS_UBUNTU16,
478-
ValidateFunc: validateAllowedStringValue(TKE_CLUSTER_OS),
474+
Type: schema.TypeString,
475+
ForceNew: true,
476+
Optional: true,
477+
Default: TKE_CLUSTER_OS_UBUNTU16,
479478
Description: "Operating system of the cluster, the available values include: '" + strings.Join(TKE_CLUSTER_OS, "','") +
480479
"'. Default is '" + TKE_CLUSTER_OS_UBUNTU16 + "'.",
481480
},
@@ -517,7 +516,7 @@ func resourceTencentCloudTkeCluster() *schema.Resource {
517516
ForceNew: true,
518517
Optional: true,
519518
Default: true,
520-
Description: "Indicates whether ipvs is enabled. Default is true.",
519+
Description: "Indicates whether `ipvs` is enabled. Default is true. False means `iptables` is enabled.",
521520
},
522521
"cluster_as_enabled": {
523522
Type: schema.TypeBool,
@@ -588,10 +587,9 @@ func resourceTencentCloudTkeCluster() *schema.Resource {
588587
Description: "Indicates whether cluster deletion protection is enabled. Default is false.",
589588
},
590589
"kube_proxy_mode": {
591-
Type: schema.TypeString,
592-
Optional: true,
593-
Default: "",
594-
ValidateFunc: validateAllowedStringValue(TKE_CLUSTER_KUBE_PROXY_MODE),
590+
Type: schema.TypeString,
591+
Optional: true,
592+
Default: "",
595593
Description: "Cluster kube-proxy mode, the available values include: 'kube-proxy-bpf'. Default is not set." +
596594
"When set to kube-proxy-bpf, cluster version greater than 1.14 and with TKE-optimized kernel is required.",
597595
},
@@ -821,13 +819,31 @@ func resourceTencentCloudTkeCluster() *schema.Resource {
821819
ForceNew: true,
822820
Description: "Labels of tke cluster nodes.",
823821
},
822+
"mount_target": {
823+
Type: schema.TypeString,
824+
Optional: true,
825+
ForceNew: true,
826+
Description: "Mount target. Default is not mounting.",
827+
},
828+
"docker_graph_path": {
829+
Type: schema.TypeString,
830+
Optional: true,
831+
ForceNew: true,
832+
Default: "/var/lib/docker",
833+
Description: "Docker graph path. Default is `/var/lib/docker`.",
834+
},
824835
"extra_args": {
825836
Type: schema.TypeList,
826837
Optional: true,
827838
ForceNew: true,
828839
Elem: &schema.Schema{Type: schema.TypeString},
829840
Description: "Custom parameter information related to the node.",
830841
},
842+
"kube_config": {
843+
Type: schema.TypeString,
844+
Computed: true,
845+
Description: "kubernetes config.",
846+
},
831847
}
832848

833849
for k, v := range tkeSecurityInfo() {
@@ -1238,6 +1254,13 @@ func resourceTencentCloudTkeClusterCreate(d *schema.ResourceData, meta interface
12381254
}
12391255
}
12401256

1257+
if temp, ok := d.GetOk("docker_graph_path"); ok {
1258+
iAdvanced.DockerGraphPath = temp.(string)
1259+
}
1260+
if temp, ok := d.GetOk("mount_target"); ok {
1261+
iAdvanced.MountTarget = temp.(string)
1262+
}
1263+
12411264
service := TkeService{client: meta.(*TencentCloudClient).apiV3Conn}
12421265

12431266
id, err := service.CreateCluster(ctx, basic, advanced, cvms, iAdvanced, cidrSet, tags)
@@ -1417,6 +1440,23 @@ func resourceTencentCloudTkeClusterRead(d *schema.ResourceData, meta interface{}
14171440
_ = d.Set("cluster_node_num", info.ClusterNodeNum)
14181441
_ = d.Set("tags", info.Tags)
14191442

1443+
config, err := service.DescribeClusterConfig(ctx, d.Id())
1444+
if err != nil {
1445+
err = resource.Retry(readRetryTimeout, func() *resource.RetryError {
1446+
config, err = service.DescribeClusterConfig(ctx, d.Id())
1447+
if err != nil {
1448+
return retryError(err)
1449+
}
1450+
return nil
1451+
})
1452+
}
1453+
1454+
if err != nil {
1455+
return nil
1456+
}
1457+
1458+
_ = d.Set("kube_config", config)
1459+
14201460
_, workers, err := service.DescribeClusterInstances(ctx, d.Id())
14211461
if err != nil {
14221462
err = resource.Retry(10*readRetryTimeout, func() *resource.RetryError {

tencentcloud/resource_tc_postgresql_instance.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,8 +240,10 @@ func resourceTencentCloudPostgresqlInstanceCreate(d *schema.ResourceData, meta i
240240
return outErr
241241
}
242242

243+
d.SetId(instanceId)
244+
243245
//check creation done
244-
err := resource.Retry(readRetryTimeout, func() *resource.RetryError {
246+
err := resource.Retry(5*readRetryTimeout, func() *resource.RetryError {
245247
instance, has, err := postgresqlService.DescribePostgresqlInstanceById(ctx, instanceId)
246248
if err != nil {
247249
return retryError(err)
@@ -258,7 +260,6 @@ func resourceTencentCloudPostgresqlInstanceCreate(d *schema.ResourceData, meta i
258260
if err != nil {
259261
return err
260262
}
261-
d.SetId(instanceId)
262263

263264
var (
264265
password = d.Get("root_password").(string)

tencentcloud/resource_tc_redis_instance.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -532,7 +532,9 @@ func resourceTencentCloudRedisInstanceUpdate(d *schema.ResourceData, meta interf
532532
if newMemSize < 1 {
533533
return fmt.Errorf("redis mem_size value cannot be set to less than 1")
534534
}
535-
_, err := redisService.UpgradeInstance(ctx, id, int64(newMemSize))
535+
redisShardNum := d.Get("redis_shard_num").(int)
536+
redisReplicasNum := d.Get("redis_replicas_num").(int)
537+
_, err := redisService.UpgradeInstance(ctx, id, int64(newMemSize), int64(redisShardNum), int64(redisReplicasNum))
536538

537539
if err != nil {
538540
log.Printf("[CRITAL]%s redis update mem size error, reason:%s\n", logId, err.Error())

0 commit comments

Comments
 (0)