From 4b7ad9a6b4cadad0c55371ce601498cb0bdb3419 Mon Sep 17 00:00:00 2001 From: nickyinluo Date: Wed, 5 Jul 2023 16:30:37 +0800 Subject: [PATCH 1/2] example readjust: tencentcloud_kubernetes_serverless_node_pool --- ...urce_tc_kubernetes_serverless_node_pool.go | 99 +++++++++++++++++-- ...ernetes_serverless_node_pool.html.markdown | 96 ++++++++++++++++-- 2 files changed, 176 insertions(+), 19 deletions(-) diff --git a/tencentcloud/resource_tc_kubernetes_serverless_node_pool.go b/tencentcloud/resource_tc_kubernetes_serverless_node_pool.go index ec4c145933..87da7059fb 100644 --- a/tencentcloud/resource_tc_kubernetes_serverless_node_pool.go +++ b/tencentcloud/resource_tc_kubernetes_serverless_node_pool.go @@ -2,22 +2,101 @@ Provide a resource to create serverless node pool of cluster. Example Usage + +Add serverless node pool to a cluster + +```hcl +variable "availability_zone" { + default = "ap-guangzhou-3" +} + +variable "example_cluster_cidr" { + default = "10.31.0.0/16" +} + +locals { + vpc_id = data.tencentcloud_vpc_subnets.vpc.instance_list.0.vpc_id + subnet_id = data.tencentcloud_vpc_subnets.vpc.instance_list.0.subnet_id + sg_id = data.tencentcloud_security_groups.sg.security_groups.0.security_group_id +} + +data "tencentcloud_vpc_subnets" "vpc" { + is_default = true + availability_zone = var.availability_zone +} + +data "tencentcloud_security_groups" "sg" { + name = "default" +} + +resource "tencentcloud_kubernetes_cluster" "example" { + vpc_id = local.vpc_id + cluster_cidr = var.example_cluster_cidr + cluster_max_pod_num = 32 + cluster_name = "tf_example_cluster" + cluster_desc = "tf example cluster" + cluster_max_service_num = 32 + cluster_version = "1.18.4" + cluster_deploy_type = "MANAGED_CLUSTER" +} + +resource "tencentcloud_kubernetes_serverless_node_pool" "example" { + cluster_id = tencentcloud_kubernetes_cluster.example.id + name = "tf_example_serverless_node_pool" + + serverless_nodes { + display_name = "tf_example_serverless_node1" + subnet_id = local.subnet_id + } + + serverless_nodes { + display_name = "tf_example_serverless_node2" + subnet_id = local.subnet_id + } + + security_group_ids = [local.sg_id] + labels = { + "label1" : "value1", + "label2" : "value2", + } +} ``` -resource "tencentcloud_kubernetes_serverless_node_pool" "example_serverless_node_pool" { + +Adding taints to the virtual nodes under this node pool + +The pods without appropriate tolerations will not be scheduled on this node. Refer [taint-and-toleration](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) for more details. + +```hcl +resource "tencentcloud_kubernetes_serverless_node_pool" "example" { cluster_id = tencentcloud_kubernetes_cluster.example.id - name = "example_node_pool" + name = "tf_example_serverless_node_pool" + serverless_nodes { - display_name = "serverless_node1" - subnet_id = "subnet-xxx" + display_name = "tf_example_serverless_node1" + subnet_id = local.subnet_id } + serverless_nodes { - display_name = "serverless_node2" - subnet_id = "subnet-xxx" + display_name = "tf_example_serverless_node2" + subnet_id = local.subnet_id + } + + security_group_ids = [local.sg_id] + labels = { + "label1" : "value1", + "label2" : "value2", + } + + taints{ + key = "key1" + value = "value1" + effect = "NoSchedule" } - security_group_ids = ["sg-xxx"] - labels = { - "example1" : "test1", - "example2" : "test2", + + taints{ + key = "key1" + value = "value1" + effect = "NoExecute" } } ``` diff --git a/website/docs/r/kubernetes_serverless_node_pool.html.markdown b/website/docs/r/kubernetes_serverless_node_pool.html.markdown index 100c16c96a..a45cfa0ef8 100644 --- a/website/docs/r/kubernetes_serverless_node_pool.html.markdown +++ b/website/docs/r/kubernetes_serverless_node_pool.html.markdown @@ -13,22 +13,100 @@ Provide a resource to create serverless node pool of cluster. ## Example Usage +### Add serverless node pool to a cluster + +```hcl +variable "availability_zone" { + default = "ap-guangzhou-3" +} + +variable "example_cluster_cidr" { + default = "10.31.0.0/16" +} + +locals { + vpc_id = data.tencentcloud_vpc_subnets.vpc.instance_list.0.vpc_id + subnet_id = data.tencentcloud_vpc_subnets.vpc.instance_list.0.subnet_id + sg_id = data.tencentcloud_security_groups.sg.security_groups.0.security_group_id +} + +data "tencentcloud_vpc_subnets" "vpc" { + is_default = true + availability_zone = var.availability_zone +} + +data "tencentcloud_security_groups" "sg" { + name = "default" +} + +resource "tencentcloud_kubernetes_cluster" "example" { + vpc_id = local.vpc_id + cluster_cidr = var.example_cluster_cidr + cluster_max_pod_num = 32 + cluster_name = "tf_example_cluster" + cluster_desc = "tf example cluster" + cluster_max_service_num = 32 + cluster_version = "1.18.4" + cluster_deploy_type = "MANAGED_CLUSTER" +} + +resource "tencentcloud_kubernetes_serverless_node_pool" "example" { + cluster_id = tencentcloud_kubernetes_cluster.example.id + name = "tf_example_serverless_node_pool" + + serverless_nodes { + display_name = "tf_example_serverless_node1" + subnet_id = local.subnet_id + } + + serverless_nodes { + display_name = "tf_example_serverless_node2" + subnet_id = local.subnet_id + } + + security_group_ids = [local.sg_id] + labels = { + "label1" : "value1", + "label2" : "value2", + } +} +``` + +### Adding taints to the virtual nodes under this node pool + +The pods without appropriate tolerations will not be scheduled on this node. Refer [taint-and-toleration](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) for more details. + ```hcl -resource "tencentcloud_kubernetes_serverless_node_pool" "example_serverless_node_pool" { +resource "tencentcloud_kubernetes_serverless_node_pool" "example" { cluster_id = tencentcloud_kubernetes_cluster.example.id - name = "example_node_pool" + name = "tf_example_serverless_node_pool" + serverless_nodes { - display_name = "serverless_node1" - subnet_id = "subnet-xxx" + display_name = "tf_example_serverless_node1" + subnet_id = local.subnet_id } + serverless_nodes { - display_name = "serverless_node2" - subnet_id = "subnet-xxx" + display_name = "tf_example_serverless_node2" + subnet_id = local.subnet_id } - security_group_ids = ["sg-xxx"] + + security_group_ids = [local.sg_id] labels = { - "example1" : "test1", - "example2" : "test2", + "label1" : "value1", + "label2" : "value2", + } + + taints { + key = "key1" + value = "value1" + effect = "NoSchedule" + } + + taints { + key = "key1" + value = "value1" + effect = "NoExecute" } } ``` From 91ea2178abaae60bfda58616a667d4e403613bc2 Mon Sep 17 00:00:00 2001 From: nickyinluo Date: Mon, 10 Jul 2023 19:46:31 +0800 Subject: [PATCH 2/2] 1.update e2e case name from tke to kubernetes. 2.update cluster_version to computed. 3.update example. --- tencentcloud/provider.go | 2 +- .../resource_tc_kubernetes_cluster.go | 1 + ...rce_tc_kubernetes_encryption_protection.go | 22 +++++++++---------- ...c_kubernetes_encryption_protection_test.go | 8 +++---- ...rnetes_encryption_protection.html.markdown | 6 ++--- 5 files changed, 17 insertions(+), 22 deletions(-) diff --git a/tencentcloud/provider.go b/tencentcloud/provider.go index e647a2b22b..a18be16d39 100644 --- a/tencentcloud/provider.go +++ b/tencentcloud/provider.go @@ -2319,7 +2319,7 @@ func Provider() *schema.Provider { "tencentcloud_kubernetes_node_pool": resourceTencentCloudKubernetesNodePool(), "tencentcloud_kubernetes_serverless_node_pool": resourceTkeServerLessNodePool(), "tencentcloud_kubernetes_backup_storage_location": resourceTencentCloudTkeBackupStorageLocation(), - "tencentcloud_kubernetes_encryption_protection": resourceTencentCloudTkeEncryptionProtection(), + "tencentcloud_kubernetes_encryption_protection": resourceTencentCloudKubernetesEncryptionProtection(), "tencentcloud_mysql_backup_policy": resourceTencentCloudMysqlBackupPolicy(), "tencentcloud_mysql_account": resourceTencentCloudMysqlAccount(), "tencentcloud_mysql_account_privilege": resourceTencentCloudMysqlAccountPrivilege(), diff --git a/tencentcloud/resource_tc_kubernetes_cluster.go b/tencentcloud/resource_tc_kubernetes_cluster.go index bd6c96062e..06971f4701 100644 --- a/tencentcloud/resource_tc_kubernetes_cluster.go +++ b/tencentcloud/resource_tc_kubernetes_cluster.go @@ -934,6 +934,7 @@ func resourceTencentCloudTkeCluster() *schema.Resource { "cluster_version": { Type: schema.TypeString, Optional: true, + Computed: true, Description: "Version of the cluster. Use `tencentcloud_kubernetes_available_cluster_versions` to get the upgradable cluster version.", }, "upgrade_instances_follow_cluster": { diff --git a/tencentcloud/resource_tc_kubernetes_encryption_protection.go b/tencentcloud/resource_tc_kubernetes_encryption_protection.go index 50f87c4088..de9e33a3bc 100644 --- a/tencentcloud/resource_tc_kubernetes_encryption_protection.go +++ b/tencentcloud/resource_tc_kubernetes_encryption_protection.go @@ -11,7 +11,7 @@ variable "example_region" { } variable "example_cluster_cidr" { - default = "10.31.0.0/16" + default = "10.32.0.0/16" } variable "availability_zone" { @@ -30,13 +30,11 @@ resource "tencentcloud_kubernetes_cluster" "example" { cluster_name = "tf_example_cluster" cluster_desc = "a tf example cluster for the kms test" cluster_max_service_num = 32 - cluster_internet = true - cluster_version = "1.24.4" cluster_deploy_type = "MANAGED_CLUSTER" } resource "tencentcloud_kms_key" "example" { - alias = "tf-example-kms-key-ed-%s" + alias = "tf-example-kms-key" description = "example of kms key instance" key_usage = "ENCRYPT_DECRYPT" is_enabled = true @@ -64,11 +62,11 @@ import ( "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudTkeEncryptionProtection() *schema.Resource { +func resourceTencentCloudKubernetesEncryptionProtection() *schema.Resource { return &schema.Resource{ - Create: resourceTencentCloudTkeEncryptionProtectionCreate, - Read: resourceTencentCloudTkeEncryptionProtectionRead, - Delete: resourceTencentCloudTkeEncryptionProtectionDelete, + Create: resourceTencentCloudKubernetesEncryptionProtectionCreate, + Read: resourceTencentCloudKubernetesEncryptionProtectionRead, + Delete: resourceTencentCloudKubernetesEncryptionProtectionDelete, Schema: map[string]*schema.Schema{ "cluster_id": { Required: true, @@ -107,7 +105,7 @@ func resourceTencentCloudTkeEncryptionProtection() *schema.Resource { } } -func resourceTencentCloudTkeEncryptionProtectionCreate(d *schema.ResourceData, meta interface{}) error { +func resourceTencentCloudKubernetesEncryptionProtectionCreate(d *schema.ResourceData, meta interface{}) error { defer logElapsed("resource.tencentcloud_tke_encryption_protection.create")() defer inconsistentCheck(d, meta)() @@ -157,10 +155,10 @@ func resourceTencentCloudTkeEncryptionProtectionCreate(d *schema.ResourceData, m return e } - return resourceTencentCloudTkeEncryptionProtectionRead(d, meta) + return resourceTencentCloudKubernetesEncryptionProtectionRead(d, meta) } -func resourceTencentCloudTkeEncryptionProtectionRead(d *schema.ResourceData, meta interface{}) error { +func resourceTencentCloudKubernetesEncryptionProtectionRead(d *schema.ResourceData, meta interface{}) error { defer logElapsed("resource.tencentcloud_tke_encryption_protection.read")() defer inconsistentCheck(d, meta)() @@ -190,7 +188,7 @@ func resourceTencentCloudTkeEncryptionProtectionRead(d *schema.ResourceData, met return nil } -func resourceTencentCloudTkeEncryptionProtectionDelete(d *schema.ResourceData, meta interface{}) error { +func resourceTencentCloudKubernetesEncryptionProtectionDelete(d *schema.ResourceData, meta interface{}) error { defer logElapsed("resource.tencentcloud_tke_encryption_protection.delete")() defer inconsistentCheck(d, meta)() diff --git a/tencentcloud/resource_tc_kubernetes_encryption_protection_test.go b/tencentcloud/resource_tc_kubernetes_encryption_protection_test.go index 4c5acbfa58..01de5e3076 100644 --- a/tencentcloud/resource_tc_kubernetes_encryption_protection_test.go +++ b/tencentcloud/resource_tc_kubernetes_encryption_protection_test.go @@ -8,7 +8,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) -func TestAccTencentCloudTkeEncryptionProtectionResource_basic(t *testing.T) { +func TestAccTencentCloudKubernetesEncryptionProtectionResource_basic(t *testing.T) { t.Parallel() rName := acctest.RandString(10) resource.Test(t, resource.TestCase{ @@ -21,7 +21,7 @@ func TestAccTencentCloudTkeEncryptionProtectionResource_basic(t *testing.T) { Config: fmt.Sprintf(testAccTkeEncryptionProtection, rName), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet("tencentcloud_kubernetes_encryption_protection.example", "id"), - resource.TestCheckResourceAttr("tencentcloud_kubernetes_encryption_protection.example", "cluster_id", defaultTkeClusterId), + resource.TestCheckResourceAttrSet("tencentcloud_kubernetes_encryption_protection.example", "cluster_id"), resource.TestCheckResourceAttrSet("tencentcloud_kubernetes_encryption_protection.example", "kms_configuration.#"), resource.TestCheckResourceAttrSet("tencentcloud_kubernetes_encryption_protection.example", "kms_configuration.0.key_id"), resource.TestCheckResourceAttr("tencentcloud_kubernetes_encryption_protection.example", "kms_configuration.0.kms_region", "ap-guangzhou"), @@ -39,7 +39,7 @@ variable "example_region" { } variable "example_cluster_cidr" { - default = "10.31.0.0/16" + default = "10.32.0.0/16" } variable "availability_zone" { @@ -58,8 +58,6 @@ resource "tencentcloud_kubernetes_cluster" "example" { cluster_name = "tf_example_cluster" cluster_desc = "a tf example cluster for the kms test" cluster_max_service_num = 32 - cluster_internet = true - cluster_version = "1.24.4" cluster_deploy_type = "MANAGED_CLUSTER" } diff --git a/website/docs/r/kubernetes_encryption_protection.html.markdown b/website/docs/r/kubernetes_encryption_protection.html.markdown index 08451c5ef7..ea080435e6 100644 --- a/website/docs/r/kubernetes_encryption_protection.html.markdown +++ b/website/docs/r/kubernetes_encryption_protection.html.markdown @@ -21,7 +21,7 @@ variable "example_region" { } variable "example_cluster_cidr" { - default = "10.31.0.0/16" + default = "10.32.0.0/16" } variable "availability_zone" { @@ -40,13 +40,11 @@ resource "tencentcloud_kubernetes_cluster" "example" { cluster_name = "tf_example_cluster" cluster_desc = "a tf example cluster for the kms test" cluster_max_service_num = 32 - cluster_internet = true - cluster_version = "1.24.4" cluster_deploy_type = "MANAGED_CLUSTER" } resource "tencentcloud_kms_key" "example" { - alias = "tf-example-kms-key-ed-%s" + alias = "tf-example-kms-key" description = "example of kms key instance" key_usage = "ENCRYPT_DECRYPT" is_enabled = true