Skip to content

TKE needs #543

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 10 commits into from
Nov 5, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,21 @@
## 1.46.2 (Unreleased)

ENHANCEMENTS:

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

BUG FIXES:

* Resource: `tencentcloud_clb_redirection` fix inconsistent bugs when creating more than one auto redirection.
* Resource: `tencentcloud_redis_instance` fix updating issue when redis `type_id` is set `5`.

## 1.46.1 (October 29, 2020)

ENHANCEMENTS:
Expand Down
3 changes: 3 additions & 0 deletions tencentcloud/data_source_tc_availability_regions.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,9 @@ func dataSourceTencentCloudAvailabilityRegionsRead(d *schema.ResourceData, meta
if v, ok := d.GetOk("name"); ok {
name = v.(string)
}
if name == "default" {
name = meta.(*TencentCloudClient).apiV3Conn.Region
}
if v, ok := d.GetOkExists("include_unavailable"); ok {
includeUnavailable = v.(bool)
}
Expand Down
16 changes: 16 additions & 0 deletions tencentcloud/data_source_tc_kubernetes_clusters.go
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@ func tkeClusterInfo() map[string]*schema.Schema {
Computed: true,
Description: "Cluster kube-proxy mode.",
},

"service_cidr": {
Type: schema.TypeString,
Computed: true,
Expand Down Expand Up @@ -183,6 +184,11 @@ func tkeClusterInfo() map[string]*schema.Schema {
Computed: true,
Description: "Tags of the cluster.",
},
"kube_config": {
Type: schema.TypeString,
Computed: true,
Description: "kubernetes config.",
},
}

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

config, err := service.DescribeClusterConfig(ctx, info.ClusterId)
if err != nil {
config, err = service.DescribeClusterConfig(ctx, info.ClusterId)
}
if err != nil {
log.Printf("[CRITAL]%s tencentcloud_kubernetes_clusters DescribeClusterInstances fail, reason:%s\n ", logId, err.Error())
return err
}

infoMap["kube_config"] = config
list = append(list, infoMap)
}

Expand Down
4 changes: 3 additions & 1 deletion tencentcloud/extension_tke.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,16 @@ const (
TKE_CLUSTER_OS_CENTOS76 = "centos7.6x86_64"
TKE_CLUSTER_OS_UBUNTU16 = "ubuntu16.04.1 LTSx86_64"
TKE_CLUSTER_OS_UBUNTU18 = "ubuntu18.04.1 LTSx86_64"
TKE_CLUSTER_OS_LINUX24 = "tlinux2.4x86_64"
)

var TKE_CLUSTER_OS = []string{TKE_CLUSTER_OS_CENTOS72, TKE_CLUSTER_OS_CENTOS76, TKE_CLUSTER_OS_UBUNTU16, TKE_CLUSTER_OS_UBUNTU18}
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}

var tkeClusterOsMap = map[string]string{TKE_CLUSTER_OS_CENTOS72: TKE_CLUSTER_OS_CENTOS72,
TKE_CLUSTER_OS_CENTOS76: "centos7.6.0_x64",
TKE_CLUSTER_OS_UBUNTU16: TKE_CLUSTER_OS_UBUNTU16,
TKE_CLUSTER_OS_UBUNTU18: "ubuntu18.04.1x86_64",
TKE_CLUSTER_OS_LINUX24: "tlinux2.4x86_64",
}

