1. Packages
  2. Tencentcloud Provider
  3. API Docs
  4. MonitorTmpTkeTemplateAttachment
tencentcloud 1.81.189 published on Wednesday, Apr 30, 2025 by tencentcloudstack

tencentcloud.MonitorTmpTkeTemplateAttachment

Explore with Pulumi AI

tencentcloud logo
tencentcloud 1.81.189 published on Wednesday, Apr 30, 2025 by tencentcloudstack

    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 MonitorTmpTkeTemplateAttachmentTargets
    Sync target details.
    TemplateId string
    The ID of the template, which is used for the outgoing reference.
    MonitorTmpTkeTemplateAttachmentId string
    ID of the resource.
    Targets MonitorTmpTkeTemplateAttachmentTargetsArgs
    Sync target details.
    TemplateId string
    The ID of the template, which is used for the outgoing reference.
    MonitorTmpTkeTemplateAttachmentId string
    ID of the resource.
    targets MonitorTmpTkeTemplateAttachmentTargets
    Sync target details.
    templateId String
    The ID of the template, which is used for the outgoing reference.
    monitorTmpTkeTemplateAttachmentId String
    ID of the resource.
    targets MonitorTmpTkeTemplateAttachmentTargets
    Sync target details.
    templateId string
    The ID of the template, which is used for the outgoing reference.
    monitorTmpTkeTemplateAttachmentId string
    ID of the resource.
    targets MonitorTmpTkeTemplateAttachmentTargetsArgs
    Sync target details.
    template_id str
    The ID of the template, which is used for the outgoing reference.
    monitor_tmp_tke_template_attachment_id str
    ID of the resource.
    targets Property Map
    Sync target details.
    templateId String
    The ID of the template, which is used for the outgoing reference.
    monitorTmpTkeTemplateAttachmentId String
    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.
    The following state arguments are supported:
    MonitorTmpTkeTemplateAttachmentId string
    ID of the resource.
    Targets MonitorTmpTkeTemplateAttachmentTargets
    Sync target details.
    TemplateId string
    The ID of the template, which is used for the outgoing reference.
    MonitorTmpTkeTemplateAttachmentId string
    ID of the resource.
    Targets MonitorTmpTkeTemplateAttachmentTargetsArgs
    Sync target details.
    TemplateId string
    The ID of the template, which is used for the outgoing reference.
    monitorTmpTkeTemplateAttachmentId String
    ID of the resource.
    targets MonitorTmpTkeTemplateAttachmentTargets
    Sync target details.
    templateId String
    The ID of the template, which is used for the outgoing reference.
    monitorTmpTkeTemplateAttachmentId string
    ID of the resource.
    targets MonitorTmpTkeTemplateAttachmentTargets
    Sync target details.
    templateId string
    The ID of the template, which is used for the outgoing reference.
    monitor_tmp_tke_template_attachment_id str
    ID of the resource.
    targets MonitorTmpTkeTemplateAttachmentTargetsArgs
    Sync target details.
    template_id str
    The ID of the template, which is used for the outgoing reference.
    monitorTmpTkeTemplateAttachmentId String
    ID of the resource.
    targets Property Map
    Sync target details.
    templateId String
    The ID of the template, which is used for the outgoing reference.

    Supporting Types

    MonitorTmpTkeTemplateAttachmentTargets, MonitorTmpTkeTemplateAttachmentTargetsArgs

    InstanceId string
    instance id.
    Region string
    target area.
    ClusterId string
    ID of the cluster.
    ClusterName string
    Name the cluster.
    ClusterType string
    Cluster type.
    InstanceName string
    Name of the prometheus instance.
    SyncTime string
    Last sync template time.
    Version string
    Template version currently in use.
    InstanceId string
    instance id.
    Region string
    target area.
    ClusterId string
    ID of the cluster.
    ClusterName string
    Name the cluster.
    ClusterType string
    Cluster type.
    InstanceName string
    Name of the prometheus instance.
    SyncTime string
    Last sync template time.
    Version string
    Template version currently in use.
    instanceId String
    instance id.
    region String
    target area.
    clusterId String
    ID of the cluster.
    clusterName String
    Name the cluster.
    clusterType String
    Cluster type.
    instanceName String
    Name of the prometheus instance.
    syncTime String
    Last sync template time.
    version String
    Template version currently in use.
    instanceId string
    instance id.
    region string
    target area.
    clusterId string
    ID of the cluster.
    clusterName string
    Name the cluster.
    clusterType string
    Cluster type.
    instanceName string
    Name of the prometheus instance.
    syncTime 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.
    instanceId String
    instance id.
    region String
    target area.
    clusterId String
    ID of the cluster.
    clusterName String
    Name the cluster.
    clusterType String
    Cluster type.
    instanceName String
    Name of the prometheus instance.
    syncTime 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.
    tencentcloud logo
    tencentcloud 1.81.189 published on Wednesday, Apr 30, 2025 by tencentcloudstack