tencentcloud.MonitorTmpTkeTemplateAttachment
Explore with Pulumi AI
Provides a resource to create a tmp tke template attachment
Example Usage
import * as pulumi from "@pulumi/pulumi";
import * as tencentcloud from "@pulumi/tencentcloud";
const config = new pulumi.Config();
const defaultInstanceType = config.get("defaultInstanceType") || "SA1.MEDIUM2";
const availabilityZoneFirst = config.get("availabilityZoneFirst") || "ap-guangzhou-3";
const availabilityZoneSecond = config.get("availabilityZoneSecond") || "ap-guangzhou-4";
const exampleClusterCidr = config.get("exampleClusterCidr") || "10.31.0.0/16";
const vpcOne = tencentcloud.getVpcSubnets({
isDefault: true,
availabilityZone: availabilityZoneFirst,
});
const firstVpcId = vpcOne.then(vpcOne => vpcOne.instanceLists?.[0]?.vpcId);
const firstSubnetId = vpcOne.then(vpcOne => vpcOne.instanceLists?.[0]?.subnetId);
const vpcTwo = tencentcloud.getVpcSubnets({
isDefault: true,
availabilityZone: availabilityZoneSecond,
});
const secondVpcId = vpcTwo.then(vpcTwo => vpcTwo.instanceLists?.[0]?.vpcId);
const secondSubnetId = vpcTwo.then(vpcTwo => vpcTwo.instanceLists?.[0]?.subnetId);
const sg = new tencentcloud.SecurityGroup("sg", {});
const sgId = sg.securityGroupId;
const _default = tencentcloud.getImages({
imageTypes: ["PUBLIC_IMAGE"],
imageNameRegex: "Final",
});
const imageId = _default.then(_default => _default.imageId);
const sgRule = new tencentcloud.SecurityGroupLiteRule("sgRule", {
securityGroupId: sg.securityGroupId,
ingresses: [
"ACCEPT#10.0.0.0/16#ALL#ALL",
"ACCEPT#172.16.0.0/22#ALL#ALL",
"DROP#0.0.0.0/0#ALL#ALL",
],
egresses: ["ACCEPT#172.16.0.0/22#ALL#ALL"],
});
const example = new tencentcloud.KubernetesCluster("example", {
vpcId: firstVpcId,
clusterCidr: exampleClusterCidr,
clusterMaxPodNum: 32,
clusterName: "tf_example_cluster",
clusterDesc: "example for tke cluster",
clusterMaxServiceNum: 32,
clusterInternet: false,
clusterInternetSecurityGroup: sgId,
clusterVersion: "1.22.5",
clusterDeployType: "MANAGED_CLUSTER",
workerConfigs: [
{
count: 1,
availabilityZone: availabilityZoneFirst,
instanceType: defaultInstanceType,
systemDiskType: "CLOUD_SSD",
systemDiskSize: 60,
internetChargeType: "TRAFFIC_POSTPAID_BY_HOUR",
internetMaxBandwidthOut: 100,
publicIpAssigned: true,
subnetId: firstSubnetId,
imgId: imageId,
dataDisks: [{
diskType: "CLOUD_PREMIUM",
diskSize: 50,
}],
enhancedSecurityService: false,
enhancedMonitorService: false,
userData: "dGVzdA==",
password: "ZZXXccvv1212",
},
{
count: 1,
availabilityZone: availabilityZoneSecond,
instanceType: defaultInstanceType,
systemDiskType: "CLOUD_SSD",
systemDiskSize: 60,
internetChargeType: "TRAFFIC_POSTPAID_BY_HOUR",
internetMaxBandwidthOut: 100,
publicIpAssigned: true,
subnetId: secondSubnetId,
dataDisks: [{
diskType: "CLOUD_PREMIUM",
diskSize: 50,
}],
enhancedSecurityService: false,
enhancedMonitorService: false,
userData: "dGVzdA==",
camRoleName: "CVM_QcsRole",
password: "ZZXXccvv1212",
},
],
labels: {
test1: "test1",
test2: "test2",
},
});
const zone = config.get("zone") || "ap-guangzhou";
const clusterType = config.get("clusterType") || "tke";
const fooMonitorTmpInstance = new tencentcloud.MonitorTmpInstance("fooMonitorTmpInstance", {
instanceName: "tf-tmp-instance",
vpcId: firstVpcId,
subnetId: firstSubnetId,
dataRetentionTime: 30,
zone: availabilityZoneSecond,
tags: {
createdBy: "terraform",
},
});
// tmp tke bind
const fooMonitorTmpTkeClusterAgent = new tencentcloud.MonitorTmpTkeClusterAgent("fooMonitorTmpTkeClusterAgent", {
instanceId: fooMonitorTmpInstance.monitorTmpInstanceId,
agents: {
region: zone,
clusterType: clusterType,
clusterId: example.kubernetesClusterId,
enableExternal: false,
},
});
// create monitor template
const fooMonitorTmpTkeTemplate = new tencentcloud.MonitorTmpTkeTemplate("fooMonitorTmpTkeTemplate", {template: {
name: "tf-template",
level: "cluster",
describe: "template",
serviceMonitors: [{
name: "tf-ServiceMonitor",
config: `apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: example-service-monitor
namespace: monitoring
labels:
k8s-app: example-service
spec:
selector:
matchLabels:
k8s-app: example-service
namespaceSelector:
matchNames:
- default
endpoints:
- port: http-metrics
interval: 30s
path: /metrics
scheme: http
bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
tlsConfig:
insecureSkipVerify: true
`,
}],
podMonitors: [
{
name: "tf-PodMonitors",
config: `apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: example-pod-monitor
namespace: monitoring
labels:
k8s-app: example-pod
spec:
selector:
matchLabels:
k8s-app: example-pod
namespaceSelector:
matchNames:
- default
podMetricsEndpoints:
- port: http-metrics
interval: 30s
path: /metrics
scheme: http
bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
tlsConfig:
insecureSkipVerify: true
`,
},
{
name: "tf-RawJobs",
config: `scrape_configs:
- job_name: 'example-job'
scrape_interval: 30s
static_configs:
- targets: ['example-service.default.svc.cluster.local:8080']
metrics_path: /metrics
scheme: http
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
tls_config:
insecure_skip_verify: true
`,
},
],
}});
const tempAttachment = new tencentcloud.MonitorTmpTkeTemplateAttachment("tempAttachment", {
templateId: fooMonitorTmpTkeTemplate.monitorTmpTkeTemplateId,
targets: {
clusterType: clusterType,
clusterId: example.kubernetesClusterId,
region: zone,
instanceId: fooMonitorTmpInstance.monitorTmpInstanceId,
},
}, {
dependsOn: [fooMonitorTmpTkeClusterAgent],
});
import pulumi
import pulumi_tencentcloud as tencentcloud
config = pulumi.Config()
default_instance_type = config.get("defaultInstanceType")
if default_instance_type is None:
default_instance_type = "SA1.MEDIUM2"
availability_zone_first = config.get("availabilityZoneFirst")
if availability_zone_first is None:
availability_zone_first = "ap-guangzhou-3"
availability_zone_second = config.get("availabilityZoneSecond")
if availability_zone_second is None:
availability_zone_second = "ap-guangzhou-4"
example_cluster_cidr = config.get("exampleClusterCidr")
if example_cluster_cidr is None:
example_cluster_cidr = "10.31.0.0/16"
vpc_one = tencentcloud.get_vpc_subnets(is_default=True,
availability_zone=availability_zone_first)
first_vpc_id = vpc_one.instance_lists[0].vpc_id
first_subnet_id = vpc_one.instance_lists[0].subnet_id
vpc_two = tencentcloud.get_vpc_subnets(is_default=True,
availability_zone=availability_zone_second)
second_vpc_id = vpc_two.instance_lists[0].vpc_id
second_subnet_id = vpc_two.instance_lists[0].subnet_id
sg = tencentcloud.SecurityGroup("sg")
sg_id = sg.security_group_id
default = tencentcloud.get_images(image_types=["PUBLIC_IMAGE"],
image_name_regex="Final")
image_id = default.image_id
sg_rule = tencentcloud.SecurityGroupLiteRule("sgRule",
security_group_id=sg.security_group_id,
ingresses=[
"ACCEPT#10.0.0.0/16#ALL#ALL",
"ACCEPT#172.16.0.0/22#ALL#ALL",
"DROP#0.0.0.0/0#ALL#ALL",
],
egresses=["ACCEPT#172.16.0.0/22#ALL#ALL"])
example = tencentcloud.KubernetesCluster("example",
vpc_id=first_vpc_id,
cluster_cidr=example_cluster_cidr,
cluster_max_pod_num=32,
cluster_name="tf_example_cluster",
cluster_desc="example for tke cluster",
cluster_max_service_num=32,
cluster_internet=False,
cluster_internet_security_group=sg_id,
cluster_version="1.22.5",
cluster_deploy_type="MANAGED_CLUSTER",
worker_configs=[
{
"count": 1,
"availability_zone": availability_zone_first,
"instance_type": 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": first_subnet_id,
"img_id": image_id,
"data_disks": [{
"disk_type": "CLOUD_PREMIUM",
"disk_size": 50,
}],
"enhanced_security_service": False,
"enhanced_monitor_service": False,
"user_data": "dGVzdA==",
"password": "ZZXXccvv1212",
},
{
"count": 1,
"availability_zone": availability_zone_second,
"instance_type": 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": second_subnet_id,
"data_disks": [{
"disk_type": "CLOUD_PREMIUM",
"disk_size": 50,
}],
"enhanced_security_service": False,
"enhanced_monitor_service": False,
"user_data": "dGVzdA==",
"cam_role_name": "CVM_QcsRole",
"password": "ZZXXccvv1212",
},
],
labels={
"test1": "test1",
"test2": "test2",
})
zone = config.get("zone")
if zone is None:
zone = "ap-guangzhou"
cluster_type = config.get("clusterType")
if cluster_type is None:
cluster_type = "tke"
foo_monitor_tmp_instance = tencentcloud.MonitorTmpInstance("fooMonitorTmpInstance",
instance_name="tf-tmp-instance",
vpc_id=first_vpc_id,
subnet_id=first_subnet_id,
data_retention_time=30,
zone=availability_zone_second,
tags={
"createdBy": "terraform",
})
# tmp tke bind
foo_monitor_tmp_tke_cluster_agent = tencentcloud.MonitorTmpTkeClusterAgent("fooMonitorTmpTkeClusterAgent",
instance_id=foo_monitor_tmp_instance.monitor_tmp_instance_id,
agents={
"region": zone,
"cluster_type": cluster_type,
"cluster_id": example.kubernetes_cluster_id,
"enable_external": False,
})
# create monitor template
foo_monitor_tmp_tke_template = tencentcloud.MonitorTmpTkeTemplate("fooMonitorTmpTkeTemplate", template={
"name": "tf-template",
"level": "cluster",
"describe": "template",
"service_monitors": [{
"name": "tf-ServiceMonitor",
"config": """apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: example-service-monitor
namespace: monitoring
labels:
k8s-app: example-service
spec:
selector:
matchLabels:
k8s-app: example-service
namespaceSelector:
matchNames:
- default
endpoints:
- port: http-metrics
interval: 30s
path: /metrics
scheme: http
bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
tlsConfig:
insecureSkipVerify: true
""",
}],
"pod_monitors": [
{
"name": "tf-PodMonitors",
"config": """apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: example-pod-monitor
namespace: monitoring
labels:
k8s-app: example-pod
spec:
selector:
matchLabels:
k8s-app: example-pod
namespaceSelector:
matchNames:
- default
podMetricsEndpoints:
- port: http-metrics
interval: 30s
path: /metrics
scheme: http
bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
tlsConfig:
insecureSkipVerify: true
""",
},
{
"name": "tf-RawJobs",
"config": """scrape_configs:
- job_name: 'example-job'
scrape_interval: 30s
static_configs:
- targets: ['example-service.default.svc.cluster.local:8080']
metrics_path: /metrics
scheme: http
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
tls_config:
insecure_skip_verify: true
""",
},
],
})
temp_attachment = tencentcloud.MonitorTmpTkeTemplateAttachment("tempAttachment",
template_id=foo_monitor_tmp_tke_template.monitor_tmp_tke_template_id,
targets={
"cluster_type": cluster_type,
"cluster_id": example.kubernetes_cluster_id,
"region": zone,
"instance_id": foo_monitor_tmp_instance.monitor_tmp_instance_id,
},
opts = pulumi.ResourceOptions(depends_on=[foo_monitor_tmp_tke_cluster_agent]))
package main
import (
"github.com/pulumi/pulumi-terraform-provider/sdks/go/tencentcloud/tencentcloud"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
cfg := config.New(ctx, "")
defaultInstanceType := "SA1.MEDIUM2"
if param := cfg.Get("defaultInstanceType"); param != "" {
defaultInstanceType = param
}
availabilityZoneFirst := "ap-guangzhou-3"
if param := cfg.Get("availabilityZoneFirst"); param != "" {
availabilityZoneFirst = param
}
availabilityZoneSecond := "ap-guangzhou-4"
if param := cfg.Get("availabilityZoneSecond"); param != "" {
availabilityZoneSecond = param
}
exampleClusterCidr := "10.31.0.0/16"
if param := cfg.Get("exampleClusterCidr"); param != "" {
exampleClusterCidr = param
}
vpcOne, err := tencentcloud.GetVpcSubnets(ctx, &tencentcloud.GetVpcSubnetsArgs{
IsDefault: pulumi.BoolRef(true),
AvailabilityZone: pulumi.StringRef(availabilityZoneFirst),
}, nil)
if err != nil {
return err
}
firstVpcId := vpcOne.InstanceLists[0].VpcId
firstSubnetId := vpcOne.InstanceLists[0].SubnetId
vpcTwo, err := tencentcloud.GetVpcSubnets(ctx, &tencentcloud.GetVpcSubnetsArgs{
IsDefault: pulumi.BoolRef(true),
AvailabilityZone: pulumi.StringRef(availabilityZoneSecond),
}, nil)
if err != nil {
return err
}
_ := vpcTwo.InstanceLists[0].VpcId
secondSubnetId := vpcTwo.InstanceLists[0].SubnetId
sg, err := tencentcloud.NewSecurityGroup(ctx, "sg", nil)
if err != nil {
return err
}
sgId := sg.SecurityGroupId
_default, err := tencentcloud.GetImages(ctx, &tencentcloud.GetImagesArgs{
ImageTypes: []string{
"PUBLIC_IMAGE",
},
ImageNameRegex: pulumi.StringRef("Final"),
}, nil)
if err != nil {
return err
}
imageId := _default.ImageId
_, err = tencentcloud.NewSecurityGroupLiteRule(ctx, "sgRule", &tencentcloud.SecurityGroupLiteRuleArgs{
SecurityGroupId: sg.SecurityGroupId,
Ingresses: pulumi.StringArray{
pulumi.String("ACCEPT#10.0.0.0/16#ALL#ALL"),
pulumi.String("ACCEPT#172.16.0.0/22#ALL#ALL"),
pulumi.String("DROP#0.0.0.0/0#ALL#ALL"),
},
Egresses: pulumi.StringArray{
pulumi.String("ACCEPT#172.16.0.0/22#ALL#ALL"),
},
})
if err != nil {
return err
}
example, err := tencentcloud.NewKubernetesCluster(ctx, "example", &tencentcloud.KubernetesClusterArgs{
VpcId: pulumi.String(firstVpcId),
ClusterCidr: pulumi.String(exampleClusterCidr),
ClusterMaxPodNum: pulumi.Float64(32),
ClusterName: pulumi.String("tf_example_cluster"),
ClusterDesc: pulumi.String("example for tke cluster"),
ClusterMaxServiceNum: pulumi.Float64(32),
ClusterInternet: pulumi.Bool(false),
ClusterInternetSecurityGroup: pulumi.String(sgId),
ClusterVersion: pulumi.String("1.22.5"),
ClusterDeployType: pulumi.String("MANAGED_CLUSTER"),
WorkerConfigs: tencentcloud.KubernetesClusterWorkerConfigArray{
&tencentcloud.KubernetesClusterWorkerConfigArgs{
Count: pulumi.Float64(1),
AvailabilityZone: pulumi.String(availabilityZoneFirst),
InstanceType: pulumi.String(defaultInstanceType),
SystemDiskType: pulumi.String("CLOUD_SSD"),
SystemDiskSize: pulumi.Float64(60),
InternetChargeType: pulumi.String("TRAFFIC_POSTPAID_BY_HOUR"),
InternetMaxBandwidthOut: pulumi.Float64(100),
PublicIpAssigned: pulumi.Bool(true),
SubnetId: pulumi.String(firstSubnetId),
ImgId: pulumi.String(imageId),
DataDisks: tencentcloud.KubernetesClusterWorkerConfigDataDiskArray{
&tencentcloud.KubernetesClusterWorkerConfigDataDiskArgs{
DiskType: pulumi.String("CLOUD_PREMIUM"),
DiskSize: pulumi.Float64(50),
},
},
EnhancedSecurityService: pulumi.Bool(false),
EnhancedMonitorService: pulumi.Bool(false),
UserData: pulumi.String("dGVzdA=="),
Password: pulumi.String("ZZXXccvv1212"),
},
&tencentcloud.KubernetesClusterWorkerConfigArgs{
Count: pulumi.Float64(1),
AvailabilityZone: pulumi.String(availabilityZoneSecond),
InstanceType: pulumi.String(defaultInstanceType),
SystemDiskType: pulumi.String("CLOUD_SSD"),
SystemDiskSize: pulumi.Float64(60),
InternetChargeType: pulumi.String("TRAFFIC_POSTPAID_BY_HOUR"),
InternetMaxBandwidthOut: pulumi.Float64(100),
PublicIpAssigned: pulumi.Bool(true),
SubnetId: pulumi.String(secondSubnetId),
DataDisks: tencentcloud.KubernetesClusterWorkerConfigDataDiskArray{
&tencentcloud.KubernetesClusterWorkerConfigDataDiskArgs{
DiskType: pulumi.String("CLOUD_PREMIUM"),
DiskSize: pulumi.Float64(50),
},
},
EnhancedSecurityService: pulumi.Bool(false),
EnhancedMonitorService: pulumi.Bool(false),
UserData: pulumi.String("dGVzdA=="),
CamRoleName: pulumi.String("CVM_QcsRole"),
Password: pulumi.String("ZZXXccvv1212"),
},
},
Labels: pulumi.StringMap{
"test1": pulumi.String("test1"),
"test2": pulumi.String("test2"),
},
})
if err != nil {
return err
}
zone := "ap-guangzhou"
if param := cfg.Get("zone"); param != "" {
zone = param
}
clusterType := "tke"
if param := cfg.Get("clusterType"); param != "" {
clusterType = param
}
fooMonitorTmpInstance, err := tencentcloud.NewMonitorTmpInstance(ctx, "fooMonitorTmpInstance", &tencentcloud.MonitorTmpInstanceArgs{
InstanceName: pulumi.String("tf-tmp-instance"),
VpcId: pulumi.String(firstVpcId),
SubnetId: pulumi.String(firstSubnetId),
DataRetentionTime: pulumi.Float64(30),
Zone: pulumi.String(availabilityZoneSecond),
Tags: pulumi.StringMap{
"createdBy": pulumi.String("terraform"),
},
})
if err != nil {
return err
}
// tmp tke bind
fooMonitorTmpTkeClusterAgent, err := tencentcloud.NewMonitorTmpTkeClusterAgent(ctx, "fooMonitorTmpTkeClusterAgent", &tencentcloud.MonitorTmpTkeClusterAgentArgs{
InstanceId: fooMonitorTmpInstance.MonitorTmpInstanceId,
Agents: &tencentcloud.MonitorTmpTkeClusterAgentAgentsArgs{
Region: pulumi.String(zone),
ClusterType: pulumi.String(clusterType),
ClusterId: example.KubernetesClusterId,
EnableExternal: pulumi.Bool(false),
},
})
if err != nil {
return err
}
// create monitor template
fooMonitorTmpTkeTemplate, err := tencentcloud.NewMonitorTmpTkeTemplate(ctx, "fooMonitorTmpTkeTemplate", &tencentcloud.MonitorTmpTkeTemplateArgs{
Template: &tencentcloud.MonitorTmpTkeTemplateTemplateArgs{
Name: pulumi.String("tf-template"),
Level: pulumi.String("cluster"),
Describe: pulumi.String("template"),
ServiceMonitors: tencentcloud.MonitorTmpTkeTemplateTemplateServiceMonitorArray{
&tencentcloud.MonitorTmpTkeTemplateTemplateServiceMonitorArgs{
Name: pulumi.String("tf-ServiceMonitor"),
Config: pulumi.String(`apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: example-service-monitor
namespace: monitoring
labels:
k8s-app: example-service
spec:
selector:
matchLabels:
k8s-app: example-service
namespaceSelector:
matchNames:
- default
endpoints:
- port: http-metrics
interval: 30s
path: /metrics
scheme: http
bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
tlsConfig:
insecureSkipVerify: true
`),
},
},
PodMonitors: tencentcloud.MonitorTmpTkeTemplateTemplatePodMonitorArray{
&tencentcloud.MonitorTmpTkeTemplateTemplatePodMonitorArgs{
Name: pulumi.String("tf-PodMonitors"),
Config: pulumi.String(`apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: example-pod-monitor
namespace: monitoring
labels:
k8s-app: example-pod
spec:
selector:
matchLabels:
k8s-app: example-pod
namespaceSelector:
matchNames:
- default
podMetricsEndpoints:
- port: http-metrics
interval: 30s
path: /metrics
scheme: http
bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
tlsConfig:
insecureSkipVerify: true
`),
},
&tencentcloud.MonitorTmpTkeTemplateTemplatePodMonitorArgs{
Name: pulumi.String("tf-RawJobs"),
Config: pulumi.String(`scrape_configs:
- job_name: 'example-job'
scrape_interval: 30s
static_configs:
- targets: ['example-service.default.svc.cluster.local:8080']
metrics_path: /metrics
scheme: http
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
tls_config:
insecure_skip_verify: true
`),
},
},
},
})
if err != nil {
return err
}
_, err = tencentcloud.NewMonitorTmpTkeTemplateAttachment(ctx, "tempAttachment", &tencentcloud.MonitorTmpTkeTemplateAttachmentArgs{
TemplateId: fooMonitorTmpTkeTemplate.MonitorTmpTkeTemplateId,
Targets: &tencentcloud.MonitorTmpTkeTemplateAttachmentTargetsArgs{
ClusterType: pulumi.String(clusterType),
ClusterId: example.KubernetesClusterId,
Region: pulumi.String(zone),
InstanceId: fooMonitorTmpInstance.MonitorTmpInstanceId,
},
}, pulumi.DependsOn([]pulumi.Resource{
fooMonitorTmpTkeClusterAgent,
}))
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Tencentcloud = Pulumi.Tencentcloud;
return await Deployment.RunAsync(() =>
{
var config = new Config();
var defaultInstanceType = config.Get("defaultInstanceType") ?? "SA1.MEDIUM2";
var availabilityZoneFirst = config.Get("availabilityZoneFirst") ?? "ap-guangzhou-3";
var availabilityZoneSecond = config.Get("availabilityZoneSecond") ?? "ap-guangzhou-4";
var exampleClusterCidr = config.Get("exampleClusterCidr") ?? "10.31.0.0/16";
var vpcOne = Tencentcloud.GetVpcSubnets.Invoke(new()
{
IsDefault = true,
AvailabilityZone = availabilityZoneFirst,
});
var firstVpcId = vpcOne.Apply(getVpcSubnetsResult => getVpcSubnetsResult.InstanceLists[0]?.VpcId);
var firstSubnetId = vpcOne.Apply(getVpcSubnetsResult => getVpcSubnetsResult.InstanceLists[0]?.SubnetId);
var vpcTwo = Tencentcloud.GetVpcSubnets.Invoke(new()
{
IsDefault = true,
AvailabilityZone = availabilityZoneSecond,
});
var secondVpcId = vpcTwo.Apply(getVpcSubnetsResult => getVpcSubnetsResult.InstanceLists[0]?.VpcId);
var secondSubnetId = vpcTwo.Apply(getVpcSubnetsResult => getVpcSubnetsResult.InstanceLists[0]?.SubnetId);
var sg = new Tencentcloud.SecurityGroup("sg");
var sgId = sg.SecurityGroupId;
var @default = Tencentcloud.GetImages.Invoke(new()
{
ImageTypes = new[]
{
"PUBLIC_IMAGE",
},
ImageNameRegex = "Final",
});
var imageId = @default.Apply(@default => @default.Apply(getImagesResult => getImagesResult.ImageId));
var sgRule = new Tencentcloud.SecurityGroupLiteRule("sgRule", new()
{
SecurityGroupId = sg.SecurityGroupId,
Ingresses = new[]
{
"ACCEPT#10.0.0.0/16#ALL#ALL",
"ACCEPT#172.16.0.0/22#ALL#ALL",
"DROP#0.0.0.0/0#ALL#ALL",
},
Egresses = new[]
{
"ACCEPT#172.16.0.0/22#ALL#ALL",
},
});
var example = new Tencentcloud.KubernetesCluster("example", new()
{
VpcId = firstVpcId,
ClusterCidr = exampleClusterCidr,
ClusterMaxPodNum = 32,
ClusterName = "tf_example_cluster",
ClusterDesc = "example for tke cluster",
ClusterMaxServiceNum = 32,
ClusterInternet = false,
ClusterInternetSecurityGroup = sgId,
ClusterVersion = "1.22.5",
ClusterDeployType = "MANAGED_CLUSTER",
WorkerConfigs = new[]
{
new Tencentcloud.Inputs.KubernetesClusterWorkerConfigArgs
{
Count = 1,
AvailabilityZone = availabilityZoneFirst,
InstanceType = defaultInstanceType,
SystemDiskType = "CLOUD_SSD",
SystemDiskSize = 60,
InternetChargeType = "TRAFFIC_POSTPAID_BY_HOUR",
InternetMaxBandwidthOut = 100,
PublicIpAssigned = true,
SubnetId = firstSubnetId,
ImgId = imageId,
DataDisks = new[]
{
new Tencentcloud.Inputs.KubernetesClusterWorkerConfigDataDiskArgs
{
DiskType = "CLOUD_PREMIUM",
DiskSize = 50,
},
},
EnhancedSecurityService = false,
EnhancedMonitorService = false,
UserData = "dGVzdA==",
Password = "ZZXXccvv1212",
},
new Tencentcloud.Inputs.KubernetesClusterWorkerConfigArgs
{
Count = 1,
AvailabilityZone = availabilityZoneSecond,
InstanceType = defaultInstanceType,
SystemDiskType = "CLOUD_SSD",
SystemDiskSize = 60,
InternetChargeType = "TRAFFIC_POSTPAID_BY_HOUR",
InternetMaxBandwidthOut = 100,
PublicIpAssigned = true,
SubnetId = secondSubnetId,
DataDisks = new[]
{
new Tencentcloud.Inputs.KubernetesClusterWorkerConfigDataDiskArgs
{
DiskType = "CLOUD_PREMIUM",
DiskSize = 50,
},
},
EnhancedSecurityService = false,
EnhancedMonitorService = false,
UserData = "dGVzdA==",
CamRoleName = "CVM_QcsRole",
Password = "ZZXXccvv1212",
},
},
Labels =
{
{ "test1", "test1" },
{ "test2", "test2" },
},
});
var zone = config.Get("zone") ?? "ap-guangzhou";
var clusterType = config.Get("clusterType") ?? "tke";
var fooMonitorTmpInstance = new Tencentcloud.MonitorTmpInstance("fooMonitorTmpInstance", new()
{
InstanceName = "tf-tmp-instance",
VpcId = firstVpcId,
SubnetId = firstSubnetId,
DataRetentionTime = 30,
Zone = availabilityZoneSecond,
Tags =
{
{ "createdBy", "terraform" },
},
});
// tmp tke bind
var fooMonitorTmpTkeClusterAgent = new Tencentcloud.MonitorTmpTkeClusterAgent("fooMonitorTmpTkeClusterAgent", new()
{
InstanceId = fooMonitorTmpInstance.MonitorTmpInstanceId,
Agents = new Tencentcloud.Inputs.MonitorTmpTkeClusterAgentAgentsArgs
{
Region = zone,
ClusterType = clusterType,
ClusterId = example.KubernetesClusterId,
EnableExternal = false,
},
});
// create monitor template
var fooMonitorTmpTkeTemplate = new Tencentcloud.MonitorTmpTkeTemplate("fooMonitorTmpTkeTemplate", new()
{
Template = new Tencentcloud.Inputs.MonitorTmpTkeTemplateTemplateArgs
{
Name = "tf-template",
Level = "cluster",
Describe = "template",
ServiceMonitors = new[]
{
new Tencentcloud.Inputs.MonitorTmpTkeTemplateTemplateServiceMonitorArgs
{
Name = "tf-ServiceMonitor",
Config = @"apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: example-service-monitor
namespace: monitoring
labels:
k8s-app: example-service
spec:
selector:
matchLabels:
k8s-app: example-service
namespaceSelector:
matchNames:
- default
endpoints:
- port: http-metrics
interval: 30s
path: /metrics
scheme: http
bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
tlsConfig:
insecureSkipVerify: true
",
},
},
PodMonitors = new[]
{
new Tencentcloud.Inputs.MonitorTmpTkeTemplateTemplatePodMonitorArgs
{
Name = "tf-PodMonitors",
Config = @"apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: example-pod-monitor
namespace: monitoring
labels:
k8s-app: example-pod
spec:
selector:
matchLabels:
k8s-app: example-pod
namespaceSelector:
matchNames:
- default
podMetricsEndpoints:
- port: http-metrics
interval: 30s
path: /metrics
scheme: http
bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
tlsConfig:
insecureSkipVerify: true
",
},
new Tencentcloud.Inputs.MonitorTmpTkeTemplateTemplatePodMonitorArgs
{
Name = "tf-RawJobs",
Config = @"scrape_configs:
- job_name: 'example-job'
scrape_interval: 30s
static_configs:
- targets: ['example-service.default.svc.cluster.local:8080']
metrics_path: /metrics
scheme: http
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
tls_config:
insecure_skip_verify: true
",
},
},
},
});
var tempAttachment = new Tencentcloud.MonitorTmpTkeTemplateAttachment("tempAttachment", new()
{
TemplateId = fooMonitorTmpTkeTemplate.MonitorTmpTkeTemplateId,
Targets = new Tencentcloud.Inputs.MonitorTmpTkeTemplateAttachmentTargetsArgs
{
ClusterType = clusterType,
ClusterId = example.KubernetesClusterId,
Region = zone,
InstanceId = fooMonitorTmpInstance.MonitorTmpInstanceId,
},
}, new CustomResourceOptions
{
DependsOn =
{
fooMonitorTmpTkeClusterAgent,
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.tencentcloud.TencentcloudFunctions;
import com.pulumi.tencentcloud.inputs.GetVpcSubnetsArgs;
import com.pulumi.tencentcloud.SecurityGroup;
import com.pulumi.tencentcloud.inputs.GetImagesArgs;
import com.pulumi.tencentcloud.SecurityGroupLiteRule;
import com.pulumi.tencentcloud.SecurityGroupLiteRuleArgs;
import com.pulumi.tencentcloud.KubernetesCluster;
import com.pulumi.tencentcloud.KubernetesClusterArgs;
import com.pulumi.tencentcloud.inputs.KubernetesClusterWorkerConfigArgs;
import com.pulumi.tencentcloud.MonitorTmpInstance;
import com.pulumi.tencentcloud.MonitorTmpInstanceArgs;
import com.pulumi.tencentcloud.MonitorTmpTkeClusterAgent;
import com.pulumi.tencentcloud.MonitorTmpTkeClusterAgentArgs;
import com.pulumi.tencentcloud.inputs.MonitorTmpTkeClusterAgentAgentsArgs;
import com.pulumi.tencentcloud.MonitorTmpTkeTemplate;
import com.pulumi.tencentcloud.MonitorTmpTkeTemplateArgs;
import com.pulumi.tencentcloud.inputs.MonitorTmpTkeTemplateTemplateArgs;
import com.pulumi.tencentcloud.MonitorTmpTkeTemplateAttachment;
import com.pulumi.tencentcloud.MonitorTmpTkeTemplateAttachmentArgs;
import com.pulumi.tencentcloud.inputs.MonitorTmpTkeTemplateAttachmentTargetsArgs;
import com.pulumi.resources.CustomResourceOptions;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
final var config = ctx.config();
final var defaultInstanceType = config.get("defaultInstanceType").orElse("SA1.MEDIUM2");
final var availabilityZoneFirst = config.get("availabilityZoneFirst").orElse("ap-guangzhou-3");
final var availabilityZoneSecond = config.get("availabilityZoneSecond").orElse("ap-guangzhou-4");
final var exampleClusterCidr = config.get("exampleClusterCidr").orElse("10.31.0.0/16");
final var vpcOne = TencentcloudFunctions.getVpcSubnets(GetVpcSubnetsArgs.builder()
.isDefault(true)
.availabilityZone(availabilityZoneFirst)
.build());
final var firstVpcId = vpcOne.applyValue(getVpcSubnetsResult -> getVpcSubnetsResult.instanceLists()[0].vpcId());
final var firstSubnetId = vpcOne.applyValue(getVpcSubnetsResult -> getVpcSubnetsResult.instanceLists()[0].subnetId());
final var vpcTwo = TencentcloudFunctions.getVpcSubnets(GetVpcSubnetsArgs.builder()
.isDefault(true)
.availabilityZone(availabilityZoneSecond)
.build());
final var secondVpcId = vpcTwo.applyValue(getVpcSubnetsResult -> getVpcSubnetsResult.instanceLists()[0].vpcId());
final var secondSubnetId = vpcTwo.applyValue(getVpcSubnetsResult -> getVpcSubnetsResult.instanceLists()[0].subnetId());
var sg = new SecurityGroup("sg");
final var sgId = sg.securityGroupId();
final var default = TencentcloudFunctions.getImages(GetImagesArgs.builder()
.imageTypes("PUBLIC_IMAGE")
.imageNameRegex("Final")
.build());
final var imageId = default_.imageId();
var sgRule = new SecurityGroupLiteRule("sgRule", SecurityGroupLiteRuleArgs.builder()
.securityGroupId(sg.securityGroupId())
.ingresses(
"ACCEPT#10.0.0.0/16#ALL#ALL",
"ACCEPT#172.16.0.0/22#ALL#ALL",
"DROP#0.0.0.0/0#ALL#ALL")
.egresses("ACCEPT#172.16.0.0/22#ALL#ALL")
.build());
var example = new KubernetesCluster("example", KubernetesClusterArgs.builder()
.vpcId(firstVpcId)
.clusterCidr(exampleClusterCidr)
.clusterMaxPodNum(32)
.clusterName("tf_example_cluster")
.clusterDesc("example for tke cluster")
.clusterMaxServiceNum(32)
.clusterInternet(false)
.clusterInternetSecurityGroup(sgId)
.clusterVersion("1.22.5")
.clusterDeployType("MANAGED_CLUSTER")
.workerConfigs(
KubernetesClusterWorkerConfigArgs.builder()
.count(1)
.availabilityZone(availabilityZoneFirst)
.instanceType(defaultInstanceType)
.systemDiskType("CLOUD_SSD")
.systemDiskSize(60)
.internetChargeType("TRAFFIC_POSTPAID_BY_HOUR")
.internetMaxBandwidthOut(100)
.publicIpAssigned(true)
.subnetId(firstSubnetId)
.imgId(imageId)
.dataDisks(KubernetesClusterWorkerConfigDataDiskArgs.builder()
.diskType("CLOUD_PREMIUM")
.diskSize(50)
.build())
.enhancedSecurityService(false)
.enhancedMonitorService(false)
.userData("dGVzdA==")
.password("ZZXXccvv1212")
.build(),
KubernetesClusterWorkerConfigArgs.builder()
.count(1)
.availabilityZone(availabilityZoneSecond)
.instanceType(defaultInstanceType)
.systemDiskType("CLOUD_SSD")
.systemDiskSize(60)
.internetChargeType("TRAFFIC_POSTPAID_BY_HOUR")
.internetMaxBandwidthOut(100)
.publicIpAssigned(true)
.subnetId(secondSubnetId)
.dataDisks(KubernetesClusterWorkerConfigDataDiskArgs.builder()
.diskType("CLOUD_PREMIUM")
.diskSize(50)
.build())
.enhancedSecurityService(false)
.enhancedMonitorService(false)
.userData("dGVzdA==")
.camRoleName("CVM_QcsRole")
.password("ZZXXccvv1212")
.build())
.labels(Map.ofEntries(
Map.entry("test1", "test1"),
Map.entry("test2", "test2")
))
.build());
final var zone = config.get("zone").orElse("ap-guangzhou");
final var clusterType = config.get("clusterType").orElse("tke");
var fooMonitorTmpInstance = new MonitorTmpInstance("fooMonitorTmpInstance", MonitorTmpInstanceArgs.builder()
.instanceName("tf-tmp-instance")
.vpcId(firstVpcId)
.subnetId(firstSubnetId)
.dataRetentionTime(30)
.zone(availabilityZoneSecond)
.tags(Map.of("createdBy", "terraform"))
.build());
// tmp tke bind
var fooMonitorTmpTkeClusterAgent = new MonitorTmpTkeClusterAgent("fooMonitorTmpTkeClusterAgent", MonitorTmpTkeClusterAgentArgs.builder()
.instanceId(fooMonitorTmpInstance.monitorTmpInstanceId())
.agents(MonitorTmpTkeClusterAgentAgentsArgs.builder()
.region(zone)
.clusterType(clusterType)
.clusterId(example.kubernetesClusterId())
.enableExternal(false)
.build())
.build());
// create monitor template
var fooMonitorTmpTkeTemplate = new MonitorTmpTkeTemplate("fooMonitorTmpTkeTemplate", MonitorTmpTkeTemplateArgs.builder()
.template(MonitorTmpTkeTemplateTemplateArgs.builder()
.name("tf-template")
.level("cluster")
.describe("template")
.serviceMonitors(MonitorTmpTkeTemplateTemplateServiceMonitorArgs.builder()
.name("tf-ServiceMonitor")
.config("""
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: example-service-monitor
namespace: monitoring
labels:
k8s-app: example-service
spec:
selector:
matchLabels:
k8s-app: example-service
namespaceSelector:
matchNames:
- default
endpoints:
- port: http-metrics
interval: 30s
path: /metrics
scheme: http
bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
tlsConfig:
insecureSkipVerify: true
""")
.build())
.podMonitors(
MonitorTmpTkeTemplateTemplatePodMonitorArgs.builder()
.name("tf-PodMonitors")
.config("""
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: example-pod-monitor
namespace: monitoring
labels:
k8s-app: example-pod
spec:
selector:
matchLabels:
k8s-app: example-pod
namespaceSelector:
matchNames:
- default
podMetricsEndpoints:
- port: http-metrics
interval: 30s
path: /metrics
scheme: http
bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
tlsConfig:
insecureSkipVerify: true
""")
.build(),
MonitorTmpTkeTemplateTemplatePodMonitorArgs.builder()
.name("tf-RawJobs")
.config("""
scrape_configs:
- job_name: 'example-job'
scrape_interval: 30s
static_configs:
- targets: ['example-service.default.svc.cluster.local:8080']
metrics_path: /metrics
scheme: http
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
tls_config:
insecure_skip_verify: true
""")
.build())
.build())
.build());
var tempAttachment = new MonitorTmpTkeTemplateAttachment("tempAttachment", MonitorTmpTkeTemplateAttachmentArgs.builder()
.templateId(fooMonitorTmpTkeTemplate.monitorTmpTkeTemplateId())
.targets(MonitorTmpTkeTemplateAttachmentTargetsArgs.builder()
.clusterType(clusterType)
.clusterId(example.kubernetesClusterId())
.region(zone)
.instanceId(fooMonitorTmpInstance.monitorTmpInstanceId())
.build())
.build(), CustomResourceOptions.builder()
.dependsOn(fooMonitorTmpTkeClusterAgent)
.build());
}
}
configuration:
# create tke
defaultInstanceType:
type: string
default: SA1.MEDIUM2
availabilityZoneFirst:
type: string
default: ap-guangzhou-3
availabilityZoneSecond:
type: string
default: ap-guangzhou-4
exampleClusterCidr:
type: string
default: 10.31.0.0/16
# create monitor
zone:
type: string
default: ap-guangzhou
clusterType:
type: string
default: tke
resources:
sg:
type: tencentcloud:SecurityGroup
sgRule:
type: tencentcloud:SecurityGroupLiteRule
properties:
securityGroupId: ${sg.securityGroupId}
ingresses:
- ACCEPT#10.0.0.0/16#ALL#ALL
- ACCEPT#172.16.0.0/22#ALL#ALL
- DROP#0.0.0.0/0#ALL#ALL
egresses:
- ACCEPT#172.16.0.0/22#ALL#ALL
example:
type: tencentcloud:KubernetesCluster
properties:
vpcId: ${firstVpcId}
clusterCidr: ${exampleClusterCidr}
clusterMaxPodNum: 32
clusterName: tf_example_cluster
clusterDesc: example for tke cluster
clusterMaxServiceNum: 32
clusterInternet: false
clusterInternetSecurityGroup: ${sgId}
clusterVersion: 1.22.5
clusterDeployType: MANAGED_CLUSTER
workerConfigs:
- count: 1
availabilityZone: ${availabilityZoneFirst}
instanceType: ${defaultInstanceType}
systemDiskType: CLOUD_SSD
systemDiskSize: 60
internetChargeType: TRAFFIC_POSTPAID_BY_HOUR
internetMaxBandwidthOut: 100
publicIpAssigned: true
subnetId: ${firstSubnetId}
imgId: ${imageId}
dataDisks:
- diskType: CLOUD_PREMIUM
diskSize: 50
enhancedSecurityService: false
enhancedMonitorService: false
userData: dGVzdA==
password: ZZXXccvv1212
- count: 1
availabilityZone: ${availabilityZoneSecond}
instanceType: ${defaultInstanceType}
systemDiskType: CLOUD_SSD
systemDiskSize: 60
internetChargeType: TRAFFIC_POSTPAID_BY_HOUR
internetMaxBandwidthOut: 100
publicIpAssigned: true
subnetId: ${secondSubnetId}
dataDisks:
- diskType: CLOUD_PREMIUM
diskSize: 50
enhancedSecurityService: false
enhancedMonitorService: false
userData: dGVzdA==
camRoleName: CVM_QcsRole
password: ZZXXccvv1212
labels:
test1: test1
test2: test2
fooMonitorTmpInstance:
type: tencentcloud:MonitorTmpInstance
properties:
instanceName: tf-tmp-instance
vpcId: ${firstVpcId}
subnetId: ${firstSubnetId}
dataRetentionTime: 30
zone: ${availabilityZoneSecond}
tags:
createdBy: terraform
# tmp tke bind
fooMonitorTmpTkeClusterAgent:
type: tencentcloud:MonitorTmpTkeClusterAgent
properties:
instanceId: ${fooMonitorTmpInstance.monitorTmpInstanceId}
agents:
region: ${zone}
clusterType: ${clusterType}
clusterId: ${example.kubernetesClusterId}
enableExternal: false
# create monitor template
fooMonitorTmpTkeTemplate:
type: tencentcloud:MonitorTmpTkeTemplate
properties:
template:
name: tf-template
level: cluster
describe: template
serviceMonitors:
- name: tf-ServiceMonitor
config: |
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: example-service-monitor
namespace: monitoring
labels:
k8s-app: example-service
spec:
selector:
matchLabels:
k8s-app: example-service
namespaceSelector:
matchNames:
- default
endpoints:
- port: http-metrics
interval: 30s
path: /metrics
scheme: http
bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
tlsConfig:
insecureSkipVerify: true
podMonitors:
- name: tf-PodMonitors
config: |
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: example-pod-monitor
namespace: monitoring
labels:
k8s-app: example-pod
spec:
selector:
matchLabels:
k8s-app: example-pod
namespaceSelector:
matchNames:
- default
podMetricsEndpoints:
- port: http-metrics
interval: 30s
path: /metrics
scheme: http
bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
tlsConfig:
insecureSkipVerify: true
- name: tf-RawJobs
config: |
scrape_configs:
- job_name: 'example-job'
scrape_interval: 30s
static_configs:
- targets: ['example-service.default.svc.cluster.local:8080']
metrics_path: /metrics
scheme: http
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
tls_config:
insecure_skip_verify: true
tempAttachment:
type: tencentcloud:MonitorTmpTkeTemplateAttachment
properties:
templateId: ${fooMonitorTmpTkeTemplate.monitorTmpTkeTemplateId}
targets:
clusterType: ${clusterType}
clusterId: ${example.kubernetesClusterId}
region: ${zone}
instanceId: ${fooMonitorTmpInstance.monitorTmpInstanceId}
options:
dependsOn:
- ${fooMonitorTmpTkeClusterAgent}
variables:
firstVpcId: ${vpcOne.instanceLists[0].vpcId}
firstSubnetId: ${vpcOne.instanceLists[0].subnetId}
secondVpcId: ${vpcTwo.instanceLists[0].vpcId}
secondSubnetId: ${vpcTwo.instanceLists[0].subnetId}
sgId: ${sg.securityGroupId}
imageId: ${default.imageId}
vpcOne:
fn::invoke:
function: tencentcloud:getVpcSubnets
arguments:
isDefault: true
availabilityZone: ${availabilityZoneFirst}
vpcTwo:
fn::invoke:
function: tencentcloud:getVpcSubnets
arguments:
isDefault: true
availabilityZone: ${availabilityZoneSecond}
default:
fn::invoke:
function: tencentcloud:getImages
arguments:
imageTypes:
- PUBLIC_IMAGE
imageNameRegex: Final
Create MonitorTmpTkeTemplateAttachment Resource
Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.
Constructor syntax
new MonitorTmpTkeTemplateAttachment(name: string, args: MonitorTmpTkeTemplateAttachmentArgs, opts?: CustomResourceOptions);
@overload
def MonitorTmpTkeTemplateAttachment(resource_name: str,
args: MonitorTmpTkeTemplateAttachmentArgs,
opts: Optional[ResourceOptions] = None)
@overload
def MonitorTmpTkeTemplateAttachment(resource_name: str,
opts: Optional[ResourceOptions] = None,
targets: Optional[MonitorTmpTkeTemplateAttachmentTargetsArgs] = None,
template_id: Optional[str] = None,
monitor_tmp_tke_template_attachment_id: Optional[str] = None)
func NewMonitorTmpTkeTemplateAttachment(ctx *Context, name string, args MonitorTmpTkeTemplateAttachmentArgs, opts ...ResourceOption) (*MonitorTmpTkeTemplateAttachment, error)
public MonitorTmpTkeTemplateAttachment(string name, MonitorTmpTkeTemplateAttachmentArgs args, CustomResourceOptions? opts = null)
public MonitorTmpTkeTemplateAttachment(String name, MonitorTmpTkeTemplateAttachmentArgs args)
public MonitorTmpTkeTemplateAttachment(String name, MonitorTmpTkeTemplateAttachmentArgs args, CustomResourceOptions options)
type: tencentcloud:MonitorTmpTkeTemplateAttachment
properties: # The arguments to resource properties.
options: # Bag of options to control resource's behavior.
Parameters
- name string
- The unique name of the resource.
- args MonitorTmpTkeTemplateAttachmentArgs
- The arguments to resource properties.
- opts CustomResourceOptions
- Bag of options to control resource's behavior.
- resource_name str
- The unique name of the resource.
- args MonitorTmpTkeTemplateAttachmentArgs
- The arguments to resource properties.
- opts ResourceOptions
- Bag of options to control resource's behavior.
- ctx Context
- Context object for the current deployment.
- name string
- The unique name of the resource.
- args MonitorTmpTkeTemplateAttachmentArgs
- The arguments to resource properties.
- opts ResourceOption
- Bag of options to control resource's behavior.
- name string
- The unique name of the resource.
- args MonitorTmpTkeTemplateAttachmentArgs
- The arguments to resource properties.
- opts CustomResourceOptions
- Bag of options to control resource's behavior.
- name String
- The unique name of the resource.
- args MonitorTmpTkeTemplateAttachmentArgs
- The arguments to resource properties.
- options CustomResourceOptions
- Bag of options to control resource's behavior.
MonitorTmpTkeTemplateAttachment Resource Properties
To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.
Inputs
In Python, inputs that are objects can be passed either as argument classes or as dictionary literals.
The MonitorTmpTkeTemplateAttachment resource accepts the following input properties:
- Targets
Monitor
Tmp Tke Template Attachment Targets - Sync target details.
- Template
Id string - The ID of the template, which is used for the outgoing reference.
- Monitor
Tmp stringTke Template Attachment Id - ID of the resource.
- Targets
Monitor
Tmp Tke Template Attachment Targets Args - Sync target details.
- Template
Id string - The ID of the template, which is used for the outgoing reference.
- Monitor
Tmp stringTke Template Attachment Id - ID of the resource.
- targets
Monitor
Tmp Tke Template Attachment Targets - Sync target details.
- template
Id String - The ID of the template, which is used for the outgoing reference.
- monitor
Tmp StringTke Template Attachment Id - ID of the resource.
- targets
Monitor
Tmp Tke Template Attachment Targets - Sync target details.
- template
Id string - The ID of the template, which is used for the outgoing reference.
- monitor
Tmp stringTke Template Attachment Id - ID of the resource.
- targets
Monitor
Tmp Tke Template Attachment Targets Args - Sync target details.
- template_
id str - The ID of the template, which is used for the outgoing reference.
- monitor_
tmp_ strtke_ template_ attachment_ id - ID of the resource.
- targets Property Map
- Sync target details.
- template
Id String - The ID of the template, which is used for the outgoing reference.
- monitor
Tmp StringTke Template Attachment Id - ID of the resource.
Outputs
All input properties are implicitly available as output properties. Additionally, the MonitorTmpTkeTemplateAttachment resource produces the following output properties:
- Id string
- The provider-assigned unique ID for this managed resource.
- Id string
- The provider-assigned unique ID for this managed resource.
- id String
- The provider-assigned unique ID for this managed resource.
- id string
- The provider-assigned unique ID for this managed resource.
- id str
- The provider-assigned unique ID for this managed resource.
- id String
- The provider-assigned unique ID for this managed resource.
Look up Existing MonitorTmpTkeTemplateAttachment Resource
Get an existing MonitorTmpTkeTemplateAttachment resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.
public static get(name: string, id: Input<ID>, state?: MonitorTmpTkeTemplateAttachmentState, opts?: CustomResourceOptions): MonitorTmpTkeTemplateAttachment
@staticmethod
def get(resource_name: str,
id: str,
opts: Optional[ResourceOptions] = None,
monitor_tmp_tke_template_attachment_id: Optional[str] = None,
targets: Optional[MonitorTmpTkeTemplateAttachmentTargetsArgs] = None,
template_id: Optional[str] = None) -> MonitorTmpTkeTemplateAttachment
func GetMonitorTmpTkeTemplateAttachment(ctx *Context, name string, id IDInput, state *MonitorTmpTkeTemplateAttachmentState, opts ...ResourceOption) (*MonitorTmpTkeTemplateAttachment, error)
public static MonitorTmpTkeTemplateAttachment Get(string name, Input<string> id, MonitorTmpTkeTemplateAttachmentState? state, CustomResourceOptions? opts = null)
public static MonitorTmpTkeTemplateAttachment get(String name, Output<String> id, MonitorTmpTkeTemplateAttachmentState state, CustomResourceOptions options)
resources: _: type: tencentcloud:MonitorTmpTkeTemplateAttachment get: id: ${id}
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- resource_name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- Monitor
Tmp stringTke Template Attachment Id - ID of the resource.
- Targets
Monitor
Tmp Tke Template Attachment Targets - Sync target details.
- Template
Id string - The ID of the template, which is used for the outgoing reference.
- Monitor
Tmp stringTke Template Attachment Id - ID of the resource.
- Targets
Monitor
Tmp Tke Template Attachment Targets Args - Sync target details.
- Template
Id string - The ID of the template, which is used for the outgoing reference.
- monitor
Tmp StringTke Template Attachment Id - ID of the resource.
- targets
Monitor
Tmp Tke Template Attachment Targets - Sync target details.
- template
Id String - The ID of the template, which is used for the outgoing reference.
- monitor
Tmp stringTke Template Attachment Id - ID of the resource.
- targets
Monitor
Tmp Tke Template Attachment Targets - Sync target details.
- template
Id string - The ID of the template, which is used for the outgoing reference.
- monitor_
tmp_ strtke_ template_ attachment_ id - ID of the resource.
- targets
Monitor
Tmp Tke Template Attachment Targets Args - Sync target details.
- template_
id str - The ID of the template, which is used for the outgoing reference.
- monitor
Tmp StringTke Template Attachment Id - ID of the resource.
- targets Property Map
- Sync target details.
- template
Id String - The ID of the template, which is used for the outgoing reference.
Supporting Types
MonitorTmpTkeTemplateAttachmentTargets, MonitorTmpTkeTemplateAttachmentTargetsArgs
- Instance
Id string - instance id.
- Region string
- target area.
- Cluster
Id string - ID of the cluster.
- Cluster
Name string - Name the cluster.
- Cluster
Type string - Cluster type.
- Instance
Name string - Name of the prometheus instance.
- Sync
Time string - Last sync template time.
- Version string
- Template version currently in use.
- Instance
Id string - instance id.
- Region string
- target area.
- Cluster
Id string - ID of the cluster.
- Cluster
Name string - Name the cluster.
- Cluster
Type string - Cluster type.
- Instance
Name string - Name of the prometheus instance.
- Sync
Time string - Last sync template time.
- Version string
- Template version currently in use.
- instance
Id String - instance id.
- region String
- target area.
- cluster
Id String - ID of the cluster.
- cluster
Name String - Name the cluster.
- cluster
Type String - Cluster type.
- instance
Name String - Name of the prometheus instance.
- sync
Time String - Last sync template time.
- version String
- Template version currently in use.
- instance
Id string - instance id.
- region string
- target area.
- cluster
Id string - ID of the cluster.
- cluster
Name string - Name the cluster.
- cluster
Type string - Cluster type.
- instance
Name string - Name of the prometheus instance.
- sync
Time string - Last sync template time.
- version string
- Template version currently in use.
- instance_
id str - instance id.
- region str
- target area.
- cluster_
id str - ID of the cluster.
- cluster_
name str - Name the cluster.
- cluster_
type str - Cluster type.
- instance_
name str - Name of the prometheus instance.
- sync_
time str - Last sync template time.
- version str
- Template version currently in use.
- instance
Id String - instance id.
- region String
- target area.
- cluster
Id String - ID of the cluster.
- cluster
Name String - Name the cluster.
- cluster
Type String - Cluster type.
- instance
Name String - Name of the prometheus instance.
- sync
Time String - Last sync template time.
- version String
- Template version currently in use.
Package Details
- Repository
- tencentcloud tencentcloudstack/terraform-provider-tencentcloud
- License
- Notes
- This Pulumi package is based on the
tencentcloud
Terraform Provider.