func tkeToShowClusterOs(apiOs string) string {
Expand Down
4 changes: 3 additions & 1 deletion tencentcloud/resource_tc_clb_listener_rule.go
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,9 @@ func resourceTencentCloudClbListenerRuleCreate(d *schema.ResourceData, meta inte
if e != nil {
return retryError(e)
}
protocol = *(instance.Protocol)
if instance != nil {
protocol = *(instance.Protocol)
}
return nil
})
if err != nil {
Expand Down
72 changes: 62 additions & 10 deletions tencentcloud/resource_tc_clb_redirection.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ func resourceTencentCloudClbRedirection() *schema.Resource {
return &schema.Resource{
Create: resourceTencentCloudClbRedirectionCreate,
Read: resourceTencentCloudClbRedirectionRead,
Update: resourceTencentCloudClbRedirectionUpdate,
Delete: resourceTencentCloudClbRedirectionDelete,
Importer: &schema.ResourceImporter{
State: schema.ImportStatePassthrough,
Expand Down Expand Up @@ -98,6 +99,12 @@ func resourceTencentCloudClbRedirection() *schema.Resource {
Optional: true,
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.",
},
"delete_all_auto_rewrite": {
Type: schema.TypeBool,
Default: false,
Optional: true,
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.",
},
},
}
}
Expand Down Expand Up @@ -333,6 +340,13 @@ func resourceTencentCloudClbRedirectionRead(d *schema.ResourceData, meta interfa
return nil
}

func resourceTencentCloudClbRedirectionUpdate(d *schema.ResourceData, meta interface{}) error {
defer logElapsed("resource.tencentcloud_clb_redirection.update")()
defer inconsistentCheck(d, meta)()
// this nil update method works for the only filed `delete_all_auto_rewrite`
return resourceTencentCloudClbRedirectionRead(d, meta)
}

func resourceTencentCloudClbRedirectionDelete(d *schema.ResourceData, meta interface{}) error {
defer logElapsed("resource.tencentcloud_clb_redirection.delete")()

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

clbId := d.Id()
id := d.Id()
clbService := ClbService{
client: meta.(*TencentCloudClient).apiV3Conn,
}
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
e := clbService.DeleteRedirectionById(ctx, clbId)
if e != nil {
return retryError(e)

deleteAll := d.Get("delete_all_auto_rewrite").(bool)
isAutoRewrite := d.Get("is_auto_rewrite").(bool)
if deleteAll && isAutoRewrite {
//delete all the auto rewrite
var rewrites []*map[string]string
err := resource.Retry(readRetryTimeout, func() *resource.RetryError {
result, inErr := clbService.DescribeAllAutoRedirections(ctx, id)
if inErr != nil {
return retryError(inErr)
}
rewrites = result
return nil
})
if err != nil {
log.Printf("[CRITAL]%s delete CLB redirection failed, reason:%+v", logId, err)
return err
}

for _, rewrite := range rewrites {
if rewrite == nil {
continue
}
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"]
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
e := clbService.DeleteRedirectionById(ctx, rewriteId)
if e != nil {
return retryError(e)
}
return nil
})
if err != nil {
log.Printf("[CRITAL]%s delete CLB redirection failed, reason:%+v", logId, err)
return err
}
}
} else {
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
e := clbService.DeleteRedirectionById(ctx, id)
if e != nil {
return retryError(e)
}
return nil
})
if err != nil {
log.Printf("[CRITAL]%s delete CLB redirection failed, reason:%+v", logId, err)
return err
}
return nil
})
if err != nil {
log.Printf("[CRITAL]%s delete CLB redirection failed, reason:%+v", logId, err)
return err
}
return nil
}
60 changes: 50 additions & 10 deletions tencentcloud/resource_tc_kubernetes_cluster.go
Original file line number Diff line number Diff line change
Expand Up @@ -471,11 +471,10 @@ func resourceTencentCloudTkeCluster() *schema.Resource {
Description: "Description of the cluster.",
},
"cluster_os": {
Type: schema.TypeString,
ForceNew: true,
Optional: true,
Default: TKE_CLUSTER_OS_UBUNTU16,
ValidateFunc: validateAllowedStringValue(TKE_CLUSTER_OS),
Type: schema.TypeString,
ForceNew: true,
Optional: true,
Default: TKE_CLUSTER_OS_UBUNTU16,
Description: "Operating system of the cluster, the available values include: '" + strings.Join(TKE_CLUSTER_OS, "','") +
"'. Default is '" + TKE_CLUSTER_OS_UBUNTU16 + "'.",
},
Expand Down Expand Up @@ -517,7 +516,7 @@ func resourceTencentCloudTkeCluster() *schema.Resource {
ForceNew: true,
Optional: true,
Default: true,
Description: "Indicates whether ipvs is enabled. Default is true.",
Description: "Indicates whether `ipvs` is enabled. Default is true. False means `iptables` is enabled.",
},
"cluster_as_enabled": {
Type: schema.TypeBool,
Expand Down Expand Up @@ -588,10 +587,9 @@ func resourceTencentCloudTkeCluster() *schema.Resource {
Description: "Indicates whether cluster deletion protection is enabled. Default is false.",
},
"kube_proxy_mode": {
Type: schema.TypeString,
Optional: true,
Default: "",
ValidateFunc: validateAllowedStringValue(TKE_CLUSTER_KUBE_PROXY_MODE),
Type: schema.TypeString,
Optional: true,
Default: "",
Description: "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 TKE-optimized kernel is required.",
},
Expand Down Expand Up @@ -821,13 +819,31 @@ func resourceTencentCloudTkeCluster() *schema.Resource {
ForceNew: true,
Description: "Labels of tke cluster nodes.",
},
"mount_target": {
Type: schema.TypeString,
Optional: true,
ForceNew: true,
Description: "Mount target. Default is not mounting.",
},
"docker_graph_path": {
Type: schema.TypeString,
Optional: true,
ForceNew: true,
Default: "/var/lib/docker",
Description: "Docker graph path. Default is `/var/lib/docker`.",
},
"extra_args": {
Type: schema.TypeList,
Optional: true,
ForceNew: true,
Elem: &schema.Schema{Type: schema.TypeString},
Description: "Custom parameter information related to the node.",
},
"kube_config": {
Type: schema.TypeString,
Computed: true,
Description: "kubernetes config.",
},
}

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

