1+ # create tke
2+ variable "default_instance_type" {
3+ default = " SA1.MEDIUM2"
4+ }
5+
6+ variable "availability_zone_first" {
7+ default = " ap-guangzhou-3"
8+ }
9+
10+ variable "availability_zone_second" {
11+ default = " ap-guangzhou-4"
12+ }
13+
14+ variable "example_cluster_cidr" {
15+ default = " 10.31.0.0/16"
16+ }
17+
18+ locals {
19+ first_vpc_id = data. tencentcloud_vpc_subnets . vpc_one . instance_list . 0 . vpc_id
20+ first_subnet_id = data. tencentcloud_vpc_subnets . vpc_one . instance_list . 0 . subnet_id
21+ second_vpc_id = data. tencentcloud_vpc_subnets . vpc_two . instance_list . 0 . vpc_id
22+ second_subnet_id = data. tencentcloud_vpc_subnets . vpc_two . instance_list . 0 . subnet_id
23+ sg_id = tencentcloud_security_group. sg . id
24+ image_id = data. tencentcloud_images . default . image_id
25+ }
26+
27+ data "tencentcloud_vpc_subnets" "vpc_one" {
28+ is_default = true
29+ availability_zone = var. availability_zone_first
30+ }
31+
32+ data "tencentcloud_vpc_subnets" "vpc_two" {
33+ is_default = true
34+ availability_zone = var. availability_zone_second
35+ }
36+
37+ resource "tencentcloud_security_group" "sg" {
38+ name = " tf-example-sg"
39+ }
40+
41+ resource "tencentcloud_security_group_lite_rule" "sg_rule" {
42+ security_group_id = tencentcloud_security_group. sg . id
43+
44+ ingress = [
45+ " ACCEPT#10.0.0.0/16#ALL#ALL" ,
46+ " ACCEPT#172.16.0.0/22#ALL#ALL" ,
47+ " DROP#0.0.0.0/0#ALL#ALL" ,
48+ ]
49+
50+ egress = [
51+ " ACCEPT#172.16.0.0/22#ALL#ALL" ,
52+ ]
53+ }
54+
55+ data "tencentcloud_images" "default" {
56+ image_type = [" PUBLIC_IMAGE" ]
57+ image_name_regex = " Final"
58+ }
59+
60+ resource "tencentcloud_kubernetes_cluster" "example" {
61+ vpc_id = local. first_vpc_id
62+ cluster_cidr = var. example_cluster_cidr
63+ cluster_max_pod_num = 32
64+ cluster_name = " tf_example_cluster"
65+ cluster_desc = " example for tke cluster"
66+ cluster_max_service_num = 32
67+ cluster_internet = false
68+ cluster_internet_security_group = local. sg_id
69+ cluster_version = " 1.22.5"
70+ cluster_deploy_type = " MANAGED_CLUSTER"
71+
72+ worker_config {
73+ count = 1
74+ availability_zone = var. availability_zone_first
75+ instance_type = var. default_instance_type
76+ system_disk_type = " CLOUD_SSD"
77+ system_disk_size = 60
78+ internet_charge_type = " TRAFFIC_POSTPAID_BY_HOUR"
79+ internet_max_bandwidth_out = 100
80+ public_ip_assigned = true
81+ subnet_id = local. first_subnet_id
82+ img_id = local. image_id
83+
84+ data_disk {
85+ disk_type = " CLOUD_PREMIUM"
86+ disk_size = 50
87+ }
88+
89+ enhanced_security_service = false
90+ enhanced_monitor_service = false
91+ user_data = " dGVzdA=="
92+ # key_ids = ["skey-11112222"]
93+ password = " ZZXXccvv1212" // Optional, should be set if key_ids not set.
94+ }
95+
96+ worker_config {
97+ count = 1
98+ availability_zone = var. availability_zone_second
99+ instance_type = var. default_instance_type
100+ system_disk_type = " CLOUD_SSD"
101+ system_disk_size = 60
102+ internet_charge_type = " TRAFFIC_POSTPAID_BY_HOUR"
103+ internet_max_bandwidth_out = 100
104+ public_ip_assigned = true
105+ subnet_id = local. second_subnet_id
106+
107+ data_disk {
108+ disk_type = " CLOUD_PREMIUM"
109+ disk_size = 50
110+ }
111+
112+ enhanced_security_service = false
113+ enhanced_monitor_service = false
114+ user_data = " dGVzdA=="
115+ # key_ids = ["skey-11112222"]
116+ cam_role_name = " CVM_QcsRole"
117+ password = " ZZXXccvv1212" // Optional, should be set if key_ids not set.
118+ }
119+
120+ labels = {
121+ " test1" = " test1" ,
122+ " test2" = " test2" ,
123+ }
124+ }
125+
126+
127+ # create monitor
128+ variable "zone" {
129+ default = " ap-guangzhou"
130+ }
131+
132+ variable "cluster_type" {
133+ default = " tke"
134+ }
135+
136+ resource "tencentcloud_monitor_tmp_instance" "foo" {
137+ instance_name = " tf-tmp-instance"
138+ vpc_id = local. first_vpc_id
139+ subnet_id = local. first_subnet_id
140+ data_retention_time = 30
141+ zone = var. availability_zone_second
142+ tags = {
143+ " createdBy" = " terraform"
144+ }
145+ }
146+
147+
148+ # tmp tke bind
149+ resource "tencentcloud_monitor_tmp_tke_cluster_agent" "foo" {
150+ instance_id = tencentcloud_monitor_tmp_instance. foo . id
151+
152+ agents {
153+ region = var. zone
154+ cluster_type = var. cluster_type
155+ cluster_id = tencentcloud_kubernetes_cluster. example . id
156+ enable_external = false
157+ }
158+ }
159+
160+ # create monitor template
161+ resource "tencentcloud_monitor_tmp_tke_template" "foo" {
162+ template {
163+ name = " tf-template"
164+ level = " cluster"
165+ describe = " template"
166+ service_monitors {
167+ name = " tf-ServiceMonitor"
168+ config = <<- EOT
169+ apiVersion: monitoring.coreos.com/v1
170+ kind: ServiceMonitor
171+ metadata:
172+ name: example-service-monitor
173+ namespace: monitoring
174+ labels:
175+ k8s-app: example-service
176+ spec:
177+ selector:
178+ matchLabels:
179+ k8s-app: example-service
180+ namespaceSelector:
181+ matchNames:
182+ - default
183+ endpoints:
184+ - port: http-metrics
185+ interval: 30s
186+ path: /metrics
187+ scheme: http
188+ bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
189+ tlsConfig:
190+ insecureSkipVerify: true
191+ EOT
192+ }
193+
194+ pod_monitors {
195+ name = " tf-PodMonitors"
196+ config = <<- EOT
197+ apiVersion: monitoring.coreos.com/v1
198+ kind: PodMonitor
199+ metadata:
200+ name: example-pod-monitor
201+ namespace: monitoring
202+ labels:
203+ k8s-app: example-pod
204+ spec:
205+ selector:
206+ matchLabels:
207+ k8s-app: example-pod
208+ namespaceSelector:
209+ matchNames:
210+ - default
211+ podMetricsEndpoints:
212+ - port: http-metrics
213+ interval: 30s
214+ path: /metrics
215+ scheme: http
216+ bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
217+ tlsConfig:
218+ insecureSkipVerify: true
219+ EOT
220+ }
221+
222+ pod_monitors {
223+ name = " tf-RawJobs"
224+ config = <<- EOT
225+ scrape_configs:
226+ - job_name: 'example-job'
227+ scrape_interval: 30s
228+ static_configs:
229+ - targets: ['example-service.default.svc.cluster.local:8080']
230+ metrics_path: /metrics
231+ scheme: http
232+ bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
233+ tls_config:
234+ insecure_skip_verify: true
235+ EOT
236+ }
237+ }
238+ }
239+
240+ resource "tencentcloud_monitor_tmp_tke_template_attachment" "temp_attachment" {
241+ template_id = tencentcloud_monitor_tmp_tke_template. foo . id
242+
243+ targets {
244+ cluster_type = var. cluster_type
245+ cluster_id = tencentcloud_kubernetes_cluster. example . id
246+ region = var. zone
247+ instance_id = tencentcloud_monitor_tmp_instance. foo . id
248+ }
249+
250+ depends_on = [tencentcloud_monitor_tmp_tke_cluster_agent . foo ]
251+ }
0 commit comments