Skip to content

Commit ff5f2b5

Browse files
ivandksunivan
and
ivan
authored
fix crash and update force replace (#635)
* fix the bug of create cluster crash and cluster_os force replacement when upgrade * fix enable_customized_pod_cidr force replace when edit tf * change CHANGELOG.md * fix spell error Co-authored-by: ivan <[email protected]>
1 parent cba0fec commit ff5f2b5

File tree

4 files changed

+63
-20
lines changed

4 files changed

+63
-20
lines changed

CHANGELOG.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
1-
## 1.56.11 (Unreleased)
1+
## 1.56.12 (Unreleased)
2+
3+
## 1.56.11
4+
5+
BUG FIXES
6+
7+
* Resource `tencentcloud_kubernetes_cluster` fix create cluster without *desired_pod_num* in tf, then crash
8+
* Resource `tencentcloud_kubernetes_cluster` fix when upgrade terraform-provider-tencentclod from v1.56.1 to newer, cluster_os force replacement
9+
* Resource `tencentcloud_kubernetes_cluster` fix when upgrade terraform-provider-tencentclod from v1.56.1 to newer, enable_customized_pod_cidr force replace
210

311
## 1.56.10
412

tencentcloud/extension_tke.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package tencentcloud
22

3+
import tke "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke/v20180525"
4+
35
const (
46
TKE_CLUSTER_OS_CENTOS72 = "centos7.2x86_64"
57
TKE_CLUSTER_OS_CENTOS76 = "centos7.6.0_x64"
@@ -9,6 +11,13 @@ const (
911
TKE_CLUSTER_OS_LINUXF22 = "Tencent tlinux release 2.2 (Final)"
1012
)
1113

14+
// 兼容旧的 cluster_os 定义
15+
const (
16+
TkeClusterOsCentOS76 = "centos7.6x86_64"
17+
//TkeClusterOsUbuntu16 = "ubuntu16.04.1 LTSx86_64"
18+
TkeClusterOsUbuntu18 = "ubuntu18.04.1 LTSx86_64"
19+
)
20+
1221
var TKE_CLUSTER_OS = []string{TKE_CLUSTER_OS_CENTOS76, TKE_CLUSTER_OS_UBUNTU18, TKE_CLUSTER_OS_LINUX24}
1322

1423
var tkeClusterOsMap = map[string]string{TKE_CLUSTER_OS_CENTOS72: TKE_CLUSTER_OS_CENTOS72,
@@ -85,3 +94,12 @@ const (
8594
)
8695

8796
var TKE_CLUSTER_KUBE_PROXY_MODE = []string{TKE_CLUSTER_KUBE_PROXY_MODE_BPF}
97+
98+
type OverrideSettings struct {
99+
Master []tke.InstanceAdvancedSettings
100+
Work []tke.InstanceAdvancedSettings
101+
}
102+
103+
const (
104+
DefaultDesiredPodNum = 0
105+
)

tencentcloud/resource_tc_kubernetes_cluster.go

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -561,7 +561,7 @@ func TkeCvmCreateInfo() map[string]*schema.Schema {
561561
Type: schema.TypeInt,
562562
ForceNew: true,
563563
Optional: true,
564-
Default: -1,
564+
Default: DefaultDesiredPodNum,
565565
Description: "Indicate to set desired pod number in node. valid when enable_customized_pod_cidr=true, " +
566566
"and it override `[globe_]desired_pod_num` for current node. Either all the fields `desired_pod_num` or none.",
567567
},
@@ -793,8 +793,8 @@ func resourceTencentCloudTkeCluster() *schema.Resource {
793793
Description: "Cluster network type, GR or VPC-CNI. Default is GR.",
794794
},
795795
"enable_customized_pod_cidr": {
796-
Type: schema.TypeBool,
797-
ForceNew: true,
796+
Type: schema.TypeBool,
797+
//ForceNew: true,
798798
Optional: true,
799799
Default: false,
800800
Description: "Whether to enable the custom mode of node podCIDR size. Default is false.",
@@ -1623,7 +1623,10 @@ func resourceTencentCloudTkeClusterCreate(d *schema.ResourceData, meta interface
16231623
}
16241624
}
16251625

1626-
overrideSettings := make([]tke.InstanceAdvancedSettings, 0)
1626+
overrideSettings := OverrideSettings{
1627+
Master: make([]tke.InstanceAdvancedSettings, 0),
1628+
Work: make([]tke.InstanceAdvancedSettings, 0),
1629+
}
16271630
if masters, ok := d.GetOk("master_config"); ok {
16281631
if clusterDeployType == TKE_DEPLOY_TYPE_MANAGED {
16291632
return fmt.Errorf("if `cluster_deploy_type` is `MANAGED_CLUSTER` , You don't need define the master yourself")
@@ -1642,8 +1645,8 @@ func resourceTencentCloudTkeClusterCreate(d *schema.ResourceData, meta interface
16421645

16431646
if v, ok := master["desired_pod_num"]; ok {
16441647
dpNum := int64(v.(int))
1645-
if dpNum != -1 {
1646-
overrideSettings = append(overrideSettings, tke.InstanceAdvancedSettings{DesiredPodNumber: helper.Int64(dpNum)})
1648+
if dpNum != DefaultDesiredPodNum {
1649+
overrideSettings.Master = append(overrideSettings.Master, tke.InstanceAdvancedSettings{DesiredPodNumber: helper.Int64(dpNum)})
16471650
}
16481651
}
16491652
}
@@ -1669,8 +1672,8 @@ func resourceTencentCloudTkeClusterCreate(d *schema.ResourceData, meta interface
16691672

16701673
if v, ok := worker["desired_pod_num"]; ok {
16711674
dpNum := int64(v.(int))
1672-
if dpNum != -1 {
1673-
overrideSettings = append(overrideSettings, tke.InstanceAdvancedSettings{DesiredPodNumber: helper.Int64(dpNum)})
1675+
if dpNum != DefaultDesiredPodNum {
1676+
overrideSettings.Work = append(overrideSettings.Work, tke.InstanceAdvancedSettings{DesiredPodNumber: helper.Int64(dpNum)})
16741677
}
16751678
}
16761679
}
@@ -1716,7 +1719,7 @@ func resourceTencentCloudTkeClusterCreate(d *schema.ResourceData, meta interface
17161719
}
17171720

17181721
service := TkeService{client: meta.(*TencentCloudClient).apiV3Conn}
1719-
id, err := service.CreateCluster(ctx, basic, advanced, cvms, iAdvanced, cidrSet, tags, existIntances, overrideSettings)
1722+
id, err := service.CreateCluster(ctx, basic, advanced, cvms, iAdvanced, cidrSet, tags, existIntances, &overrideSettings)
17201723
if err != nil {
17211724
return err
17221725
}
@@ -1893,9 +1896,18 @@ func resourceTencentCloudTkeClusterRead(d *schema.ResourceData, meta interface{}
18931896
return nil
18941897
}
18951898

1899+
// 兼容旧的 cluster_os 的 key, 由于 cluster_os有默认值,所以不大可能为空
1900+
oldOs := d.Get("cluster_os").(string)
1901+
newOs := tkeToShowClusterOs(info.ClusterOs)
1902+
1903+
if (oldOs == TkeClusterOsCentOS76 && newOs == TKE_CLUSTER_OS_CENTOS76) ||
1904+
(oldOs == TkeClusterOsUbuntu18 && newOs == TKE_CLUSTER_OS_UBUNTU18) {
1905+
newOs = oldOs
1906+
}
1907+
18961908
_ = d.Set("cluster_name", info.ClusterName)
18971909
_ = d.Set("cluster_desc", info.ClusterDescription)
1898-
_ = d.Set("cluster_os", tkeToShowClusterOs(info.ClusterOs))
1910+
_ = d.Set("cluster_os", newOs)
18991911
_ = d.Set("cluster_deploy_type", info.DeployType)
19001912
_ = d.Set("cluster_version", info.ClusterVersion)
19011913
_ = d.Set("cluster_ipvs", info.Ipvs)

tencentcloud/service_tencentcloud_tke.go

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ type ClusterBasicSetting struct {
3131
type ClusterAdvancedSettings struct {
3232
Ipvs bool
3333
AsEnabled bool
34-
EnableCustomizedPodCIDR bool
34+
EnableCustomizedPodCIDR bool
3535
BasePodNumber int64
3636
ContainerRuntime string
3737
NodeNameType string
@@ -371,13 +371,13 @@ func (me *TkeService) GetUpgradeInstanceResult(ctx context.Context, id string) (
371371
continue
372372
}
373373
if *inst.LifeState != "process" {
374-
return false, fmt.Errorf("upgrade instances failed, " +
374+
return false, fmt.Errorf("upgrade instances failed, "+
375375
"instanceId:%s, lifeState is:%s", *inst.InstanceID, *inst.LifeState)
376376
}
377377
// instance lifeState=process, check whether failed or not.
378378
for _, detail := range inst.Detail {
379379
if *detail.LifeState == "failed" {
380-
return false, fmt.Errorf("upgrade instances failed, " +
380+
return false, fmt.Errorf("upgrade instances failed, "+
381381
"instanceId:%s, detail.lifeState is:%s", *inst.InstanceID, *detail.LifeState)
382382
}
383383
}
@@ -394,7 +394,7 @@ func (me *TkeService) CreateCluster(ctx context.Context,
394394
cidrSetting ClusterCidrSettings,
395395
tags map[string]string,
396396
existedInstance []*tke.ExistedInstancesForNode,
397-
overrideSettings []tke.InstanceAdvancedSettings,
397+
overrideSettings *OverrideSettings,
398398
) (id string, errRet error) {
399399

400400
logId := getLogId(ctx)
@@ -459,7 +459,8 @@ func (me *TkeService) CreateCluster(ctx context.Context,
459459
request.InstanceAdvancedSettings.Labels = iAdvanced.Labels
460460
}
461461

462-
if len(overrideSettings) > 0 && len(overrideSettings) != (len(cvms.Master)+len(cvms.Work)) {
462+
if len(overrideSettings.Master)+len(overrideSettings.Work) > 0 &&
463+
len(overrideSettings.Master)+len(overrideSettings.Work) != (len(cvms.Master)+len(cvms.Work)) {
463464
return "", fmt.Errorf("len(overrideSettings) != (len(cvms.Master)+len(cvms.Work))")
464465
}
465466

@@ -473,7 +474,9 @@ func (me *TkeService) CreateCluster(ctx context.Context,
473474
request.ClusterType = helper.String(TKE_DEPLOY_TYPE_INDEPENDENT)
474475
for v := range cvms.Master {
475476
node.RunInstancesPara = append(node.RunInstancesPara, &cvms.Master[v])
476-
node.InstanceAdvancedSettingsOverrides = append(node.InstanceAdvancedSettingsOverrides, &overrideSettings[v])
477+
if len(overrideSettings.Master) != 0 {
478+
node.InstanceAdvancedSettingsOverrides = append(node.InstanceAdvancedSettingsOverrides, &overrideSettings.Master[v])
479+
}
477480
}
478481
request.RunInstancesForNode = append(request.RunInstancesForNode, &node)
479482

@@ -487,7 +490,9 @@ func (me *TkeService) CreateCluster(ctx context.Context,
487490
node.RunInstancesPara = []*string{}
488491
for v := range cvms.Work {
489492
node.RunInstancesPara = append(node.RunInstancesPara, &cvms.Work[v])
490-
node.InstanceAdvancedSettingsOverrides = append(node.InstanceAdvancedSettingsOverrides, &overrideSettings[v])
493+
if len(overrideSettings.Work) != 0 {
494+
node.InstanceAdvancedSettingsOverrides = append(node.InstanceAdvancedSettingsOverrides, &overrideSettings.Work[v])
495+
}
491496
}
492497
request.RunInstancesForNode = append(request.RunInstancesForNode, &node)
493498
}
@@ -940,9 +945,9 @@ func (me *TkeService) ModifyClusterVersion(ctx context.Context, id string, clust
940945
}
941946

942947
request.ExtraArgs = &tke.ClusterExtraArgs{
943-
KubeAPIServer: kas,
948+
KubeAPIServer: kas,
944949
KubeControllerManager: kcms,
945-
KubeScheduler: kss,
950+
KubeScheduler: kss,
946951
}
947952
}
948953

0 commit comments

Comments
 (0)