if temp, ok := d.GetOk("docker_graph_path"); ok {
iAdvanced.DockerGraphPath = temp.(string)
}
if temp, ok := d.GetOk("mount_target"); ok {
iAdvanced.MountTarget = temp.(string)
}

service := TkeService{client: meta.(*TencentCloudClient).apiV3Conn}

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

config, err := service.DescribeClusterConfig(ctx, d.Id())
if err != nil {
err = resource.Retry(readRetryTimeout, func() *resource.RetryError {
config, err = service.DescribeClusterConfig(ctx, d.Id())
if err != nil {
return retryError(err)
}
return nil
})
}

if err != nil {
return nil
}

_ = d.Set("kube_config", config)

_, workers, err := service.DescribeClusterInstances(ctx, d.Id())
if err != nil {
err = resource.Retry(10*readRetryTimeout, func() *resource.RetryError {
Expand Down
5 changes: 3 additions & 2 deletions tencentcloud/resource_tc_postgresql_instance.go
Original file line number Diff line number Diff line change
Expand Up @@ -240,8 +240,10 @@ func resourceTencentCloudPostgresqlInstanceCreate(d *schema.ResourceData, meta i
return outErr
}

d.SetId(instanceId)

//check creation done
err := resource.Retry(readRetryTimeout, func() *resource.RetryError {
err := resource.Retry(5*readRetryTimeout, func() *resource.RetryError {
instance, has, err := postgresqlService.DescribePostgresqlInstanceById(ctx, instanceId)
if err != nil {
return retryError(err)
Expand All @@ -258,7 +260,6 @@ func resourceTencentCloudPostgresqlInstanceCreate(d *schema.ResourceData, meta i
if err != nil {
return err
}
d.SetId(instanceId)

var (
password = d.Get("root_password").(string)
Expand Down
4 changes: 3 additions & 1 deletion tencentcloud/resource_tc_redis_instance.go
Original file line number Diff line number Diff line change
Expand Up @@ -532,7 +532,9 @@ func resourceTencentCloudRedisInstanceUpdate(d *schema.ResourceData, meta interf
if newMemSize < 1 {
return fmt.Errorf("redis mem_size value cannot be set to less than 1")
}
_, err := redisService.UpgradeInstance(ctx, id, int64(newMemSize))
redisShardNum := d.Get("redis_shard_num").(int)
redisReplicasNum := d.Get("redis_replicas_num").(int)
_, err := redisService.UpgradeInstance(ctx, id, int64(newMemSize), int64(redisShardNum), int64(redisReplicasNum))

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