Skip to content
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
4 changes: 2 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ require (
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.283
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.199
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.291
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.376
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.378
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.351
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.359
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dayu v1.0.335
Expand All @@ -54,7 +54,7 @@ require (
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tcaplusdb v1.0.199
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tcr v1.0.267
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tdmq v1.0.268
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke v1.0.370
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke v1.0.378
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vod v1.0.199
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.357
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wss v1.0.199
Expand Down
4 changes: 4 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -511,6 +511,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.370 h1:FlmN
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.370/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.376 h1:pXsCDParuAiDUt/SuDBeJ0Fv90kItYMbk37W1cMVHck=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.376/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.378 h1:o+GKr3tHDivmoWxBXX5oeJC8EmmNV64g/yw5s0RjBdg=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.378/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.199 h1:ajgJogYSIQ5u1PIbiV5nsvr5K0fYpm1/T7Dy+mxEM6U=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.199/go.mod h1:AqyM/ZZMD7q5mHBqNY9YImbSpEpoEe7E/vrTbUWX+po=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.351 h1:zqJsH5pxGT57La7NAOOyMQxsuM11pupNBwV1dzXcT24=
Expand Down Expand Up @@ -578,6 +580,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke v1.0.369 h1:bp9vCew
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke v1.0.369/go.mod h1:HlPCDRZ3zUnEXifuTNbCiEOwKn/2LmA6ziPkCr3VHsk=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke v1.0.370 h1:rzExiYuyKD9JhRAyQzoECLz8RRyT0bNgLxmDjPQxTRg=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke v1.0.370/go.mod h1:qs+mOMyRpnBtCNHBl70LMH826P1kbYDIjgX2+p5nqMg=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke v1.0.378 h1:gVtRJRENcLw2LxA06oS0OOOeRADStVrrpIyKjlrmkW4=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke v1.0.378/go.mod h1:3fugxjsjhR7P3HeVRsUCMIM2P7KnIvqnPhcsImS7zN0=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vod v1.0.199 h1:6Yt74l4pA5QtzhwMNIEUt0spXdSBKH744DDqTHJOCP0=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vod v1.0.199/go.mod h1:Yw6OQ33z3s4k0HVYTNSffB12qOzEJ2Zf1Vj4+5S3sRs=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.199 h1:UDZ59pvaqjDy2QIsMsv9hxm0BEJLmPIbHF1ms0MqaRk=
Expand Down
12 changes: 11 additions & 1 deletion tencentcloud/basic_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package tencentcloud
import (
"os"
"regexp"
"time"
)

/*
Expand All @@ -22,6 +23,15 @@ const (

var persistResource = regexp.MustCompile("^(keep|Default)")

// Check if resource should persist instead of recycled
func isResourcePersist(name string, createdTime *time.Time) bool {
createdWithin30Minutes := false
if createdTime != nil {
createdWithin30Minutes = createdTime.Add(time.Minute * 30).After(time.Now())
}
return persistResource.MatchString(name) || createdWithin30Minutes
}

// vpn
const defaultVpnDataSource = `
data "tencentcloud_vpn_gateways" "foo" {
Expand Down Expand Up @@ -75,7 +85,7 @@ const (
tkeExclusiveVpcName = "keep_tke_exclusive_vpc"
tkeExclusiveSubnetId = "subnet-ljyn7h30"
defaultTkeClusterId = "cls-ely08ic4"
defaultTkeClusterName = "preset_tke_cluster"
defaultTkeClusterName = "keep-tke-cluster"
)

/*
Expand Down
2 changes: 1 addition & 1 deletion tencentcloud/resource_tc_eni_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ func testSweepEniInstance(region string) error {
client: client.apiV3Conn,
}

instances, err := vpcService.DescribeEniByFilters(ctx, nil, nil, nil, nil, nil, nil,nil,nil)
instances, err := vpcService.DescribeEniByFilters(ctx, nil, nil, nil, nil, nil, nil, nil, nil)
if err != nil {
return fmt.Errorf("get instance list error: %s", err.Error())
}
Expand Down
29 changes: 23 additions & 6 deletions tencentcloud/resource_tc_kubernetes_cluster.go
Original file line number Diff line number Diff line change
Expand Up @@ -893,7 +893,17 @@ func resourceTencentCloudTkeCluster() *schema.Resource {
ForceNew: true,
Optional: true,
Default: false,
Description: "Indicates whether to enable cluster node auto scaler. Default is false.",
Description: "Indicates whether to enable cluster node auto scaling. Default is false.",
},
"cluster_level": {
Type: schema.TypeString,
Optional: true,
Description: "Specify cluster level, valid for managed cluster.",
},
"auto_upgrade_cluster_level": {
Type: schema.TypeBool,
Optional: true,
Description: "Whether the cluster level auto upgraded, valid for managed cluster.",
},
"node_pool_global_config": {
Type: schema.TypeList,
Expand Down Expand Up @@ -1781,6 +1791,14 @@ func resourceTencentCloudTkeClusterCreate(d *schema.ResourceData, meta interface
basic.ClusterDescription = v.(string)
}

if v, ok := d.GetOk("cluster_level"); ok {
basic.ClusterLevel = v.(string)
}

if v, ok := d.GetOk("auto_upgrade_cluster_level"); ok {
basic.AutoUpgradeClusterLevel = v.(bool)
}

advanced.Ipvs = d.Get("cluster_ipvs").(bool)
advanced.AsEnabled = d.Get("cluster_as_enabled").(bool)
advanced.ContainerRuntime = d.Get("container_runtime").(string)
Expand Down Expand Up @@ -2623,16 +2641,15 @@ func resourceTencentCloudTkeClusterUpdate(d *schema.ResourceData, meta interface
d.SetPartial("managed_cluster_internet_security_policies")
}

if d.HasChange("project_id") || d.HasChange("cluster_name") || d.HasChange("cluster_desc") {
if d.HasChange("project_id") || d.HasChange("cluster_name") || d.HasChange("cluster_desc") || d.HasChange("cluster_level") || d.HasChange("auto_upgrade_cluster_level") {
projectId := int64(d.Get("project_id").(int))
clusterName := d.Get("cluster_name").(string)
clusterDesc := d.Get("cluster_desc").(string)
if err := tkeService.ModifyClusterAttribute(ctx, id, projectId, clusterName, clusterDesc); err != nil {
clusterLevel := d.Get("cluster_level").(string)
autoUpgradeClusterLevel := d.Get("auto_upgrade_cluster_level").(bool)
if err := tkeService.ModifyClusterAttribute(ctx, id, projectId, clusterName, clusterDesc, clusterLevel, autoUpgradeClusterLevel); err != nil {
return err
}
d.SetPartial("project_id")
d.SetPartial("cluster_name")
d.SetPartial("cluster_desc")
}

//upgrade k8s cluster version
Expand Down
178 changes: 174 additions & 4 deletions tencentcloud/resource_tc_kubernetes_cluster_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"fmt"
"log"
"testing"
"time"

"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
"github.com/hashicorp/terraform-plugin-sdk/terraform"
Expand All @@ -13,6 +14,38 @@ import (
var testTkeClusterName = "tencentcloud_kubernetes_cluster"
var testTkeClusterResourceKey = testTkeClusterName + ".managed_cluster"

func init() {
// go test -v ./tencentcloud -sweep=ap-guangzhou -sweep-run=tencentcloud_kubernetes_cluster
resource.AddTestSweepers("tencentcloud_kubernetes_cluster", &resource.Sweeper{
Name: "tencentcloud_kubernetes_cluster",
F: func(r string) error {
logId := getLogId(contextNil)
ctx := context.WithValue(context.TODO(), logIdKey, logId)
cli, _ := sharedClientForRegion(r)
client := cli.(*TencentCloudClient).apiV3Conn
service := TkeService{client: client}
clusters, err := service.DescribeClusters(ctx, "", "")
if err != nil {
return err
}

for _, v := range clusters {
id := v.ClusterId
name := v.ClusterName
createdTime, _ := time.Parse(time.RFC3339, v.CreatedTime)
if isResourcePersist(name, &createdTime) {
continue
}
if err := service.DeleteCluster(ctx, id); err != nil {
return err
}
}

return nil
},
})
}

func TestAccTencentCloudTkeResource(t *testing.T) {
t.Parallel()
resource.Test(t, resource.TestCase{
Expand Down Expand Up @@ -53,6 +86,38 @@ func TestAccTencentCloudTkeResource(t *testing.T) {
})
}

func TestAccTencentCloudTkeResourceClusterLevel(t *testing.T) {
t.Parallel()
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckTkeDestroy,
Steps: []resource.TestStep{
{
Config: testAccTkeClusterLevel,
Check: resource.ComposeTestCheckFunc(
testAccCheckTkeExists(testTkeClusterResourceKey),
resource.TestCheckResourceAttr(testTkeClusterResourceKey, "cluster_cidr", "10.31.0.0/16"),
resource.TestCheckResourceAttr(testTkeClusterResourceKey, "cluster_max_pod_num", "32"),
resource.TestCheckResourceAttr(testTkeClusterResourceKey, "cluster_name", "test"),
resource.TestCheckResourceAttr(testTkeClusterResourceKey, "cluster_level", "L5"),
resource.TestCheckResourceAttr(testTkeClusterResourceKey, "auto_upgrade_cluster_level", "true"),
resource.TestCheckResourceAttr(testTkeClusterResourceKey, "worker_instances_list.#", "1"),
resource.TestCheckResourceAttrSet(testTkeClusterResourceKey, "worker_instances_list.0.instance_id"),
),
},
{
Config: testAccTkeClusterLevelUpdate,
Check: resource.ComposeTestCheckFunc(
testAccCheckTkeExists(testTkeClusterResourceKey),
resource.TestCheckResourceAttr(testTkeClusterResourceKey, "cluster_level", "L20"),
resource.TestCheckResourceAttr(testTkeClusterResourceKey, "auto_upgrade_cluster_level", "false"),
),
},
},
})
}

func testAccCheckTkeDestroy(s *terraform.State) error {
logId := getLogId(contextNil)
ctx := context.WithValue(context.TODO(), logIdKey, logId)
Expand Down Expand Up @@ -154,7 +219,7 @@ data "tencentcloud_vpc_subnets" "vpc" {
}

resource "tencentcloud_kubernetes_cluster" "managed_cluster" {
vpc_id = "vpc-rkojp4kn"
vpc_id = data.tencentcloud_vpc_subnets.vpc.instance_list.0.vpc_id
cluster_cidr = var.cluster_cidr
cluster_max_pod_num = 32
cluster_name = "test"
Expand All @@ -173,8 +238,8 @@ resource "tencentcloud_kubernetes_cluster" "managed_cluster" {
internet_charge_type = "TRAFFIC_POSTPAID_BY_HOUR"
internet_max_bandwidth_out = 100
public_ip_assigned = true
subnet_id = "subnet-fmcdf57e"
img_id = "img-rkiynh11"
subnet_id = data.tencentcloud_vpc_subnets.vpc.instance_list.0.subnet_id
img_id = "`+defaultTkeOSImageId+`"

data_disk {
disk_type = "CLOUD_PREMIUM"
Expand All @@ -189,7 +254,6 @@ resource "tencentcloud_kubernetes_cluster" "managed_cluster" {
enhanced_monitor_service = false
user_data = "dGVzdA=="
password = "ZZXXccvv1212"
cam_role_name = "TKE_TEST"
}

cluster_deploy_type = "MANAGED_CLUSTER"
Expand All @@ -211,3 +275,109 @@ resource "tencentcloud_kubernetes_cluster" "managed_cluster" {
`, key, value,
)
}

const testAccTkeClusterLevel = `
variable "availability_zone" {
default = "ap-guangzhou-3"
}

variable "cluster_cidr" {
default = "10.31.0.0/16"
}

variable "default_instance_type" {
default = "S1.SMALL1"
}

data "tencentcloud_vpc_subnets" "vpc" {
is_default = true
availability_zone = var.availability_zone
}

resource "tencentcloud_kubernetes_cluster" "managed_cluster" {
vpc_id = data.tencentcloud_vpc_subnets.vpc.instance_list.0.vpc_id
cluster_cidr = var.cluster_cidr
cluster_max_pod_num = 32
cluster_name = "test"
cluster_desc = "test cluster desc"
cluster_max_service_num = 32
cluster_version = "1.18.4"
cluster_os = "tlinux2.2(tkernel3)x86_64"
cluster_level = "L5"
auto_upgrade_cluster_level = true
worker_config {
count = 1
availability_zone = var.availability_zone
instance_type = var.default_instance_type
system_disk_type = "CLOUD_SSD"
system_disk_size = 60
internet_charge_type = "TRAFFIC_POSTPAID_BY_HOUR"
internet_max_bandwidth_out = 100
public_ip_assigned = true
subnet_id = data.tencentcloud_vpc_subnets.vpc.instance_list.0.subnet_id
img_id = "` + defaultTkeOSImageId + `"

enhanced_security_service = false
enhanced_monitor_service = false
user_data = "dGVzdA=="
password = "ZZXXccvv1212"
}

cluster_deploy_type = "MANAGED_CLUSTER"

unschedulable = 0
}
`

const testAccTkeClusterLevelUpdate = `
variable "availability_zone" {
default = "ap-guangzhou-3"
}

variable "cluster_cidr" {
default = "10.31.0.0/16"
}

variable "default_instance_type" {
default = "S1.SMALL1"
}

data "tencentcloud_vpc_subnets" "vpc" {
is_default = true
availability_zone = var.availability_zone
}

resource "tencentcloud_kubernetes_cluster" "managed_cluster" {
vpc_id = data.tencentcloud_vpc_subnets.vpc.instance_list.0.vpc_id
cluster_cidr = var.cluster_cidr
cluster_max_pod_num = 32
cluster_name = "test"
cluster_desc = "test cluster desc"
cluster_max_service_num = 32
cluster_version = "1.18.4"
cluster_os = "tlinux2.2(tkernel3)x86_64"
cluster_level = "L20"
auto_upgrade_cluster_level = false
worker_config {
count = 1
availability_zone = var.availability_zone
instance_type = var.default_instance_type
system_disk_type = "CLOUD_SSD"
system_disk_size = 60
internet_charge_type = "TRAFFIC_POSTPAID_BY_HOUR"
internet_max_bandwidth_out = 100
public_ip_assigned = true
subnet_id = data.tencentcloud_vpc_subnets.vpc.instance_list.0.subnet_id
img_id = "` + defaultTkeOSImageId + `"

enhanced_security_service = false
enhanced_monitor_service = false
user_data = "dGVzdA=="
password = "ZZXXccvv1212"
}

cluster_deploy_type = "MANAGED_CLUSTER"

unschedulable = 0
}
`
Loading