1. Packages
  2. UpCloud
  3. API Docs
  4. KubernetesNodeGroup
UpCloud v0.5.3 published on Friday, Sep 26, 2025 by UpCloudLtd

upcloud.KubernetesNodeGroup

Explore with Pulumi AI

upcloud logo
UpCloud v0.5.3 published on Friday, Sep 26, 2025 by UpCloudLtd

    This resource represents a Managed Kubernetes cluster.

    Example Usage

    import * as pulumi from "@pulumi/pulumi";
    import * as upcloud from "@upcloud/pulumi-upcloud";
    
    // Create a network for the Kubernetes cluster
    const example = new upcloud.Network("example", {
        name: "example-network",
        zone: "de-fra1",
        ipNetwork: {
            address: "172.16.1.0/24",
            dhcp: true,
            family: "IPv4",
        },
    });
    // Create a Kubernetes cluster
    const exampleKubernetesCluster = new upcloud.KubernetesCluster("example", {
        controlPlaneIpFilters: ["0.0.0.0/0"],
        name: "exampleapp",
        network: example.id,
        zone: "de-fra1",
    });
    // Create a Kubernetes cluster node group
    const group = new upcloud.KubernetesNodeGroup("group", {
        cluster: upcloudKubernetesCluster.example.id,
        nodeCount: 2,
        name: "medium",
        plan: "2xCPU-4GB",
        labels: {
            managedBy: "terraform",
        },
        taints: [{
            effect: "NoExecute",
            key: "taintKey",
            value: "taintValue",
        }],
    });
    // Create a Kubernetes cluster node group with a GPU plan, with a custom storage size
    const groupGpu = new upcloud.KubernetesNodeGroup("group_gpu", {
        cluster: upcloudKubernetesCluster.example.id,
        nodeCount: 2,
        name: "gpu-workers",
        plan: "GPU-8xCPU-64GB-1xL40S",
        gpuPlan: {
            storageSize: 250,
        },
        labels: {
            gpu: "NVIDIA-L40S",
        },
    });
    // Create a Kubernetes cluster node group with a Cloud Native plan, with a custom storage size and tier
    const groupCloudNative = new upcloud.KubernetesNodeGroup("group_cloud_native", {
        cluster: upcloudKubernetesCluster.example.id,
        nodeCount: 4,
        name: "cloud-native-workers",
        plan: "CLOUDNATIVE-4xCPU-8GB",
        cloudNativePlan: {
            storageSize: 100,
            storageTier: "standard",
        },
    });
    
    import pulumi
    import pulumi_upcloud as upcloud
    
    # Create a network for the Kubernetes cluster
    example = upcloud.Network("example",
        name="example-network",
        zone="de-fra1",
        ip_network={
            "address": "172.16.1.0/24",
            "dhcp": True,
            "family": "IPv4",
        })
    # Create a Kubernetes cluster
    example_kubernetes_cluster = upcloud.KubernetesCluster("example",
        control_plane_ip_filters=["0.0.0.0/0"],
        name="exampleapp",
        network=example.id,
        zone="de-fra1")
    # Create a Kubernetes cluster node group
    group = upcloud.KubernetesNodeGroup("group",
        cluster=upcloud_kubernetes_cluster["example"]["id"],
        node_count=2,
        name="medium",
        plan="2xCPU-4GB",
        labels={
            "managedBy": "terraform",
        },
        taints=[{
            "effect": "NoExecute",
            "key": "taintKey",
            "value": "taintValue",
        }])
    # Create a Kubernetes cluster node group with a GPU plan, with a custom storage size
    group_gpu = upcloud.KubernetesNodeGroup("group_gpu",
        cluster=upcloud_kubernetes_cluster["example"]["id"],
        node_count=2,
        name="gpu-workers",
        plan="GPU-8xCPU-64GB-1xL40S",
        gpu_plan={
            "storage_size": 250,
        },
        labels={
            "gpu": "NVIDIA-L40S",
        })
    # Create a Kubernetes cluster node group with a Cloud Native plan, with a custom storage size and tier
    group_cloud_native = upcloud.KubernetesNodeGroup("group_cloud_native",
        cluster=upcloud_kubernetes_cluster["example"]["id"],
        node_count=4,
        name="cloud-native-workers",
        plan="CLOUDNATIVE-4xCPU-8GB",
        cloud_native_plan={
            "storage_size": 100,
            "storage_tier": "standard",
        })
    
    package main
    
    import (
    	"github.com/UpCloudLtd/pulumi-upcloud/sdk/go/upcloud"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		// Create a network for the Kubernetes cluster
    		example, err := upcloud.NewNetwork(ctx, "example", &upcloud.NetworkArgs{
    			Name: pulumi.String("example-network"),
    			Zone: pulumi.String("de-fra1"),
    			IpNetwork: &upcloud.NetworkIpNetworkArgs{
    				Address: pulumi.String("172.16.1.0/24"),
    				Dhcp:    pulumi.Bool(true),
    				Family:  pulumi.String("IPv4"),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		// Create a Kubernetes cluster
    		_, err = upcloud.NewKubernetesCluster(ctx, "example", &upcloud.KubernetesClusterArgs{
    			ControlPlaneIpFilters: pulumi.StringArray{
    				pulumi.String("0.0.0.0/0"),
    			},
    			Name:    pulumi.String("exampleapp"),
    			Network: example.ID(),
    			Zone:    pulumi.String("de-fra1"),
    		})
    		if err != nil {
    			return err
    		}
    		// Create a Kubernetes cluster node group
    		_, err = upcloud.NewKubernetesNodeGroup(ctx, "group", &upcloud.KubernetesNodeGroupArgs{
    			Cluster:   pulumi.Any(upcloudKubernetesCluster.Example.Id),
    			NodeCount: pulumi.Int(2),
    			Name:      pulumi.String("medium"),
    			Plan:      pulumi.String("2xCPU-4GB"),
    			Labels: pulumi.StringMap{
    				"managedBy": pulumi.String("terraform"),
    			},
    			Taints: upcloud.KubernetesNodeGroupTaintArray{
    				&upcloud.KubernetesNodeGroupTaintArgs{
    					Effect: pulumi.String("NoExecute"),
    					Key:    pulumi.String("taintKey"),
    					Value:  pulumi.String("taintValue"),
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		// Create a Kubernetes cluster node group with a GPU plan, with a custom storage size
    		_, err = upcloud.NewKubernetesNodeGroup(ctx, "group_gpu", &upcloud.KubernetesNodeGroupArgs{
    			Cluster:   pulumi.Any(upcloudKubernetesCluster.Example.Id),
    			NodeCount: pulumi.Int(2),
    			Name:      pulumi.String("gpu-workers"),
    			Plan:      pulumi.String("GPU-8xCPU-64GB-1xL40S"),
    			GpuPlan: &upcloud.KubernetesNodeGroupGpuPlanArgs{
    				StorageSize: pulumi.Int(250),
    			},
    			Labels: pulumi.StringMap{
    				"gpu": pulumi.String("NVIDIA-L40S"),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		// Create a Kubernetes cluster node group with a Cloud Native plan, with a custom storage size and tier
    		_, err = upcloud.NewKubernetesNodeGroup(ctx, "group_cloud_native", &upcloud.KubernetesNodeGroupArgs{
    			Cluster:   pulumi.Any(upcloudKubernetesCluster.Example.Id),
    			NodeCount: pulumi.Int(4),
    			Name:      pulumi.String("cloud-native-workers"),
    			Plan:      pulumi.String("CLOUDNATIVE-4xCPU-8GB"),
    			CloudNativePlan: &upcloud.KubernetesNodeGroupCloudNativePlanArgs{
    				StorageSize: pulumi.Int(100),
    				StorageTier: pulumi.String("standard"),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using UpCloud = UpCloud.Pulumi.UpCloud;
    
    return await Deployment.RunAsync(() => 
    {
        // Create a network for the Kubernetes cluster
        var example = new UpCloud.Network("example", new()
        {
            Name = "example-network",
            Zone = "de-fra1",
            IpNetwork = new UpCloud.Inputs.NetworkIpNetworkArgs
            {
                Address = "172.16.1.0/24",
                Dhcp = true,
                Family = "IPv4",
            },
        });
    
        // Create a Kubernetes cluster
        var exampleKubernetesCluster = new UpCloud.KubernetesCluster("example", new()
        {
            ControlPlaneIpFilters = new[]
            {
                "0.0.0.0/0",
            },
            Name = "exampleapp",
            Network = example.Id,
            Zone = "de-fra1",
        });
    
        // Create a Kubernetes cluster node group
        var @group = new UpCloud.KubernetesNodeGroup("group", new()
        {
            Cluster = upcloudKubernetesCluster.Example.Id,
            NodeCount = 2,
            Name = "medium",
            Plan = "2xCPU-4GB",
            Labels = 
            {
                { "managedBy", "terraform" },
            },
            Taints = new[]
            {
                new UpCloud.Inputs.KubernetesNodeGroupTaintArgs
                {
                    Effect = "NoExecute",
                    Key = "taintKey",
                    Value = "taintValue",
                },
            },
        });
    
        // Create a Kubernetes cluster node group with a GPU plan, with a custom storage size
        var groupGpu = new UpCloud.KubernetesNodeGroup("group_gpu", new()
        {
            Cluster = upcloudKubernetesCluster.Example.Id,
            NodeCount = 2,
            Name = "gpu-workers",
            Plan = "GPU-8xCPU-64GB-1xL40S",
            GpuPlan = new UpCloud.Inputs.KubernetesNodeGroupGpuPlanArgs
            {
                StorageSize = 250,
            },
            Labels = 
            {
                { "gpu", "NVIDIA-L40S" },
            },
        });
    
        // Create a Kubernetes cluster node group with a Cloud Native plan, with a custom storage size and tier
        var groupCloudNative = new UpCloud.KubernetesNodeGroup("group_cloud_native", new()
        {
            Cluster = upcloudKubernetesCluster.Example.Id,
            NodeCount = 4,
            Name = "cloud-native-workers",
            Plan = "CLOUDNATIVE-4xCPU-8GB",
            CloudNativePlan = new UpCloud.Inputs.KubernetesNodeGroupCloudNativePlanArgs
            {
                StorageSize = 100,
                StorageTier = "standard",
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.upcloud.Network;
    import com.pulumi.upcloud.NetworkArgs;
    import com.pulumi.upcloud.inputs.NetworkIpNetworkArgs;
    import com.pulumi.upcloud.KubernetesCluster;
    import com.pulumi.upcloud.KubernetesClusterArgs;
    import com.pulumi.upcloud.KubernetesNodeGroup;
    import com.pulumi.upcloud.KubernetesNodeGroupArgs;
    import com.pulumi.upcloud.inputs.KubernetesNodeGroupTaintArgs;
    import com.pulumi.upcloud.inputs.KubernetesNodeGroupGpuPlanArgs;
    import com.pulumi.upcloud.inputs.KubernetesNodeGroupCloudNativePlanArgs;
    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) {
            // Create a network for the Kubernetes cluster
            var example = new Network("example", NetworkArgs.builder()
                .name("example-network")
                .zone("de-fra1")
                .ipNetwork(NetworkIpNetworkArgs.builder()
                    .address("172.16.1.0/24")
                    .dhcp(true)
                    .family("IPv4")
                    .build())
                .build());
    
            // Create a Kubernetes cluster
            var exampleKubernetesCluster = new KubernetesCluster("exampleKubernetesCluster", KubernetesClusterArgs.builder()
                .controlPlaneIpFilters("0.0.0.0/0")
                .name("exampleapp")
                .network(example.id())
                .zone("de-fra1")
                .build());
    
            // Create a Kubernetes cluster node group
            var group = new KubernetesNodeGroup("group", KubernetesNodeGroupArgs.builder()
                .cluster(upcloudKubernetesCluster.example().id())
                .nodeCount(2)
                .name("medium")
                .plan("2xCPU-4GB")
                .labels(Map.of("managedBy", "terraform"))
                .taints(KubernetesNodeGroupTaintArgs.builder()
                    .effect("NoExecute")
                    .key("taintKey")
                    .value("taintValue")
                    .build())
                .build());
    
            // Create a Kubernetes cluster node group with a GPU plan, with a custom storage size
            var groupGpu = new KubernetesNodeGroup("groupGpu", KubernetesNodeGroupArgs.builder()
                .cluster(upcloudKubernetesCluster.example().id())
                .nodeCount(2)
                .name("gpu-workers")
                .plan("GPU-8xCPU-64GB-1xL40S")
                .gpuPlan(KubernetesNodeGroupGpuPlanArgs.builder()
                    .storageSize(250)
                    .build())
                .labels(Map.of("gpu", "NVIDIA-L40S"))
                .build());
    
            // Create a Kubernetes cluster node group with a Cloud Native plan, with a custom storage size and tier
            var groupCloudNative = new KubernetesNodeGroup("groupCloudNative", KubernetesNodeGroupArgs.builder()
                .cluster(upcloudKubernetesCluster.example().id())
                .nodeCount(4)
                .name("cloud-native-workers")
                .plan("CLOUDNATIVE-4xCPU-8GB")
                .cloudNativePlan(KubernetesNodeGroupCloudNativePlanArgs.builder()
                    .storageSize(100)
                    .storageTier("standard")
                    .build())
                .build());
    
        }
    }
    
    resources:
      # Create a network for the Kubernetes cluster
      example:
        type: upcloud:Network
        properties:
          name: example-network
          zone: de-fra1
          ipNetwork:
            address: 172.16.1.0/24
            dhcp: true
            family: IPv4
      # Create a Kubernetes cluster
      exampleKubernetesCluster:
        type: upcloud:KubernetesCluster
        name: example
        properties:
          controlPlaneIpFilters:
            - 0.0.0.0/0
          name: exampleapp
          network: ${example.id}
          zone: de-fra1
      # Create a Kubernetes cluster node group
      group:
        type: upcloud:KubernetesNodeGroup
        properties:
          cluster: ${upcloudKubernetesCluster.example.id}
          nodeCount: 2
          name: medium
          plan: 2xCPU-4GB
          labels:
            managedBy: terraform
          taints:
            - effect: NoExecute
              key: taintKey
              value: taintValue
      # Create a Kubernetes cluster node group with a GPU plan, with a custom storage size
      groupGpu:
        type: upcloud:KubernetesNodeGroup
        name: group_gpu
        properties:
          cluster: ${upcloudKubernetesCluster.example.id}
          nodeCount: 2
          name: gpu-workers
          plan: GPU-8xCPU-64GB-1xL40S
          gpuPlan:
            storageSize: 250
          labels:
            gpu: NVIDIA-L40S
      # Create a Kubernetes cluster node group with a Cloud Native plan, with a custom storage size and tier
      groupCloudNative:
        type: upcloud:KubernetesNodeGroup
        name: group_cloud_native
        properties:
          cluster: ${upcloudKubernetesCluster.example.id}
          nodeCount: 4
          name: cloud-native-workers
          plan: CLOUDNATIVE-4xCPU-8GB
          cloudNativePlan:
            storageSize: 100
            storageTier: standard
    

    Create KubernetesNodeGroup Resource

    Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.

    Constructor syntax

    new KubernetesNodeGroup(name: string, args: KubernetesNodeGroupArgs, opts?: CustomResourceOptions);
    @overload
    def KubernetesNodeGroup(resource_name: str,
                            args: KubernetesNodeGroupArgs,
                            opts: Optional[ResourceOptions] = None)
    
    @overload
    def KubernetesNodeGroup(resource_name: str,
                            opts: Optional[ResourceOptions] = None,
                            node_count: Optional[int] = None,
                            plan: Optional[str] = None,
                            cluster: Optional[str] = None,
                            custom_plan: Optional[KubernetesNodeGroupCustomPlanArgs] = None,
                            gpu_plan: Optional[KubernetesNodeGroupGpuPlanArgs] = None,
                            kubelet_args: Optional[Sequence[KubernetesNodeGroupKubeletArgArgs]] = None,
                            labels: Optional[Mapping[str, str]] = None,
                            name: Optional[str] = None,
                            anti_affinity: Optional[bool] = None,
                            cloud_native_plan: Optional[KubernetesNodeGroupCloudNativePlanArgs] = None,
                            ssh_keys: Optional[Sequence[str]] = None,
                            storage_encryption: Optional[str] = None,
                            taints: Optional[Sequence[KubernetesNodeGroupTaintArgs]] = None,
                            utility_network_access: Optional[bool] = None)
    func NewKubernetesNodeGroup(ctx *Context, name string, args KubernetesNodeGroupArgs, opts ...ResourceOption) (*KubernetesNodeGroup, error)
    public KubernetesNodeGroup(string name, KubernetesNodeGroupArgs args, CustomResourceOptions? opts = null)
    public KubernetesNodeGroup(String name, KubernetesNodeGroupArgs args)
    public KubernetesNodeGroup(String name, KubernetesNodeGroupArgs args, CustomResourceOptions options)
    
    type: upcloud:KubernetesNodeGroup
    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 KubernetesNodeGroupArgs
    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 KubernetesNodeGroupArgs
    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 KubernetesNodeGroupArgs
    The arguments to resource properties.
    opts ResourceOption
    Bag of options to control resource's behavior.
    name string
    The unique name of the resource.
    args KubernetesNodeGroupArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    name String
    The unique name of the resource.
    args KubernetesNodeGroupArgs
    The arguments to resource properties.
    options CustomResourceOptions
    Bag of options to control resource's behavior.

    Constructor example

    The following reference example uses placeholder values for all input properties.

    var kubernetesNodeGroupResource = new UpCloud.KubernetesNodeGroup("kubernetesNodeGroupResource", new()
    {
        NodeCount = 0,
        Plan = "string",
        Cluster = "string",
        CustomPlan = new UpCloud.Inputs.KubernetesNodeGroupCustomPlanArgs
        {
            Cores = 0,
            Memory = 0,
            StorageSize = 0,
            StorageTier = "string",
        },
        GpuPlan = new UpCloud.Inputs.KubernetesNodeGroupGpuPlanArgs
        {
            StorageSize = 0,
            StorageTier = "string",
        },
        KubeletArgs = new[]
        {
            new UpCloud.Inputs.KubernetesNodeGroupKubeletArgArgs
            {
                Key = "string",
                Value = "string",
            },
        },
        Labels = 
        {
            { "string", "string" },
        },
        Name = "string",
        AntiAffinity = false,
        CloudNativePlan = new UpCloud.Inputs.KubernetesNodeGroupCloudNativePlanArgs
        {
            StorageSize = 0,
            StorageTier = "string",
        },
        SshKeys = new[]
        {
            "string",
        },
        StorageEncryption = "string",
        Taints = new[]
        {
            new UpCloud.Inputs.KubernetesNodeGroupTaintArgs
            {
                Effect = "string",
                Key = "string",
                Value = "string",
            },
        },
        UtilityNetworkAccess = false,
    });
    
    example, err := upcloud.NewKubernetesNodeGroup(ctx, "kubernetesNodeGroupResource", &upcloud.KubernetesNodeGroupArgs{
    	NodeCount: pulumi.Int(0),
    	Plan:      pulumi.String("string"),
    	Cluster:   pulumi.String("string"),
    	CustomPlan: &upcloud.KubernetesNodeGroupCustomPlanArgs{
    		Cores:       pulumi.Int(0),
    		Memory:      pulumi.Int(0),
    		StorageSize: pulumi.Int(0),
    		StorageTier: pulumi.String("string"),
    	},
    	GpuPlan: &upcloud.KubernetesNodeGroupGpuPlanArgs{
    		StorageSize: pulumi.Int(0),
    		StorageTier: pulumi.String("string"),
    	},
    	KubeletArgs: upcloud.KubernetesNodeGroupKubeletArgArray{
    		&upcloud.KubernetesNodeGroupKubeletArgArgs{
    			Key:   pulumi.String("string"),
    			Value: pulumi.String("string"),
    		},
    	},
    	Labels: pulumi.StringMap{
    		"string": pulumi.String("string"),
    	},
    	Name:         pulumi.String("string"),
    	AntiAffinity: pulumi.Bool(false),
    	CloudNativePlan: &upcloud.KubernetesNodeGroupCloudNativePlanArgs{
    		StorageSize: pulumi.Int(0),
    		StorageTier: pulumi.String("string"),
    	},
    	SshKeys: pulumi.StringArray{
    		pulumi.String("string"),
    	},
    	StorageEncryption: pulumi.String("string"),
    	Taints: upcloud.KubernetesNodeGroupTaintArray{
    		&upcloud.KubernetesNodeGroupTaintArgs{
    			Effect: pulumi.String("string"),
    			Key:    pulumi.String("string"),
    			Value:  pulumi.String("string"),
    		},
    	},
    	UtilityNetworkAccess: pulumi.Bool(false),
    })
    
    var kubernetesNodeGroupResource = new KubernetesNodeGroup("kubernetesNodeGroupResource", KubernetesNodeGroupArgs.builder()
        .nodeCount(0)
        .plan("string")
        .cluster("string")
        .customPlan(KubernetesNodeGroupCustomPlanArgs.builder()
            .cores(0)
            .memory(0)
            .storageSize(0)
            .storageTier("string")
            .build())
        .gpuPlan(KubernetesNodeGroupGpuPlanArgs.builder()
            .storageSize(0)
            .storageTier("string")
            .build())
        .kubeletArgs(KubernetesNodeGroupKubeletArgArgs.builder()
            .key("string")
            .value("string")
            .build())
        .labels(Map.of("string", "string"))
        .name("string")
        .antiAffinity(false)
        .cloudNativePlan(KubernetesNodeGroupCloudNativePlanArgs.builder()
            .storageSize(0)
            .storageTier("string")
            .build())
        .sshKeys("string")
        .storageEncryption("string")
        .taints(KubernetesNodeGroupTaintArgs.builder()
            .effect("string")
            .key("string")
            .value("string")
            .build())
        .utilityNetworkAccess(false)
        .build());
    
    kubernetes_node_group_resource = upcloud.KubernetesNodeGroup("kubernetesNodeGroupResource",
        node_count=0,
        plan="string",
        cluster="string",
        custom_plan={
            "cores": 0,
            "memory": 0,
            "storage_size": 0,
            "storage_tier": "string",
        },
        gpu_plan={
            "storage_size": 0,
            "storage_tier": "string",
        },
        kubelet_args=[{
            "key": "string",
            "value": "string",
        }],
        labels={
            "string": "string",
        },
        name="string",
        anti_affinity=False,
        cloud_native_plan={
            "storage_size": 0,
            "storage_tier": "string",
        },
        ssh_keys=["string"],
        storage_encryption="string",
        taints=[{
            "effect": "string",
            "key": "string",
            "value": "string",
        }],
        utility_network_access=False)
    
    const kubernetesNodeGroupResource = new upcloud.KubernetesNodeGroup("kubernetesNodeGroupResource", {
        nodeCount: 0,
        plan: "string",
        cluster: "string",
        customPlan: {
            cores: 0,
            memory: 0,
            storageSize: 0,
            storageTier: "string",
        },
        gpuPlan: {
            storageSize: 0,
            storageTier: "string",
        },
        kubeletArgs: [{
            key: "string",
            value: "string",
        }],
        labels: {
            string: "string",
        },
        name: "string",
        antiAffinity: false,
        cloudNativePlan: {
            storageSize: 0,
            storageTier: "string",
        },
        sshKeys: ["string"],
        storageEncryption: "string",
        taints: [{
            effect: "string",
            key: "string",
            value: "string",
        }],
        utilityNetworkAccess: false,
    });
    
    type: upcloud:KubernetesNodeGroup
    properties:
        antiAffinity: false
        cloudNativePlan:
            storageSize: 0
            storageTier: string
        cluster: string
        customPlan:
            cores: 0
            memory: 0
            storageSize: 0
            storageTier: string
        gpuPlan:
            storageSize: 0
            storageTier: string
        kubeletArgs:
            - key: string
              value: string
        labels:
            string: string
        name: string
        nodeCount: 0
        plan: string
        sshKeys:
            - string
        storageEncryption: string
        taints:
            - effect: string
              key: string
              value: string
        utilityNetworkAccess: false
    

    KubernetesNodeGroup 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 KubernetesNodeGroup resource accepts the following input properties:

    Cluster string
    UUID of the cluster.
    NodeCount int
    Amount of nodes to provision in the node group.
    Plan string
    The server plan used for the node group. You can list available plans with upctl server plans
    AntiAffinity bool
    If set to true, nodes in this group will be placed on separate compute hosts. Please note that anti-affinity policy is considered 'best effort' and enabling it does not fully guarantee that the nodes will end up on different hardware.
    CloudNativePlan UpCloud.Pulumi.UpCloud.Inputs.KubernetesNodeGroupCloudNativePlan
    Resource properties for Cloud Native plan storage configuration. This block is optional for Cloud Native plans.
    CustomPlan UpCloud.Pulumi.UpCloud.Inputs.KubernetesNodeGroupCustomPlan
    Resource properties for custom plan. This block is required for custom plans only.
    GpuPlan UpCloud.Pulumi.UpCloud.Inputs.KubernetesNodeGroupGpuPlan
    Resource properties for GPU plan storage configuration. This block is optional for GPU plans.
    KubeletArgs List<UpCloud.Pulumi.UpCloud.Inputs.KubernetesNodeGroupKubeletArg>
    Additional arguments for kubelet for the nodes in this group. Configure the arguments without leading --. The API will prefix the arguments with -- when preparing kubelet call.

    Note that these arguments will be passed directly to kubelet CLI on each worker node without any validation. Passing invalid arguments can break your whole cluster. Be extra careful when adding kubelet args.
    Labels Dictionary<string, string>
    User defined key-value pairs to classify the node_group.
    Name string
    The name of the node group. Needs to be unique within a cluster.
    SshKeys List<string>
    You can optionally select SSH keys to be added as authorized keys to the nodes in this node group. This allows you to connect to the nodes via SSH once they are running.
    StorageEncryption string
    The storage encryption strategy to use for the nodes in this group. If not set, the cluster's storage encryption strategy will be used, if applicable. Valid values are data-at-rest and none.
    Taints List<UpCloud.Pulumi.UpCloud.Inputs.KubernetesNodeGroupTaint>
    Taints for the nodes in this group.
    UtilityNetworkAccess bool
    If set to false, nodes in this group will not have access to utility network.
    Cluster string
    UUID of the cluster.
    NodeCount int
    Amount of nodes to provision in the node group.
    Plan string
    The server plan used for the node group. You can list available plans with upctl server plans
    AntiAffinity bool
    If set to true, nodes in this group will be placed on separate compute hosts. Please note that anti-affinity policy is considered 'best effort' and enabling it does not fully guarantee that the nodes will end up on different hardware.
    CloudNativePlan KubernetesNodeGroupCloudNativePlanArgs
    Resource properties for Cloud Native plan storage configuration. This block is optional for Cloud Native plans.
    CustomPlan KubernetesNodeGroupCustomPlanArgs
    Resource properties for custom plan. This block is required for custom plans only.
    GpuPlan KubernetesNodeGroupGpuPlanArgs
    Resource properties for GPU plan storage configuration. This block is optional for GPU plans.
    KubeletArgs []KubernetesNodeGroupKubeletArgArgs
    Additional arguments for kubelet for the nodes in this group. Configure the arguments without leading --. The API will prefix the arguments with -- when preparing kubelet call.

    Note that these arguments will be passed directly to kubelet CLI on each worker node without any validation. Passing invalid arguments can break your whole cluster. Be extra careful when adding kubelet args.
    Labels map[string]string
    User defined key-value pairs to classify the node_group.
    Name string
    The name of the node group. Needs to be unique within a cluster.
    SshKeys []string
    You can optionally select SSH keys to be added as authorized keys to the nodes in this node group. This allows you to connect to the nodes via SSH once they are running.
    StorageEncryption string
    The storage encryption strategy to use for the nodes in this group. If not set, the cluster's storage encryption strategy will be used, if applicable. Valid values are data-at-rest and none.
    Taints []KubernetesNodeGroupTaintArgs
    Taints for the nodes in this group.
    UtilityNetworkAccess bool
    If set to false, nodes in this group will not have access to utility network.
    cluster String
    UUID of the cluster.
    nodeCount Integer
    Amount of nodes to provision in the node group.
    plan String
    The server plan used for the node group. You can list available plans with upctl server plans
    antiAffinity Boolean
    If set to true, nodes in this group will be placed on separate compute hosts. Please note that anti-affinity policy is considered 'best effort' and enabling it does not fully guarantee that the nodes will end up on different hardware.
    cloudNativePlan KubernetesNodeGroupCloudNativePlan
    Resource properties for Cloud Native plan storage configuration. This block is optional for Cloud Native plans.
    customPlan KubernetesNodeGroupCustomPlan
    Resource properties for custom plan. This block is required for custom plans only.
    gpuPlan KubernetesNodeGroupGpuPlan
    Resource properties for GPU plan storage configuration. This block is optional for GPU plans.
    kubeletArgs List<KubernetesNodeGroupKubeletArg>
    Additional arguments for kubelet for the nodes in this group. Configure the arguments without leading --. The API will prefix the arguments with -- when preparing kubelet call.

    Note that these arguments will be passed directly to kubelet CLI on each worker node without any validation. Passing invalid arguments can break your whole cluster. Be extra careful when adding kubelet args.
    labels Map<String,String>
    User defined key-value pairs to classify the node_group.
    name String
    The name of the node group. Needs to be unique within a cluster.
    sshKeys List<String>
    You can optionally select SSH keys to be added as authorized keys to the nodes in this node group. This allows you to connect to the nodes via SSH once they are running.
    storageEncryption String
    The storage encryption strategy to use for the nodes in this group. If not set, the cluster's storage encryption strategy will be used, if applicable. Valid values are data-at-rest and none.
    taints List<KubernetesNodeGroupTaint>
    Taints for the nodes in this group.
    utilityNetworkAccess Boolean
    If set to false, nodes in this group will not have access to utility network.
    cluster string
    UUID of the cluster.
    nodeCount number
    Amount of nodes to provision in the node group.
    plan string
    The server plan used for the node group. You can list available plans with upctl server plans
    antiAffinity boolean
    If set to true, nodes in this group will be placed on separate compute hosts. Please note that anti-affinity policy is considered 'best effort' and enabling it does not fully guarantee that the nodes will end up on different hardware.
    cloudNativePlan KubernetesNodeGroupCloudNativePlan
    Resource properties for Cloud Native plan storage configuration. This block is optional for Cloud Native plans.
    customPlan KubernetesNodeGroupCustomPlan
    Resource properties for custom plan. This block is required for custom plans only.
    gpuPlan KubernetesNodeGroupGpuPlan
    Resource properties for GPU plan storage configuration. This block is optional for GPU plans.
    kubeletArgs KubernetesNodeGroupKubeletArg[]
    Additional arguments for kubelet for the nodes in this group. Configure the arguments without leading --. The API will prefix the arguments with -- when preparing kubelet call.

    Note that these arguments will be passed directly to kubelet CLI on each worker node without any validation. Passing invalid arguments can break your whole cluster. Be extra careful when adding kubelet args.
    labels {[key: string]: string}
    User defined key-value pairs to classify the node_group.
    name string
    The name of the node group. Needs to be unique within a cluster.
    sshKeys string[]
    You can optionally select SSH keys to be added as authorized keys to the nodes in this node group. This allows you to connect to the nodes via SSH once they are running.
    storageEncryption string
    The storage encryption strategy to use for the nodes in this group. If not set, the cluster's storage encryption strategy will be used, if applicable. Valid values are data-at-rest and none.
    taints KubernetesNodeGroupTaint[]
    Taints for the nodes in this group.
    utilityNetworkAccess boolean
    If set to false, nodes in this group will not have access to utility network.
    cluster str
    UUID of the cluster.
    node_count int
    Amount of nodes to provision in the node group.
    plan str
    The server plan used for the node group. You can list available plans with upctl server plans
    anti_affinity bool
    If set to true, nodes in this group will be placed on separate compute hosts. Please note that anti-affinity policy is considered 'best effort' and enabling it does not fully guarantee that the nodes will end up on different hardware.
    cloud_native_plan KubernetesNodeGroupCloudNativePlanArgs
    Resource properties for Cloud Native plan storage configuration. This block is optional for Cloud Native plans.
    custom_plan KubernetesNodeGroupCustomPlanArgs
    Resource properties for custom plan. This block is required for custom plans only.
    gpu_plan KubernetesNodeGroupGpuPlanArgs
    Resource properties for GPU plan storage configuration. This block is optional for GPU plans.
    kubelet_args Sequence[KubernetesNodeGroupKubeletArgArgs]
    Additional arguments for kubelet for the nodes in this group. Configure the arguments without leading --. The API will prefix the arguments with -- when preparing kubelet call.

    Note that these arguments will be passed directly to kubelet CLI on each worker node without any validation. Passing invalid arguments can break your whole cluster. Be extra careful when adding kubelet args.
    labels Mapping[str, str]
    User defined key-value pairs to classify the node_group.
    name str
    The name of the node group. Needs to be unique within a cluster.
    ssh_keys Sequence[str]
    You can optionally select SSH keys to be added as authorized keys to the nodes in this node group. This allows you to connect to the nodes via SSH once they are running.
    storage_encryption str
    The storage encryption strategy to use for the nodes in this group. If not set, the cluster's storage encryption strategy will be used, if applicable. Valid values are data-at-rest and none.
    taints Sequence[KubernetesNodeGroupTaintArgs]
    Taints for the nodes in this group.
    utility_network_access bool
    If set to false, nodes in this group will not have access to utility network.
    cluster String
    UUID of the cluster.
    nodeCount Number
    Amount of nodes to provision in the node group.
    plan String
    The server plan used for the node group. You can list available plans with upctl server plans
    antiAffinity Boolean
    If set to true, nodes in this group will be placed on separate compute hosts. Please note that anti-affinity policy is considered 'best effort' and enabling it does not fully guarantee that the nodes will end up on different hardware.
    cloudNativePlan Property Map
    Resource properties for Cloud Native plan storage configuration. This block is optional for Cloud Native plans.
    customPlan Property Map
    Resource properties for custom plan. This block is required for custom plans only.
    gpuPlan Property Map
    Resource properties for GPU plan storage configuration. This block is optional for GPU plans.
    kubeletArgs List<Property Map>
    Additional arguments for kubelet for the nodes in this group. Configure the arguments without leading --. The API will prefix the arguments with -- when preparing kubelet call.

    Note that these arguments will be passed directly to kubelet CLI on each worker node without any validation. Passing invalid arguments can break your whole cluster. Be extra careful when adding kubelet args.
    labels Map<String>
    User defined key-value pairs to classify the node_group.
    name String
    The name of the node group. Needs to be unique within a cluster.
    sshKeys List<String>
    You can optionally select SSH keys to be added as authorized keys to the nodes in this node group. This allows you to connect to the nodes via SSH once they are running.
    storageEncryption String
    The storage encryption strategy to use for the nodes in this group. If not set, the cluster's storage encryption strategy will be used, if applicable. Valid values are data-at-rest and none.
    taints List<Property Map>
    Taints for the nodes in this group.
    utilityNetworkAccess Boolean
    If set to false, nodes in this group will not have access to utility network.

    Outputs

    All input properties are implicitly available as output properties. Additionally, the KubernetesNodeGroup 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 KubernetesNodeGroup Resource

    Get an existing KubernetesNodeGroup 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?: KubernetesNodeGroupState, opts?: CustomResourceOptions): KubernetesNodeGroup
    @staticmethod
    def get(resource_name: str,
            id: str,
            opts: Optional[ResourceOptions] = None,
            anti_affinity: Optional[bool] = None,
            cloud_native_plan: Optional[KubernetesNodeGroupCloudNativePlanArgs] = None,
            cluster: Optional[str] = None,
            custom_plan: Optional[KubernetesNodeGroupCustomPlanArgs] = None,
            gpu_plan: Optional[KubernetesNodeGroupGpuPlanArgs] = None,
            kubelet_args: Optional[Sequence[KubernetesNodeGroupKubeletArgArgs]] = None,
            labels: Optional[Mapping[str, str]] = None,
            name: Optional[str] = None,
            node_count: Optional[int] = None,
            plan: Optional[str] = None,
            ssh_keys: Optional[Sequence[str]] = None,
            storage_encryption: Optional[str] = None,
            taints: Optional[Sequence[KubernetesNodeGroupTaintArgs]] = None,
            utility_network_access: Optional[bool] = None) -> KubernetesNodeGroup
    func GetKubernetesNodeGroup(ctx *Context, name string, id IDInput, state *KubernetesNodeGroupState, opts ...ResourceOption) (*KubernetesNodeGroup, error)
    public static KubernetesNodeGroup Get(string name, Input<string> id, KubernetesNodeGroupState? state, CustomResourceOptions? opts = null)
    public static KubernetesNodeGroup get(String name, Output<String> id, KubernetesNodeGroupState state, CustomResourceOptions options)
    resources:  _:    type: upcloud:KubernetesNodeGroup    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:
    AntiAffinity bool
    If set to true, nodes in this group will be placed on separate compute hosts. Please note that anti-affinity policy is considered 'best effort' and enabling it does not fully guarantee that the nodes will end up on different hardware.
    CloudNativePlan UpCloud.Pulumi.UpCloud.Inputs.KubernetesNodeGroupCloudNativePlan
    Resource properties for Cloud Native plan storage configuration. This block is optional for Cloud Native plans.
    Cluster string
    UUID of the cluster.
    CustomPlan UpCloud.Pulumi.UpCloud.Inputs.KubernetesNodeGroupCustomPlan
    Resource properties for custom plan. This block is required for custom plans only.
    GpuPlan UpCloud.Pulumi.UpCloud.Inputs.KubernetesNodeGroupGpuPlan
    Resource properties for GPU plan storage configuration. This block is optional for GPU plans.
    KubeletArgs List<UpCloud.Pulumi.UpCloud.Inputs.KubernetesNodeGroupKubeletArg>
    Additional arguments for kubelet for the nodes in this group. Configure the arguments without leading --. The API will prefix the arguments with -- when preparing kubelet call.

    Note that these arguments will be passed directly to kubelet CLI on each worker node without any validation. Passing invalid arguments can break your whole cluster. Be extra careful when adding kubelet args.
    Labels Dictionary<string, string>
    User defined key-value pairs to classify the node_group.
    Name string
    The name of the node group. Needs to be unique within a cluster.
    NodeCount int
    Amount of nodes to provision in the node group.
    Plan string
    The server plan used for the node group. You can list available plans with upctl server plans
    SshKeys List<string>
    You can optionally select SSH keys to be added as authorized keys to the nodes in this node group. This allows you to connect to the nodes via SSH once they are running.
    StorageEncryption string
    The storage encryption strategy to use for the nodes in this group. If not set, the cluster's storage encryption strategy will be used, if applicable. Valid values are data-at-rest and none.
    Taints List<UpCloud.Pulumi.UpCloud.Inputs.KubernetesNodeGroupTaint>
    Taints for the nodes in this group.
    UtilityNetworkAccess bool
    If set to false, nodes in this group will not have access to utility network.
    AntiAffinity bool
    If set to true, nodes in this group will be placed on separate compute hosts. Please note that anti-affinity policy is considered 'best effort' and enabling it does not fully guarantee that the nodes will end up on different hardware.
    CloudNativePlan KubernetesNodeGroupCloudNativePlanArgs
    Resource properties for Cloud Native plan storage configuration. This block is optional for Cloud Native plans.
    Cluster string
    UUID of the cluster.
    CustomPlan KubernetesNodeGroupCustomPlanArgs
    Resource properties for custom plan. This block is required for custom plans only.
    GpuPlan KubernetesNodeGroupGpuPlanArgs
    Resource properties for GPU plan storage configuration. This block is optional for GPU plans.
    KubeletArgs []KubernetesNodeGroupKubeletArgArgs
    Additional arguments for kubelet for the nodes in this group. Configure the arguments without leading --. The API will prefix the arguments with -- when preparing kubelet call.

    Note that these arguments will be passed directly to kubelet CLI on each worker node without any validation. Passing invalid arguments can break your whole cluster. Be extra careful when adding kubelet args.
    Labels map[string]string
    User defined key-value pairs to classify the node_group.
    Name string
    The name of the node group. Needs to be unique within a cluster.
    NodeCount int
    Amount of nodes to provision in the node group.
    Plan string
    The server plan used for the node group. You can list available plans with upctl server plans
    SshKeys []string
    You can optionally select SSH keys to be added as authorized keys to the nodes in this node group. This allows you to connect to the nodes via SSH once they are running.
    StorageEncryption string
    The storage encryption strategy to use for the nodes in this group. If not set, the cluster's storage encryption strategy will be used, if applicable. Valid values are data-at-rest and none.
    Taints []KubernetesNodeGroupTaintArgs
    Taints for the nodes in this group.
    UtilityNetworkAccess bool
    If set to false, nodes in this group will not have access to utility network.
    antiAffinity Boolean
    If set to true, nodes in this group will be placed on separate compute hosts. Please note that anti-affinity policy is considered 'best effort' and enabling it does not fully guarantee that the nodes will end up on different hardware.
    cloudNativePlan KubernetesNodeGroupCloudNativePlan
    Resource properties for Cloud Native plan storage configuration. This block is optional for Cloud Native plans.
    cluster String
    UUID of the cluster.
    customPlan KubernetesNodeGroupCustomPlan
    Resource properties for custom plan. This block is required for custom plans only.
    gpuPlan KubernetesNodeGroupGpuPlan
    Resource properties for GPU plan storage configuration. This block is optional for GPU plans.
    kubeletArgs List<KubernetesNodeGroupKubeletArg>
    Additional arguments for kubelet for the nodes in this group. Configure the arguments without leading --. The API will prefix the arguments with -- when preparing kubelet call.

    Note that these arguments will be passed directly to kubelet CLI on each worker node without any validation. Passing invalid arguments can break your whole cluster. Be extra careful when adding kubelet args.
    labels Map<String,String>
    User defined key-value pairs to classify the node_group.
    name String
    The name of the node group. Needs to be unique within a cluster.
    nodeCount Integer
    Amount of nodes to provision in the node group.
    plan String
    The server plan used for the node group. You can list available plans with upctl server plans
    sshKeys List<String>
    You can optionally select SSH keys to be added as authorized keys to the nodes in this node group. This allows you to connect to the nodes via SSH once they are running.
    storageEncryption String
    The storage encryption strategy to use for the nodes in this group. If not set, the cluster's storage encryption strategy will be used, if applicable. Valid values are data-at-rest and none.
    taints List<KubernetesNodeGroupTaint>
    Taints for the nodes in this group.
    utilityNetworkAccess Boolean
    If set to false, nodes in this group will not have access to utility network.
    antiAffinity boolean
    If set to true, nodes in this group will be placed on separate compute hosts. Please note that anti-affinity policy is considered 'best effort' and enabling it does not fully guarantee that the nodes will end up on different hardware.
    cloudNativePlan KubernetesNodeGroupCloudNativePlan
    Resource properties for Cloud Native plan storage configuration. This block is optional for Cloud Native plans.
    cluster string
    UUID of the cluster.
    customPlan KubernetesNodeGroupCustomPlan
    Resource properties for custom plan. This block is required for custom plans only.
    gpuPlan KubernetesNodeGroupGpuPlan
    Resource properties for GPU plan storage configuration. This block is optional for GPU plans.
    kubeletArgs KubernetesNodeGroupKubeletArg[]
    Additional arguments for kubelet for the nodes in this group. Configure the arguments without leading --. The API will prefix the arguments with -- when preparing kubelet call.

    Note that these arguments will be passed directly to kubelet CLI on each worker node without any validation. Passing invalid arguments can break your whole cluster. Be extra careful when adding kubelet args.
    labels {[key: string]: string}
    User defined key-value pairs to classify the node_group.
    name string
    The name of the node group. Needs to be unique within a cluster.
    nodeCount number
    Amount of nodes to provision in the node group.
    plan string
    The server plan used for the node group. You can list available plans with upctl server plans
    sshKeys string[]
    You can optionally select SSH keys to be added as authorized keys to the nodes in this node group. This allows you to connect to the nodes via SSH once they are running.
    storageEncryption string
    The storage encryption strategy to use for the nodes in this group. If not set, the cluster's storage encryption strategy will be used, if applicable. Valid values are data-at-rest and none.
    taints KubernetesNodeGroupTaint[]
    Taints for the nodes in this group.
    utilityNetworkAccess boolean
    If set to false, nodes in this group will not have access to utility network.
    anti_affinity bool
    If set to true, nodes in this group will be placed on separate compute hosts. Please note that anti-affinity policy is considered 'best effort' and enabling it does not fully guarantee that the nodes will end up on different hardware.
    cloud_native_plan KubernetesNodeGroupCloudNativePlanArgs
    Resource properties for Cloud Native plan storage configuration. This block is optional for Cloud Native plans.
    cluster str
    UUID of the cluster.
    custom_plan KubernetesNodeGroupCustomPlanArgs
    Resource properties for custom plan. This block is required for custom plans only.
    gpu_plan KubernetesNodeGroupGpuPlanArgs
    Resource properties for GPU plan storage configuration. This block is optional for GPU plans.
    kubelet_args Sequence[KubernetesNodeGroupKubeletArgArgs]
    Additional arguments for kubelet for the nodes in this group. Configure the arguments without leading --. The API will prefix the arguments with -- when preparing kubelet call.

    Note that these arguments will be passed directly to kubelet CLI on each worker node without any validation. Passing invalid arguments can break your whole cluster. Be extra careful when adding kubelet args.
    labels Mapping[str, str]
    User defined key-value pairs to classify the node_group.
    name str
    The name of the node group. Needs to be unique within a cluster.
    node_count int
    Amount of nodes to provision in the node group.
    plan str
    The server plan used for the node group. You can list available plans with upctl server plans
    ssh_keys Sequence[str]
    You can optionally select SSH keys to be added as authorized keys to the nodes in this node group. This allows you to connect to the nodes via SSH once they are running.
    storage_encryption str
    The storage encryption strategy to use for the nodes in this group. If not set, the cluster's storage encryption strategy will be used, if applicable. Valid values are data-at-rest and none.
    taints Sequence[KubernetesNodeGroupTaintArgs]
    Taints for the nodes in this group.
    utility_network_access bool
    If set to false, nodes in this group will not have access to utility network.
    antiAffinity Boolean
    If set to true, nodes in this group will be placed on separate compute hosts. Please note that anti-affinity policy is considered 'best effort' and enabling it does not fully guarantee that the nodes will end up on different hardware.
    cloudNativePlan Property Map
    Resource properties for Cloud Native plan storage configuration. This block is optional for Cloud Native plans.
    cluster String
    UUID of the cluster.
    customPlan Property Map
    Resource properties for custom plan. This block is required for custom plans only.
    gpuPlan Property Map
    Resource properties for GPU plan storage configuration. This block is optional for GPU plans.
    kubeletArgs List<Property Map>
    Additional arguments for kubelet for the nodes in this group. Configure the arguments without leading --. The API will prefix the arguments with -- when preparing kubelet call.

    Note that these arguments will be passed directly to kubelet CLI on each worker node without any validation. Passing invalid arguments can break your whole cluster. Be extra careful when adding kubelet args.
    labels Map<String>
    User defined key-value pairs to classify the node_group.
    name String
    The name of the node group. Needs to be unique within a cluster.
    nodeCount Number
    Amount of nodes to provision in the node group.
    plan String
    The server plan used for the node group. You can list available plans with upctl server plans
    sshKeys List<String>
    You can optionally select SSH keys to be added as authorized keys to the nodes in this node group. This allows you to connect to the nodes via SSH once they are running.
    storageEncryption String
    The storage encryption strategy to use for the nodes in this group. If not set, the cluster's storage encryption strategy will be used, if applicable. Valid values are data-at-rest and none.
    taints List<Property Map>
    Taints for the nodes in this group.
    utilityNetworkAccess Boolean
    If set to false, nodes in this group will not have access to utility network.

    Supporting Types

    KubernetesNodeGroupCloudNativePlan, KubernetesNodeGroupCloudNativePlanArgs

    StorageSize int
    The size of the storage device in gigabytes.
    StorageTier string
    The storage tier to use.
    StorageSize int
    The size of the storage device in gigabytes.
    StorageTier string
    The storage tier to use.
    storageSize Integer
    The size of the storage device in gigabytes.
    storageTier String
    The storage tier to use.
    storageSize number
    The size of the storage device in gigabytes.
    storageTier string
    The storage tier to use.
    storage_size int
    The size of the storage device in gigabytes.
    storage_tier str
    The storage tier to use.
    storageSize Number
    The size of the storage device in gigabytes.
    storageTier String
    The storage tier to use.

    KubernetesNodeGroupCustomPlan, KubernetesNodeGroupCustomPlanArgs

    Cores int
    The number of CPU cores dedicated to individual node group nodes.
    Memory int
    The amount of memory in megabytes to assign to individual node group node. Value needs to be divisible by 1024.
    StorageSize int
    The size of the storage device in gigabytes.
    StorageTier string
    The storage tier to use.
    Cores int
    The number of CPU cores dedicated to individual node group nodes.
    Memory int
    The amount of memory in megabytes to assign to individual node group node. Value needs to be divisible by 1024.
    StorageSize int
    The size of the storage device in gigabytes.
    StorageTier string
    The storage tier to use.
    cores Integer
    The number of CPU cores dedicated to individual node group nodes.
    memory Integer
    The amount of memory in megabytes to assign to individual node group node. Value needs to be divisible by 1024.
    storageSize Integer
    The size of the storage device in gigabytes.
    storageTier String
    The storage tier to use.
    cores number
    The number of CPU cores dedicated to individual node group nodes.
    memory number
    The amount of memory in megabytes to assign to individual node group node. Value needs to be divisible by 1024.
    storageSize number
    The size of the storage device in gigabytes.
    storageTier string
    The storage tier to use.
    cores int
    The number of CPU cores dedicated to individual node group nodes.
    memory int
    The amount of memory in megabytes to assign to individual node group node. Value needs to be divisible by 1024.
    storage_size int
    The size of the storage device in gigabytes.
    storage_tier str
    The storage tier to use.
    cores Number
    The number of CPU cores dedicated to individual node group nodes.
    memory Number
    The amount of memory in megabytes to assign to individual node group node. Value needs to be divisible by 1024.
    storageSize Number
    The size of the storage device in gigabytes.
    storageTier String
    The storage tier to use.

    KubernetesNodeGroupGpuPlan, KubernetesNodeGroupGpuPlanArgs

    StorageSize int
    The size of the storage device in gigabytes.
    StorageTier string
    The storage tier to use.
    StorageSize int
    The size of the storage device in gigabytes.
    StorageTier string
    The storage tier to use.
    storageSize Integer
    The size of the storage device in gigabytes.
    storageTier String
    The storage tier to use.
    storageSize number
    The size of the storage device in gigabytes.
    storageTier string
    The storage tier to use.
    storage_size int
    The size of the storage device in gigabytes.
    storage_tier str
    The storage tier to use.
    storageSize Number
    The size of the storage device in gigabytes.
    storageTier String
    The storage tier to use.

    KubernetesNodeGroupKubeletArg, KubernetesNodeGroupKubeletArgArgs

    Key string
    Kubelet argument key.
    Value string
    Kubelet argument value.
    Key string
    Kubelet argument key.
    Value string
    Kubelet argument value.
    key String
    Kubelet argument key.
    value String
    Kubelet argument value.
    key string
    Kubelet argument key.
    value string
    Kubelet argument value.
    key str
    Kubelet argument key.
    value str
    Kubelet argument value.
    key String
    Kubelet argument key.
    value String
    Kubelet argument value.

    KubernetesNodeGroupTaint, KubernetesNodeGroupTaintArgs

    Effect string
    Taint effect.
    Key string
    Taint key.
    Value string
    Taint value.
    Effect string
    Taint effect.
    Key string
    Taint key.
    Value string
    Taint value.
    effect String
    Taint effect.
    key String
    Taint key.
    value String
    Taint value.
    effect string
    Taint effect.
    key string
    Taint key.
    value string
    Taint value.
    effect str
    Taint effect.
    key str
    Taint key.
    value str
    Taint value.
    effect String
    Taint effect.
    key String
    Taint key.
    value String
    Taint value.

    Package Details

    Repository
    upcloud UpCloudLtd/pulumi-upcloud
    License
    Apache-2.0
    Notes
    This Pulumi package is based on the upcloud Terraform Provider.
    upcloud logo
    UpCloud v0.5.3 published on Friday, Sep 26, 2025 by UpCloudLtd