Skip to content

Commit eb1c968

Browse files
authored
Merge pull request #531 from ChuGuai/tke
add tke "extra_args"
2 parents fde3557 + ae7527b commit eb1c968

11 files changed

+497
-3
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ ENHANCEMENTS:
1818
* Resource: `tencentcloud_mysql_instance` modify argument `engine_version` to support mysql 8.0.
1919
* Resource: `tencentcloud_clb_listener_rule` add new argument `forward_type` to support backend protocol([#522](https://github.com/tencentcloudstack/terraform-provider-tencentcloud/issues/522))
2020
* Resource: `tencentcloud_instance` add new argument `keep_image_login` to support keeping image login.
21+
* Resource: `tencentcloud_kubernetes_cluster` add new argument `extra_args` to support Kubelet.
22+
* Resource: `tencentcloud_kubernetes_scale_worker` add new argument `extra_args` to support Kubelet.
23+
* Resource: `tencentcloud_kubernetes_as_scaling_group` add new argument `extra_args` to support Kubelet.
2124

2225
## 1.44.0 (September 25, 2020)
2326

tencentcloud/resource_tc_kubernetes_as_scaling_group.go

Lines changed: 81 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
/*
22
Provide a resource to create an auto scaling group for kubernetes cluster.
33
4+
~> **NOTE:** To use the custom Kubernetes component startup parameter function (parameter `extra_args`), you need to submit a ticket for application.
5+
46
Example Usage
57
68
```hcl
@@ -59,6 +61,69 @@ resource "tencentcloud_kubernetes_as_scaling_group" "test" {
5961
}
6062
}
6163
```
64+
65+
Use Kubelet
66+
67+
```hcl
68+
69+
resource "tencentcloud_kubernetes_as_scaling_group" "test" {
70+
71+
cluster_id = "cls-kb32pbv4"
72+
73+
auto_scaling_group {
74+
scaling_group_name = "tf-guagua-as-group"
75+
max_size = "5"
76+
min_size = "0"
77+
vpc_id = "vpc-dk8zmwuf"
78+
subnet_ids = ["subnet-pqfek0t8"]
79+
project_id = 0
80+
default_cooldown = 400
81+
desired_capacity = "0"
82+
termination_policies = ["NEWEST_INSTANCE"]
83+
retry_policy = "INCREMENTAL_INTERVALS"
84+
85+
tags = {
86+
"test" = "test"
87+
}
88+
89+
}
90+
91+
92+
auto_scaling_config {
93+
configuration_name = "tf-guagua-as-config"
94+
instance_type = "S1.SMALL1"
95+
project_id = 0
96+
system_disk_type = "CLOUD_PREMIUM"
97+
system_disk_size = "50"
98+
99+
data_disk {
100+
disk_type = "CLOUD_PREMIUM"
101+
disk_size = 50
102+
}
103+
104+
internet_charge_type = "TRAFFIC_POSTPAID_BY_HOUR"
105+
internet_max_bandwidth_out = 10
106+
public_ip_assigned = true
107+
password = "test123#"
108+
enhanced_security_service = false
109+
enhanced_monitor_service = false
110+
111+
instance_tags = {
112+
tag = "as"
113+
}
114+
115+
}
116+
117+
extra_args = [
118+
"root-dir=/var/lib/kubelet"
119+
]
120+
121+
labels = {
122+
"test1" = "test1",
123+
"test1" = "test2",
124+
}
125+
}
126+
```
62127
*/
63128
package tencentcloud
64129

@@ -113,6 +178,13 @@ func ResourceTencentCloudKubernetesAsScalingGroup() *schema.Resource {
113178
ForceNew: true,
114179
Description: "Labels of kubernetes AS Group created nodes.",
115180
},
181+
"extra_args": {
182+
Type: schema.TypeList,
183+
Optional: true,
184+
ForceNew: true,
185+
Elem: &schema.Schema{Type: schema.TypeString},
186+
Description: "Custom parameter information related to the node.",
187+
},
116188
},
117189
}
118190
}
@@ -756,6 +828,7 @@ func resourceKubernetesAsScalingGroupCreate(d *schema.ResourceData, meta interfa
756828
groupParas = d.Get("auto_scaling_group").([]interface{})
757829
configParas = d.Get("auto_scaling_config").([]interface{})
758830
asService = AsService{client: meta.(*TencentCloudClient).apiV3Conn}
831+
iAdvanced InstanceAdvancedSettings
759832
)
760833
if len(groupParas) != 1 || len(configParas) != 1 {
761834
return fmt.Errorf("need only one auto_scaling_group and one auto_scaling_config")
@@ -773,9 +846,16 @@ func resourceKubernetesAsScalingGroupCreate(d *schema.ResourceData, meta interfa
773846

774847
labels := GetTkeLabels(d, "labels")
775848

849+
if temp, ok := d.GetOk("extra_args"); ok {
850+
extraArgs := helper.InterfacesStrings(temp.([]interface{}))
851+
for _, extraArg := range extraArgs {
852+
iAdvanced.ExtraArgs.Kubelet = append(iAdvanced.ExtraArgs.Kubelet, &extraArg)
853+
}
854+
}
855+
776856
service := TkeService{client: meta.(*TencentCloudClient).apiV3Conn}
777857

778-
asGroupId, err := service.CreateClusterAsGroup(ctx, clusterId, groupParaStr, configParaStr, labels)
858+
asGroupId, err := service.CreateClusterAsGroup(ctx, clusterId, groupParaStr, configParaStr, labels, iAdvanced)
779859
if err != nil {
780860
return err
781861
}

tencentcloud/resource_tc_kubernetes_as_scaling_group_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ resource "tencentcloud_kubernetes_cluster" "managed_cluster" {
128128
cluster_name = "tf-tke-unit-test"
129129
cluster_desc = "test cluster desc"
130130
cluster_max_service_num = 32
131+
cluster_version = "1.18.4"
131132
132133
worker_config {
133134
count = 1
@@ -206,6 +207,9 @@ resource "tencentcloud_kubernetes_as_scaling_group" "as_test" {
206207
"test1" = "test1",
207208
"test2" = "test2",
208209
}
210+
extra_args = [
211+
"root-dir=/var/lib/kubelet"
212+
]
209213
}
210214
211215
`

tencentcloud/resource_tc_kubernetes_cluster.go

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
/*
22
Provide a resource to create a kubernetes cluster.
33
4+
~> **NOTE:** To use the custom Kubernetes component startup parameter function (parameter `extra_args`), you need to submit a ticket for application.
5+
46
Example Usage
57
68
```hcl
@@ -92,6 +94,102 @@ resource "tencentcloud_kubernetes_cluster" "managed_cluster" {
9294
}
9395
}
9496
```
97+
98+
Use Kubelet
99+
100+
```hcl
101+
variable "availability_zone_first" {
102+
default = "ap-guangzhou-3"
103+
}
104+
105+
variable "availability_zone_second" {
106+
default = "ap-guangzhou-4"
107+
}
108+
109+
variable "cluster_cidr" {
110+
default = "10.31.0.0/16"
111+
}
112+
113+
variable "default_instance_type" {
114+
default = "SA2.2XLARGE16"
115+
}
116+
117+
data "tencentcloud_vpc_subnets" "vpc_first" {
118+
is_default = true
119+
availability_zone = var.availability_zone_first
120+
}
121+
122+
data "tencentcloud_vpc_subnets" "vpc_second" {
123+
is_default = true
124+
availability_zone = var.availability_zone_second
125+
}
126+
127+
resource "tencentcloud_kubernetes_cluster" "managed_cluster" {
128+
vpc_id = data.tencentcloud_vpc_subnets.vpc_first.instance_list.0.vpc_id
129+
cluster_cidr = var.cluster_cidr
130+
cluster_max_pod_num = 32
131+
cluster_name = "test"
132+
cluster_desc = "test cluster desc"
133+
cluster_max_service_num = 32
134+
cluster_internet = true
135+
managed_cluster_internet_security_policies = ["3.3.3.3", "1.1.1.1"]
136+
cluster_deploy_type = "MANAGED_CLUSTER"
137+
138+
worker_config {
139+
count = 1
140+
availability_zone = var.availability_zone_first
141+
instance_type = var.default_instance_type
142+
system_disk_type = "CLOUD_SSD"
143+
system_disk_size = 60
144+
internet_charge_type = "TRAFFIC_POSTPAID_BY_HOUR"
145+
internet_max_bandwidth_out = 100
146+
public_ip_assigned = true
147+
subnet_id = data.tencentcloud_vpc_subnets.vpc_first.instance_list.0.subnet_id
148+
149+
data_disk {
150+
disk_type = "CLOUD_PREMIUM"
151+
disk_size = 50
152+
}
153+
154+
enhanced_security_service = false
155+
enhanced_monitor_service = false
156+
user_data = "dGVzdA=="
157+
password = "ZZXXccvv1212"
158+
}
159+
160+
worker_config {
161+
count = 1
162+
availability_zone = var.availability_zone_second
163+
instance_type = var.default_instance_type
164+
system_disk_type = "CLOUD_SSD"
165+
system_disk_size = 60
166+
internet_charge_type = "TRAFFIC_POSTPAID_BY_HOUR"
167+
internet_max_bandwidth_out = 100
168+
public_ip_assigned = true
169+
subnet_id = data.tencentcloud_vpc_subnets.vpc_second.instance_list.0.subnet_id
170+
171+
data_disk {
172+
disk_type = "CLOUD_PREMIUM"
173+
disk_size = 50
174+
}
175+
176+
enhanced_security_service = false
177+
enhanced_monitor_service = false
178+
user_data = "dGVzdA=="
179+
password = "ZZXXccvv1212"
180+
cam_role_name = "CVM_QcsRole"
181+
}
182+
183+
labels = {
184+
"test1" = "test1",
185+
"test2" = "test2",
186+
}
187+
188+
extra_args = [
189+
"root-dir=/var/lib/kubelet"
190+
]
191+
}
192+
```
95193
*/
96194
package tencentcloud
97195

@@ -723,6 +821,13 @@ func resourceTencentCloudTkeCluster() *schema.Resource {
723821
ForceNew: true,
724822
Description: "Labels of tke cluster nodes.",
725823
},
824+
"extra_args": {
825+
Type: schema.TypeList,
826+
Optional: true,
827+
ForceNew: true,
828+
Elem: &schema.Schema{Type: schema.TypeString},
829+
Description: "Custom parameter information related to the node.",
830+
},
726831
}
727832

728833
for k, v := range tkeSecurityInfo() {
@@ -1126,6 +1231,13 @@ func resourceTencentCloudTkeClusterCreate(d *schema.ResourceData, meta interface
11261231

11271232
iAdvanced.Labels = GetTkeLabels(d, "labels")
11281233

1234+
if temp, ok := d.GetOk("extra_args"); ok {
1235+
extraArgs := helper.InterfacesStrings(temp.([]interface{}))
1236+
for _, extraArg := range extraArgs {
1237+
iAdvanced.ExtraArgs.Kubelet = append(iAdvanced.ExtraArgs.Kubelet, &extraArg)
1238+
}
1239+
}
1240+
11291241
service := TkeService{client: meta.(*TencentCloudClient).apiV3Conn}
11301242

11311243
id, err := service.CreateCluster(ctx, basic, advanced, cvms, iAdvanced, cidrSet, tags)

tencentcloud/resource_tc_kubernetes_cluster_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ resource "tencentcloud_kubernetes_cluster" "managed_cluster" {
160160
cluster_desc = "test cluster desc"
161161
cluster_max_service_num = 32
162162
cluster_internet = true
163+
cluster_version = "1.18.4"
163164
managed_cluster_internet_security_policies = ["3.3.3.3", "1.1.1.1"]
164165
worker_config {
165166
count = 1
@@ -194,6 +195,9 @@ resource "tencentcloud_kubernetes_cluster" "managed_cluster" {
194195
"test1" = "test1",
195196
"test2" = "test2",
196197
}
198+
extra_args = [
199+
"root-dir=/var/lib/kubelet"
200+
]
197201
}
198202
`, key, value,
199203
)

0 commit comments

Comments
 (0)