1. Packages
  2. Ionoscloud
  3. API Docs
  4. k8s
  5. NodePool
IonosCloud v0.2.3 published on Tuesday, May 13, 2025 by ionos-cloud

ionoscloud.k8s.NodePool

Explore with Pulumi AI

ionoscloud logo
IonosCloud v0.2.3 published on Tuesday, May 13, 2025 by ionos-cloud

    Manages a Managed Kubernetes Node Pool, part of a managed Kubernetes cluster on IonosCloud.

    Example Usage

    import * as pulumi from "@pulumi/pulumi";
    import * as ionoscloud from "@ionos-cloud/sdk-pulumi";
    
    const example = new ionoscloud.compute.Datacenter("example", {
        name: "Datacenter Example",
        location: "us/las",
        description: "datacenter description",
        secAuthProtection: false,
    });
    const exampleLan = new ionoscloud.compute.Lan("example", {
        datacenterId: example.id,
        "public": false,
        name: "Lan Example",
    });
    const exampleIPBlock = new ionoscloud.compute.IPBlock("example", {
        location: "us/las",
        size: 3,
        name: "IP Block Example",
    });
    const exampleCluster = new ionoscloud.k8s.Cluster("example", {
        name: "k8sClusterExample",
        k8sVersion: "1.31.2",
        maintenanceWindow: {
            dayOfTheWeek: "Sunday",
            time: "09:00:00Z",
        },
        apiSubnetAllowLists: ["1.2.3.4/32"],
        s3Buckets: [{
            name: "globally_unique_s3_bucket_name",
        }],
    });
    const exampleNodePool = new ionoscloud.k8s.NodePool("example", {
        datacenterId: example.id,
        k8sClusterId: exampleCluster.id,
        name: "k8sNodePoolExample",
        k8sVersion: exampleCluster.k8sVersion,
        maintenanceWindow: {
            dayOfTheWeek: "Monday",
            time: "09:00:00Z",
        },
        autoScaling: {
            minNodeCount: 1,
            maxNodeCount: 2,
        },
        cpuFamily: "INTEL_XEON",
        availabilityZone: "AUTO",
        storageType: "SSD",
        nodeCount: 1,
        coresCount: 2,
        ramSize: 2048,
        storageSize: 40,
        publicIps: [
            exampleIPBlock.ips[0],
            exampleIPBlock.ips[1],
            exampleIPBlock.ips[2],
        ],
        lans: [{
            id: exampleLan.id,
            dhcp: true,
            routes: [{
                network: "1.2.3.5/24",
                gatewayIp: "10.1.5.17",
            }],
        }],
        labels: {
            lab1: "value1",
            lab2: "value2",
        },
        annotations: {
            ann1: "value1",
            ann2: "value2",
        },
    });
    
    import pulumi
    import pulumi_ionoscloud as ionoscloud
    
    example = ionoscloud.compute.Datacenter("example",
        name="Datacenter Example",
        location="us/las",
        description="datacenter description",
        sec_auth_protection=False)
    example_lan = ionoscloud.compute.Lan("example",
        datacenter_id=example.id,
        public=False,
        name="Lan Example")
    example_ip_block = ionoscloud.compute.IPBlock("example",
        location="us/las",
        size=3,
        name="IP Block Example")
    example_cluster = ionoscloud.k8s.Cluster("example",
        name="k8sClusterExample",
        k8s_version="1.31.2",
        maintenance_window={
            "day_of_the_week": "Sunday",
            "time": "09:00:00Z",
        },
        api_subnet_allow_lists=["1.2.3.4/32"],
        s3_buckets=[{
            "name": "globally_unique_s3_bucket_name",
        }])
    example_node_pool = ionoscloud.k8s.NodePool("example",
        datacenter_id=example.id,
        k8s_cluster_id=example_cluster.id,
        name="k8sNodePoolExample",
        k8s_version=example_cluster.k8s_version,
        maintenance_window={
            "day_of_the_week": "Monday",
            "time": "09:00:00Z",
        },
        auto_scaling={
            "min_node_count": 1,
            "max_node_count": 2,
        },
        cpu_family="INTEL_XEON",
        availability_zone="AUTO",
        storage_type="SSD",
        node_count=1,
        cores_count=2,
        ram_size=2048,
        storage_size=40,
        public_ips=[
            example_ip_block.ips[0],
            example_ip_block.ips[1],
            example_ip_block.ips[2],
        ],
        lans=[{
            "id": example_lan.id,
            "dhcp": True,
            "routes": [{
                "network": "1.2.3.5/24",
                "gateway_ip": "10.1.5.17",
            }],
        }],
        labels={
            "lab1": "value1",
            "lab2": "value2",
        },
        annotations={
            "ann1": "value1",
            "ann2": "value2",
        })
    
    package main
    
    import (
    	"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/compute"
    	"github.com/ionos-cloud/pulumi-ionoscloud/sdk/go/ionoscloud/k8s"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		example, err := compute.NewDatacenter(ctx, "example", &compute.DatacenterArgs{
    			Name:              pulumi.String("Datacenter Example"),
    			Location:          pulumi.String("us/las"),
    			Description:       pulumi.String("datacenter description"),
    			SecAuthProtection: pulumi.Bool(false),
    		})
    		if err != nil {
    			return err
    		}
    		exampleLan, err := compute.NewLan(ctx, "example", &compute.LanArgs{
    			DatacenterId: example.ID(),
    			Public:       pulumi.Bool(false),
    			Name:         pulumi.String("Lan Example"),
    		})
    		if err != nil {
    			return err
    		}
    		exampleIPBlock, err := compute.NewIPBlock(ctx, "example", &compute.IPBlockArgs{
    			Location: pulumi.String("us/las"),
    			Size:     pulumi.Int(3),
    			Name:     pulumi.String("IP Block Example"),
    		})
    		if err != nil {
    			return err
    		}
    		exampleCluster, err := k8s.NewCluster(ctx, "example", &k8s.ClusterArgs{
    			Name:       pulumi.String("k8sClusterExample"),
    			K8sVersion: pulumi.String("1.31.2"),
    			MaintenanceWindow: &k8s.ClusterMaintenanceWindowArgs{
    				DayOfTheWeek: pulumi.String("Sunday"),
    				Time:         pulumi.String("09:00:00Z"),
    			},
    			ApiSubnetAllowLists: pulumi.StringArray{
    				pulumi.String("1.2.3.4/32"),
    			},
    			S3Buckets: k8s.ClusterS3BucketArray{
    				&k8s.ClusterS3BucketArgs{
    					Name: pulumi.String("globally_unique_s3_bucket_name"),
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		_, err = k8s.NewNodePool(ctx, "example", &k8s.NodePoolArgs{
    			DatacenterId: example.ID(),
    			K8sClusterId: exampleCluster.ID(),
    			Name:         pulumi.String("k8sNodePoolExample"),
    			K8sVersion:   exampleCluster.K8sVersion,
    			MaintenanceWindow: &k8s.NodePoolMaintenanceWindowArgs{
    				DayOfTheWeek: pulumi.String("Monday"),
    				Time:         pulumi.String("09:00:00Z"),
    			},
    			AutoScaling: &k8s.NodePoolAutoScalingArgs{
    				MinNodeCount: pulumi.Int(1),
    				MaxNodeCount: pulumi.Int(2),
    			},
    			CpuFamily:        pulumi.String("INTEL_XEON"),
    			AvailabilityZone: pulumi.String("AUTO"),
    			StorageType:      pulumi.String("SSD"),
    			NodeCount:        pulumi.Int(1),
    			CoresCount:       pulumi.Int(2),
    			RamSize:          pulumi.Int(2048),
    			StorageSize:      pulumi.Int(40),
    			PublicIps: pulumi.StringArray{
    				exampleIPBlock.Ips.ApplyT(func(ips []string) (string, error) {
    					return ips[0], nil
    				}).(pulumi.StringOutput),
    				exampleIPBlock.Ips.ApplyT(func(ips []string) (string, error) {
    					return ips[1], nil
    				}).(pulumi.StringOutput),
    				exampleIPBlock.Ips.ApplyT(func(ips []string) (string, error) {
    					return ips[2], nil
    				}).(pulumi.StringOutput),
    			},
    			Lans: k8s.NodePoolLanArray{
    				&k8s.NodePoolLanArgs{
    					Id:   exampleLan.ID(),
    					Dhcp: pulumi.Bool(true),
    					Routes: k8s.NodePoolLanRouteArray{
    						&k8s.NodePoolLanRouteArgs{
    							Network:   pulumi.String("1.2.3.5/24"),
    							GatewayIp: pulumi.String("10.1.5.17"),
    						},
    					},
    				},
    			},
    			Labels: pulumi.StringMap{
    				"lab1": pulumi.String("value1"),
    				"lab2": pulumi.String("value2"),
    			},
    			Annotations: pulumi.StringMap{
    				"ann1": pulumi.String("value1"),
    				"ann2": pulumi.String("value2"),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Ionoscloud = Ionoscloud.Pulumi.Ionoscloud;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Ionoscloud.Compute.Datacenter("example", new()
        {
            Name = "Datacenter Example",
            Location = "us/las",
            Description = "datacenter description",
            SecAuthProtection = false,
        });
    
        var exampleLan = new Ionoscloud.Compute.Lan("example", new()
        {
            DatacenterId = example.Id,
            Public = false,
            Name = "Lan Example",
        });
    
        var exampleIPBlock = new Ionoscloud.Compute.IPBlock("example", new()
        {
            Location = "us/las",
            Size = 3,
            Name = "IP Block Example",
        });
    
        var exampleCluster = new Ionoscloud.K8s.Cluster("example", new()
        {
            Name = "k8sClusterExample",
            K8sVersion = "1.31.2",
            MaintenanceWindow = new Ionoscloud.K8s.Inputs.ClusterMaintenanceWindowArgs
            {
                DayOfTheWeek = "Sunday",
                Time = "09:00:00Z",
            },
            ApiSubnetAllowLists = new[]
            {
                "1.2.3.4/32",
            },
            S3Buckets = new[]
            {
                new Ionoscloud.K8s.Inputs.ClusterS3BucketArgs
                {
                    Name = "globally_unique_s3_bucket_name",
                },
            },
        });
    
        var exampleNodePool = new Ionoscloud.K8s.NodePool("example", new()
        {
            DatacenterId = example.Id,
            K8sClusterId = exampleCluster.Id,
            Name = "k8sNodePoolExample",
            K8sVersion = exampleCluster.K8sVersion,
            MaintenanceWindow = new Ionoscloud.K8s.Inputs.NodePoolMaintenanceWindowArgs
            {
                DayOfTheWeek = "Monday",
                Time = "09:00:00Z",
            },
            AutoScaling = new Ionoscloud.K8s.Inputs.NodePoolAutoScalingArgs
            {
                MinNodeCount = 1,
                MaxNodeCount = 2,
            },
            CpuFamily = "INTEL_XEON",
            AvailabilityZone = "AUTO",
            StorageType = "SSD",
            NodeCount = 1,
            CoresCount = 2,
            RamSize = 2048,
            StorageSize = 40,
            PublicIps = new[]
            {
                exampleIPBlock.Ips.Apply(ips => ips[0]),
                exampleIPBlock.Ips.Apply(ips => ips[1]),
                exampleIPBlock.Ips.Apply(ips => ips[2]),
            },
            Lans = new[]
            {
                new Ionoscloud.K8s.Inputs.NodePoolLanArgs
                {
                    Id = exampleLan.Id,
                    Dhcp = true,
                    Routes = new[]
                    {
                        new Ionoscloud.K8s.Inputs.NodePoolLanRouteArgs
                        {
                            Network = "1.2.3.5/24",
                            GatewayIp = "10.1.5.17",
                        },
                    },
                },
            },
            Labels = 
            {
                { "lab1", "value1" },
                { "lab2", "value2" },
            },
            Annotations = 
            {
                { "ann1", "value1" },
                { "ann2", "value2" },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.ionoscloud.compute.Datacenter;
    import com.pulumi.ionoscloud.compute.DatacenterArgs;
    import com.pulumi.ionoscloud.compute.Lan;
    import com.pulumi.ionoscloud.compute.LanArgs;
    import com.pulumi.ionoscloud.compute.IPBlock;
    import com.pulumi.ionoscloud.compute.IPBlockArgs;
    import com.pulumi.ionoscloud.k8s.Cluster;
    import com.pulumi.ionoscloud.k8s.ClusterArgs;
    import com.pulumi.ionoscloud.k8s.inputs.ClusterMaintenanceWindowArgs;
    import com.pulumi.ionoscloud.k8s.inputs.ClusterS3BucketArgs;
    import com.pulumi.ionoscloud.k8s.NodePool;
    import com.pulumi.ionoscloud.k8s.NodePoolArgs;
    import com.pulumi.ionoscloud.k8s.inputs.NodePoolMaintenanceWindowArgs;
    import com.pulumi.ionoscloud.k8s.inputs.NodePoolAutoScalingArgs;
    import com.pulumi.ionoscloud.k8s.inputs.NodePoolLanArgs;
    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) {
            var example = new Datacenter("example", DatacenterArgs.builder()
                .name("Datacenter Example")
                .location("us/las")
                .description("datacenter description")
                .secAuthProtection(false)
                .build());
    
            var exampleLan = new Lan("exampleLan", LanArgs.builder()
                .datacenterId(example.id())
                .public_(false)
                .name("Lan Example")
                .build());
    
            var exampleIPBlock = new IPBlock("exampleIPBlock", IPBlockArgs.builder()
                .location("us/las")
                .size(3)
                .name("IP Block Example")
                .build());
    
            var exampleCluster = new Cluster("exampleCluster", ClusterArgs.builder()
                .name("k8sClusterExample")
                .k8sVersion("1.31.2")
                .maintenanceWindow(ClusterMaintenanceWindowArgs.builder()
                    .dayOfTheWeek("Sunday")
                    .time("09:00:00Z")
                    .build())
                .apiSubnetAllowLists("1.2.3.4/32")
                .s3Buckets(ClusterS3BucketArgs.builder()
                    .name("globally_unique_s3_bucket_name")
                    .build())
                .build());
    
            var exampleNodePool = new NodePool("exampleNodePool", NodePoolArgs.builder()
                .datacenterId(example.id())
                .k8sClusterId(exampleCluster.id())
                .name("k8sNodePoolExample")
                .k8sVersion(exampleCluster.k8sVersion())
                .maintenanceWindow(NodePoolMaintenanceWindowArgs.builder()
                    .dayOfTheWeek("Monday")
                    .time("09:00:00Z")
                    .build())
                .autoScaling(NodePoolAutoScalingArgs.builder()
                    .minNodeCount(1)
                    .maxNodeCount(2)
                    .build())
                .cpuFamily("INTEL_XEON")
                .availabilityZone("AUTO")
                .storageType("SSD")
                .nodeCount(1)
                .coresCount(2)
                .ramSize(2048)
                .storageSize(40)
                .publicIps(            
                    exampleIPBlock.ips().applyValue(ips -> ips[0]),
                    exampleIPBlock.ips().applyValue(ips -> ips[1]),
                    exampleIPBlock.ips().applyValue(ips -> ips[2]))
                .lans(NodePoolLanArgs.builder()
                    .id(exampleLan.id())
                    .dhcp(true)
                    .routes(NodePoolLanRouteArgs.builder()
                        .network("1.2.3.5/24")
                        .gatewayIp("10.1.5.17")
                        .build())
                    .build())
                .labels(Map.ofEntries(
                    Map.entry("lab1", "value1"),
                    Map.entry("lab2", "value2")
                ))
                .annotations(Map.ofEntries(
                    Map.entry("ann1", "value1"),
                    Map.entry("ann2", "value2")
                ))
                .build());
    
        }
    }
    
    resources:
      example:
        type: ionoscloud:compute:Datacenter
        properties:
          name: Datacenter Example
          location: us/las
          description: datacenter description
          secAuthProtection: false
      exampleLan:
        type: ionoscloud:compute:Lan
        name: example
        properties:
          datacenterId: ${example.id}
          public: false
          name: Lan Example
      exampleIPBlock:
        type: ionoscloud:compute:IPBlock
        name: example
        properties:
          location: us/las
          size: 3
          name: IP Block Example
      exampleCluster:
        type: ionoscloud:k8s:Cluster
        name: example
        properties:
          name: k8sClusterExample
          k8sVersion: 1.31.2
          maintenanceWindow:
            dayOfTheWeek: Sunday
            time: 09:00:00Z
          apiSubnetAllowLists:
            - 1.2.3.4/32
          s3Buckets:
            - name: globally_unique_s3_bucket_name
      exampleNodePool:
        type: ionoscloud:k8s:NodePool
        name: example
        properties:
          datacenterId: ${example.id}
          k8sClusterId: ${exampleCluster.id}
          name: k8sNodePoolExample
          k8sVersion: ${exampleCluster.k8sVersion}
          maintenanceWindow:
            dayOfTheWeek: Monday
            time: 09:00:00Z
          autoScaling:
            minNodeCount: 1
            maxNodeCount: 2
          cpuFamily: INTEL_XEON
          availabilityZone: AUTO
          storageType: SSD
          nodeCount: 1
          coresCount: 2
          ramSize: 2048
          storageSize: 40
          publicIps:
            - ${exampleIPBlock.ips[0]}
            - ${exampleIPBlock.ips[1]}
            - ${exampleIPBlock.ips[2]}
          lans:
            - id: ${exampleLan.id}
              dhcp: true
              routes:
                - network: 1.2.3.5/24
                  gatewayIp: 10.1.5.17
          labels:
            lab1: value1
            lab2: value2
          annotations:
            ann1: value1
            ann2: value2
    

    Note: Set create_before_destroy on the lan resource if you want to remove it from the nodepool during an update. This is to ensure that the nodepool is updated before the lan is destroyed.

    Create NodePool Resource

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

    Constructor syntax

    new NodePool(name: string, args: NodePoolArgs, opts?: CustomResourceOptions);
    @overload
    def NodePool(resource_name: str,
                 args: NodePoolArgs,
                 opts: Optional[ResourceOptions] = None)
    
    @overload
    def NodePool(resource_name: str,
                 opts: Optional[ResourceOptions] = None,
                 k8s_version: Optional[str] = None,
                 node_count: Optional[int] = None,
                 storage_type: Optional[str] = None,
                 availability_zone: Optional[str] = None,
                 cores_count: Optional[int] = None,
                 cpu_family: Optional[str] = None,
                 datacenter_id: Optional[str] = None,
                 k8s_cluster_id: Optional[str] = None,
                 storage_size: Optional[int] = None,
                 ram_size: Optional[int] = None,
                 labels: Optional[Mapping[str, str]] = None,
                 maintenance_window: Optional[NodePoolMaintenanceWindowArgs] = None,
                 name: Optional[str] = None,
                 allow_replace: Optional[bool] = None,
                 public_ips: Optional[Sequence[str]] = None,
                 lans: Optional[Sequence[NodePoolLanArgs]] = None,
                 annotations: Optional[Mapping[str, str]] = None,
                 auto_scaling: Optional[NodePoolAutoScalingArgs] = None)
    func NewNodePool(ctx *Context, name string, args NodePoolArgs, opts ...ResourceOption) (*NodePool, error)
    public NodePool(string name, NodePoolArgs args, CustomResourceOptions? opts = null)
    public NodePool(String name, NodePoolArgs args)
    public NodePool(String name, NodePoolArgs args, CustomResourceOptions options)
    
    type: ionoscloud:k8s:NodePool
    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 NodePoolArgs
    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 NodePoolArgs
    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 NodePoolArgs
    The arguments to resource properties.
    opts ResourceOption
    Bag of options to control resource's behavior.
    name string
    The unique name of the resource.
    args NodePoolArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    name String
    The unique name of the resource.
    args NodePoolArgs
    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 ionoscloudNodePoolResource = new Ionoscloud.K8s.NodePool("ionoscloudNodePoolResource", new()
    {
        K8sVersion = "string",
        NodeCount = 0,
        StorageType = "string",
        AvailabilityZone = "string",
        CoresCount = 0,
        CpuFamily = "string",
        DatacenterId = "string",
        K8sClusterId = "string",
        StorageSize = 0,
        RamSize = 0,
        Labels = 
        {
            { "string", "string" },
        },
        MaintenanceWindow = new Ionoscloud.K8s.Inputs.NodePoolMaintenanceWindowArgs
        {
            DayOfTheWeek = "string",
            Time = "string",
        },
        Name = "string",
        AllowReplace = false,
        PublicIps = new[]
        {
            "string",
        },
        Lans = new[]
        {
            new Ionoscloud.K8s.Inputs.NodePoolLanArgs
            {
                Id = 0,
                Dhcp = false,
                Routes = new[]
                {
                    new Ionoscloud.K8s.Inputs.NodePoolLanRouteArgs
                    {
                        GatewayIp = "string",
                        Network = "string",
                    },
                },
            },
        },
        Annotations = 
        {
            { "string", "string" },
        },
        AutoScaling = new Ionoscloud.K8s.Inputs.NodePoolAutoScalingArgs
        {
            MaxNodeCount = 0,
            MinNodeCount = 0,
        },
    });
    
    example, err := k8s.NewNodePool(ctx, "ionoscloudNodePoolResource", &k8s.NodePoolArgs{
    	K8sVersion:       pulumi.String("string"),
    	NodeCount:        pulumi.Int(0),
    	StorageType:      pulumi.String("string"),
    	AvailabilityZone: pulumi.String("string"),
    	CoresCount:       pulumi.Int(0),
    	CpuFamily:        pulumi.String("string"),
    	DatacenterId:     pulumi.String("string"),
    	K8sClusterId:     pulumi.String("string"),
    	StorageSize:      pulumi.Int(0),
    	RamSize:          pulumi.Int(0),
    	Labels: pulumi.StringMap{
    		"string": pulumi.String("string"),
    	},
    	MaintenanceWindow: &k8s.NodePoolMaintenanceWindowArgs{
    		DayOfTheWeek: pulumi.String("string"),
    		Time:         pulumi.String("string"),
    	},
    	Name:         pulumi.String("string"),
    	AllowReplace: pulumi.Bool(false),
    	PublicIps: pulumi.StringArray{
    		pulumi.String("string"),
    	},
    	Lans: k8s.NodePoolLanArray{
    		&k8s.NodePoolLanArgs{
    			Id:   pulumi.Int(0),
    			Dhcp: pulumi.Bool(false),
    			Routes: k8s.NodePoolLanRouteArray{
    				&k8s.NodePoolLanRouteArgs{
    					GatewayIp: pulumi.String("string"),
    					Network:   pulumi.String("string"),
    				},
    			},
    		},
    	},
    	Annotations: pulumi.StringMap{
    		"string": pulumi.String("string"),
    	},
    	AutoScaling: &k8s.NodePoolAutoScalingArgs{
    		MaxNodeCount: pulumi.Int(0),
    		MinNodeCount: pulumi.Int(0),
    	},
    })
    
    var ionoscloudNodePoolResource = new com.ionoscloud.pulumi.ionoscloud.k8s.NodePool("ionoscloudNodePoolResource", com.ionoscloud.pulumi.ionoscloud.k8s.NodePoolArgs.builder()
        .k8sVersion("string")
        .nodeCount(0)
        .storageType("string")
        .availabilityZone("string")
        .coresCount(0)
        .cpuFamily("string")
        .datacenterId("string")
        .k8sClusterId("string")
        .storageSize(0)
        .ramSize(0)
        .labels(Map.of("string", "string"))
        .maintenanceWindow(NodePoolMaintenanceWindowArgs.builder()
            .dayOfTheWeek("string")
            .time("string")
            .build())
        .name("string")
        .allowReplace(false)
        .publicIps("string")
        .lans(NodePoolLanArgs.builder()
            .id(0)
            .dhcp(false)
            .routes(NodePoolLanRouteArgs.builder()
                .gatewayIp("string")
                .network("string")
                .build())
            .build())
        .annotations(Map.of("string", "string"))
        .autoScaling(NodePoolAutoScalingArgs.builder()
            .maxNodeCount(0)
            .minNodeCount(0)
            .build())
        .build());
    
    ionoscloud_node_pool_resource = ionoscloud.k8s.NodePool("ionoscloudNodePoolResource",
        k8s_version="string",
        node_count=0,
        storage_type="string",
        availability_zone="string",
        cores_count=0,
        cpu_family="string",
        datacenter_id="string",
        k8s_cluster_id="string",
        storage_size=0,
        ram_size=0,
        labels={
            "string": "string",
        },
        maintenance_window={
            "day_of_the_week": "string",
            "time": "string",
        },
        name="string",
        allow_replace=False,
        public_ips=["string"],
        lans=[{
            "id": 0,
            "dhcp": False,
            "routes": [{
                "gateway_ip": "string",
                "network": "string",
            }],
        }],
        annotations={
            "string": "string",
        },
        auto_scaling={
            "max_node_count": 0,
            "min_node_count": 0,
        })
    
    const ionoscloudNodePoolResource = new ionoscloud.k8s.NodePool("ionoscloudNodePoolResource", {
        k8sVersion: "string",
        nodeCount: 0,
        storageType: "string",
        availabilityZone: "string",
        coresCount: 0,
        cpuFamily: "string",
        datacenterId: "string",
        k8sClusterId: "string",
        storageSize: 0,
        ramSize: 0,
        labels: {
            string: "string",
        },
        maintenanceWindow: {
            dayOfTheWeek: "string",
            time: "string",
        },
        name: "string",
        allowReplace: false,
        publicIps: ["string"],
        lans: [{
            id: 0,
            dhcp: false,
            routes: [{
                gatewayIp: "string",
                network: "string",
            }],
        }],
        annotations: {
            string: "string",
        },
        autoScaling: {
            maxNodeCount: 0,
            minNodeCount: 0,
        },
    });
    
    type: ionoscloud:k8s:NodePool
    properties:
        allowReplace: false
        annotations:
            string: string
        autoScaling:
            maxNodeCount: 0
            minNodeCount: 0
        availabilityZone: string
        coresCount: 0
        cpuFamily: string
        datacenterId: string
        k8sClusterId: string
        k8sVersion: string
        labels:
            string: string
        lans:
            - dhcp: false
              id: 0
              routes:
                - gatewayIp: string
                  network: string
        maintenanceWindow:
            dayOfTheWeek: string
            time: string
        name: string
        nodeCount: 0
        publicIps:
            - string
        ramSize: 0
        storageSize: 0
        storageType: string
    

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

    AvailabilityZone string
    [string] - The desired Compute availability zone - See the API documentation for more information. This attribute is immutable.
    CoresCount int
    [int] - The CPU cores count for each node of the node pool. This attribute is immutable.
    CpuFamily string
    [string] The desired CPU Family - See the API documentation for more information. This attribute is immutable.
    DatacenterId string
    [string] A Datacenter's UUID
    K8sClusterId string
    [string] A k8s cluster's UUID
    K8sVersion string
    [string] The desired Kubernetes Version. For supported values, please check the API documentation. Downgrades are not supported. The provider will ignore downgrades of patch level.
    NodeCount int
    [int] - The desired number of nodes in the node pool
    RamSize int
    [int] - The desired amount of RAM, in MB. This attribute is immutable.
    StorageSize int
    [int] - The size of the volume in GB. The size should be greater than 10GB. This attribute is immutable.
    StorageType string
    [string] - The desired storage type - SSD/HDD. This attribute is immutable.
    AllowReplace bool

    [bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the node pool.

    ⚠️ Warning: allow_replace - lets you update immutable fields, but it first destroys and then re-creates the node pool in order to do it. Set the field to true only if you know what you are doing. This will cause a downtime for all pods on that nodepool. Consider adding multiple nodepools and update one after the other for downtime free nodepool upgrade.

    Immutable fields list: name, cpu_family, availability_zone, cores_count, ram_size, storage_size, storage_type.

    ⚠️ Note:

    Be careful when using auto_scaling since the number of nodes can change. Because of that, when running pulumi preview, An update will be considered required (since node_count from the tf plan will be different from the number of nodes set by the scheduler). To avoid that, you can use ignore_changes. This will also ignore the manual changes for node_count made in the tf plan. You can read more details about the ignore_changes attribute here.

    Annotations Dictionary<string, string>
    [map] A key/value map of annotations
    AutoScaling Ionoscloud.NodePoolAutoScaling
    [string] Whether the Node Pool should autoscale. For more details, please check the API documentation
    Labels Dictionary<string, string>
    [map] A key/value map of labels
    Lans List<Ionoscloud.NodePoolLan>
    [list] A list of numeric LAN id's you want this node pool to be part of. For more details, please check the API documentation, as well as the example above
    MaintenanceWindow Ionoscloud.NodePoolMaintenanceWindow
    See the maintenance_window section in the example above
    Name string
    [string] The name of the Kubernetes Cluster. This attribute is immutable.
    PublicIps List<string>
    [list] A list of public IPs associated with the node pool; must have at least node_count + 1 elements
    AvailabilityZone string
    [string] - The desired Compute availability zone - See the API documentation for more information. This attribute is immutable.
    CoresCount int
    [int] - The CPU cores count for each node of the node pool. This attribute is immutable.
    CpuFamily string
    [string] The desired CPU Family - See the API documentation for more information. This attribute is immutable.
    DatacenterId string
    [string] A Datacenter's UUID
    K8sClusterId string
    [string] A k8s cluster's UUID
    K8sVersion string
    [string] The desired Kubernetes Version. For supported values, please check the API documentation. Downgrades are not supported. The provider will ignore downgrades of patch level.
    NodeCount int
    [int] - The desired number of nodes in the node pool
    RamSize int
    [int] - The desired amount of RAM, in MB. This attribute is immutable.
    StorageSize int
    [int] - The size of the volume in GB. The size should be greater than 10GB. This attribute is immutable.
    StorageType string
    [string] - The desired storage type - SSD/HDD. This attribute is immutable.
    AllowReplace bool

    [bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the node pool.

    ⚠️ Warning: allow_replace - lets you update immutable fields, but it first destroys and then re-creates the node pool in order to do it. Set the field to true only if you know what you are doing. This will cause a downtime for all pods on that nodepool. Consider adding multiple nodepools and update one after the other for downtime free nodepool upgrade.

    Immutable fields list: name, cpu_family, availability_zone, cores_count, ram_size, storage_size, storage_type.

    ⚠️ Note:

    Be careful when using auto_scaling since the number of nodes can change. Because of that, when running pulumi preview, An update will be considered required (since node_count from the tf plan will be different from the number of nodes set by the scheduler). To avoid that, you can use ignore_changes. This will also ignore the manual changes for node_count made in the tf plan. You can read more details about the ignore_changes attribute here.

    Annotations map[string]string
    [map] A key/value map of annotations
    AutoScaling NodePoolAutoScalingArgs
    [string] Whether the Node Pool should autoscale. For more details, please check the API documentation
    Labels map[string]string
    [map] A key/value map of labels
    Lans []NodePoolLanArgs
    [list] A list of numeric LAN id's you want this node pool to be part of. For more details, please check the API documentation, as well as the example above
    MaintenanceWindow NodePoolMaintenanceWindowArgs
    See the maintenance_window section in the example above
    Name string
    [string] The name of the Kubernetes Cluster. This attribute is immutable.
    PublicIps []string
    [list] A list of public IPs associated with the node pool; must have at least node_count + 1 elements
    availabilityZone String
    [string] - The desired Compute availability zone - See the API documentation for more information. This attribute is immutable.
    coresCount Integer
    [int] - The CPU cores count for each node of the node pool. This attribute is immutable.
    cpuFamily String
    [string] The desired CPU Family - See the API documentation for more information. This attribute is immutable.
    datacenterId String
    [string] A Datacenter's UUID
    k8sClusterId String
    [string] A k8s cluster's UUID
    k8sVersion String
    [string] The desired Kubernetes Version. For supported values, please check the API documentation. Downgrades are not supported. The provider will ignore downgrades of patch level.
    nodeCount Integer
    [int] - The desired number of nodes in the node pool
    ramSize Integer
    [int] - The desired amount of RAM, in MB. This attribute is immutable.
    storageSize Integer
    [int] - The size of the volume in GB. The size should be greater than 10GB. This attribute is immutable.
    storageType String
    [string] - The desired storage type - SSD/HDD. This attribute is immutable.
    allowReplace Boolean

    [bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the node pool.

    ⚠️ Warning: allow_replace - lets you update immutable fields, but it first destroys and then re-creates the node pool in order to do it. Set the field to true only if you know what you are doing. This will cause a downtime for all pods on that nodepool. Consider adding multiple nodepools and update one after the other for downtime free nodepool upgrade.

    Immutable fields list: name, cpu_family, availability_zone, cores_count, ram_size, storage_size, storage_type.

    ⚠️ Note:

    Be careful when using auto_scaling since the number of nodes can change. Because of that, when running pulumi preview, An update will be considered required (since node_count from the tf plan will be different from the number of nodes set by the scheduler). To avoid that, you can use ignore_changes. This will also ignore the manual changes for node_count made in the tf plan. You can read more details about the ignore_changes attribute here.

    annotations Map<String,String>
    [map] A key/value map of annotations
    autoScaling NodePoolAutoScaling
    [string] Whether the Node Pool should autoscale. For more details, please check the API documentation
    labels Map<String,String>
    [map] A key/value map of labels
    lans List<NodePoolLan>
    [list] A list of numeric LAN id's you want this node pool to be part of. For more details, please check the API documentation, as well as the example above
    maintenanceWindow NodePoolMaintenanceWindow
    See the maintenance_window section in the example above
    name String
    [string] The name of the Kubernetes Cluster. This attribute is immutable.
    publicIps List<String>
    [list] A list of public IPs associated with the node pool; must have at least node_count + 1 elements
    availabilityZone string
    [string] - The desired Compute availability zone - See the API documentation for more information. This attribute is immutable.
    coresCount number
    [int] - The CPU cores count for each node of the node pool. This attribute is immutable.
    cpuFamily string
    [string] The desired CPU Family - See the API documentation for more information. This attribute is immutable.
    datacenterId string
    [string] A Datacenter's UUID
    k8sClusterId string
    [string] A k8s cluster's UUID
    k8sVersion string
    [string] The desired Kubernetes Version. For supported values, please check the API documentation. Downgrades are not supported. The provider will ignore downgrades of patch level.
    nodeCount number
    [int] - The desired number of nodes in the node pool
    ramSize number
    [int] - The desired amount of RAM, in MB. This attribute is immutable.
    storageSize number
    [int] - The size of the volume in GB. The size should be greater than 10GB. This attribute is immutable.
    storageType string
    [string] - The desired storage type - SSD/HDD. This attribute is immutable.
    allowReplace boolean

    [bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the node pool.

    ⚠️ Warning: allow_replace - lets you update immutable fields, but it first destroys and then re-creates the node pool in order to do it. Set the field to true only if you know what you are doing. This will cause a downtime for all pods on that nodepool. Consider adding multiple nodepools and update one after the other for downtime free nodepool upgrade.

    Immutable fields list: name, cpu_family, availability_zone, cores_count, ram_size, storage_size, storage_type.

    ⚠️ Note:

    Be careful when using auto_scaling since the number of nodes can change. Because of that, when running pulumi preview, An update will be considered required (since node_count from the tf plan will be different from the number of nodes set by the scheduler). To avoid that, you can use ignore_changes. This will also ignore the manual changes for node_count made in the tf plan. You can read more details about the ignore_changes attribute here.

    annotations {[key: string]: string}
    [map] A key/value map of annotations
    autoScaling NodePoolAutoScaling
    [string] Whether the Node Pool should autoscale. For more details, please check the API documentation
    labels {[key: string]: string}
    [map] A key/value map of labels
    lans NodePoolLan[]
    [list] A list of numeric LAN id's you want this node pool to be part of. For more details, please check the API documentation, as well as the example above
    maintenanceWindow NodePoolMaintenanceWindow
    See the maintenance_window section in the example above
    name string
    [string] The name of the Kubernetes Cluster. This attribute is immutable.
    publicIps string[]
    [list] A list of public IPs associated with the node pool; must have at least node_count + 1 elements
    availability_zone str
    [string] - The desired Compute availability zone - See the API documentation for more information. This attribute is immutable.
    cores_count int
    [int] - The CPU cores count for each node of the node pool. This attribute is immutable.
    cpu_family str
    [string] The desired CPU Family - See the API documentation for more information. This attribute is immutable.
    datacenter_id str
    [string] A Datacenter's UUID
    k8s_cluster_id str
    [string] A k8s cluster's UUID
    k8s_version str
    [string] The desired Kubernetes Version. For supported values, please check the API documentation. Downgrades are not supported. The provider will ignore downgrades of patch level.
    node_count int
    [int] - The desired number of nodes in the node pool
    ram_size int
    [int] - The desired amount of RAM, in MB. This attribute is immutable.
    storage_size int
    [int] - The size of the volume in GB. The size should be greater than 10GB. This attribute is immutable.
    storage_type str
    [string] - The desired storage type - SSD/HDD. This attribute is immutable.
    allow_replace bool

    [bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the node pool.

    ⚠️ Warning: allow_replace - lets you update immutable fields, but it first destroys and then re-creates the node pool in order to do it. Set the field to true only if you know what you are doing. This will cause a downtime for all pods on that nodepool. Consider adding multiple nodepools and update one after the other for downtime free nodepool upgrade.

    Immutable fields list: name, cpu_family, availability_zone, cores_count, ram_size, storage_size, storage_type.

    ⚠️ Note:

    Be careful when using auto_scaling since the number of nodes can change. Because of that, when running pulumi preview, An update will be considered required (since node_count from the tf plan will be different from the number of nodes set by the scheduler). To avoid that, you can use ignore_changes. This will also ignore the manual changes for node_count made in the tf plan. You can read more details about the ignore_changes attribute here.

    annotations Mapping[str, str]
    [map] A key/value map of annotations
    auto_scaling NodePoolAutoScalingArgs
    [string] Whether the Node Pool should autoscale. For more details, please check the API documentation
    labels Mapping[str, str]
    [map] A key/value map of labels
    lans Sequence[NodePoolLanArgs]
    [list] A list of numeric LAN id's you want this node pool to be part of. For more details, please check the API documentation, as well as the example above
    maintenance_window NodePoolMaintenanceWindowArgs
    See the maintenance_window section in the example above
    name str
    [string] The name of the Kubernetes Cluster. This attribute is immutable.
    public_ips Sequence[str]
    [list] A list of public IPs associated with the node pool; must have at least node_count + 1 elements
    availabilityZone String
    [string] - The desired Compute availability zone - See the API documentation for more information. This attribute is immutable.
    coresCount Number
    [int] - The CPU cores count for each node of the node pool. This attribute is immutable.
    cpuFamily String
    [string] The desired CPU Family - See the API documentation for more information. This attribute is immutable.
    datacenterId String
    [string] A Datacenter's UUID
    k8sClusterId String
    [string] A k8s cluster's UUID
    k8sVersion String
    [string] The desired Kubernetes Version. For supported values, please check the API documentation. Downgrades are not supported. The provider will ignore downgrades of patch level.
    nodeCount Number
    [int] - The desired number of nodes in the node pool
    ramSize Number
    [int] - The desired amount of RAM, in MB. This attribute is immutable.
    storageSize Number
    [int] - The size of the volume in GB. The size should be greater than 10GB. This attribute is immutable.
    storageType String
    [string] - The desired storage type - SSD/HDD. This attribute is immutable.
    allowReplace Boolean

    [bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the node pool.

    ⚠️ Warning: allow_replace - lets you update immutable fields, but it first destroys and then re-creates the node pool in order to do it. Set the field to true only if you know what you are doing. This will cause a downtime for all pods on that nodepool. Consider adding multiple nodepools and update one after the other for downtime free nodepool upgrade.

    Immutable fields list: name, cpu_family, availability_zone, cores_count, ram_size, storage_size, storage_type.

    ⚠️ Note:

    Be careful when using auto_scaling since the number of nodes can change. Because of that, when running pulumi preview, An update will be considered required (since node_count from the tf plan will be different from the number of nodes set by the scheduler). To avoid that, you can use ignore_changes. This will also ignore the manual changes for node_count made in the tf plan. You can read more details about the ignore_changes attribute here.

    annotations Map<String>
    [map] A key/value map of annotations
    autoScaling Property Map
    [string] Whether the Node Pool should autoscale. For more details, please check the API documentation
    labels Map<String>
    [map] A key/value map of labels
    lans List<Property Map>
    [list] A list of numeric LAN id's you want this node pool to be part of. For more details, please check the API documentation, as well as the example above
    maintenanceWindow Property Map
    See the maintenance_window section in the example above
    name String
    [string] The name of the Kubernetes Cluster. This attribute is immutable.
    publicIps List<String>
    [list] A list of public IPs associated with the node pool; must have at least node_count + 1 elements

    Outputs

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

    Get an existing NodePool 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?: NodePoolState, opts?: CustomResourceOptions): NodePool
    @staticmethod
    def get(resource_name: str,
            id: str,
            opts: Optional[ResourceOptions] = None,
            allow_replace: Optional[bool] = None,
            annotations: Optional[Mapping[str, str]] = None,
            auto_scaling: Optional[NodePoolAutoScalingArgs] = None,
            availability_zone: Optional[str] = None,
            cores_count: Optional[int] = None,
            cpu_family: Optional[str] = None,
            datacenter_id: Optional[str] = None,
            k8s_cluster_id: Optional[str] = None,
            k8s_version: Optional[str] = None,
            labels: Optional[Mapping[str, str]] = None,
            lans: Optional[Sequence[NodePoolLanArgs]] = None,
            maintenance_window: Optional[NodePoolMaintenanceWindowArgs] = None,
            name: Optional[str] = None,
            node_count: Optional[int] = None,
            public_ips: Optional[Sequence[str]] = None,
            ram_size: Optional[int] = None,
            storage_size: Optional[int] = None,
            storage_type: Optional[str] = None) -> NodePool
    func GetNodePool(ctx *Context, name string, id IDInput, state *NodePoolState, opts ...ResourceOption) (*NodePool, error)
    public static NodePool Get(string name, Input<string> id, NodePoolState? state, CustomResourceOptions? opts = null)
    public static NodePool get(String name, Output<String> id, NodePoolState state, CustomResourceOptions options)
    resources:  _:    type: ionoscloud:k8s:NodePool    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:
    AllowReplace bool

    [bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the node pool.

    ⚠️ Warning: allow_replace - lets you update immutable fields, but it first destroys and then re-creates the node pool in order to do it. Set the field to true only if you know what you are doing. This will cause a downtime for all pods on that nodepool. Consider adding multiple nodepools and update one after the other for downtime free nodepool upgrade.

    Immutable fields list: name, cpu_family, availability_zone, cores_count, ram_size, storage_size, storage_type.

    ⚠️ Note:

    Be careful when using auto_scaling since the number of nodes can change. Because of that, when running pulumi preview, An update will be considered required (since node_count from the tf plan will be different from the number of nodes set by the scheduler). To avoid that, you can use ignore_changes. This will also ignore the manual changes for node_count made in the tf plan. You can read more details about the ignore_changes attribute here.

    Annotations Dictionary<string, string>
    [map] A key/value map of annotations
    AutoScaling Ionoscloud.NodePoolAutoScaling
    [string] Whether the Node Pool should autoscale. For more details, please check the API documentation
    AvailabilityZone string
    [string] - The desired Compute availability zone - See the API documentation for more information. This attribute is immutable.
    CoresCount int
    [int] - The CPU cores count for each node of the node pool. This attribute is immutable.
    CpuFamily string
    [string] The desired CPU Family - See the API documentation for more information. This attribute is immutable.
    DatacenterId string
    [string] A Datacenter's UUID
    K8sClusterId string
    [string] A k8s cluster's UUID
    K8sVersion string
    [string] The desired Kubernetes Version. For supported values, please check the API documentation. Downgrades are not supported. The provider will ignore downgrades of patch level.
    Labels Dictionary<string, string>
    [map] A key/value map of labels
    Lans List<Ionoscloud.NodePoolLan>
    [list] A list of numeric LAN id's you want this node pool to be part of. For more details, please check the API documentation, as well as the example above
    MaintenanceWindow Ionoscloud.NodePoolMaintenanceWindow
    See the maintenance_window section in the example above
    Name string
    [string] The name of the Kubernetes Cluster. This attribute is immutable.
    NodeCount int
    [int] - The desired number of nodes in the node pool
    PublicIps List<string>
    [list] A list of public IPs associated with the node pool; must have at least node_count + 1 elements
    RamSize int
    [int] - The desired amount of RAM, in MB. This attribute is immutable.
    StorageSize int
    [int] - The size of the volume in GB. The size should be greater than 10GB. This attribute is immutable.
    StorageType string
    [string] - The desired storage type - SSD/HDD. This attribute is immutable.
    AllowReplace bool

    [bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the node pool.

    ⚠️ Warning: allow_replace - lets you update immutable fields, but it first destroys and then re-creates the node pool in order to do it. Set the field to true only if you know what you are doing. This will cause a downtime for all pods on that nodepool. Consider adding multiple nodepools and update one after the other for downtime free nodepool upgrade.

    Immutable fields list: name, cpu_family, availability_zone, cores_count, ram_size, storage_size, storage_type.

    ⚠️ Note:

    Be careful when using auto_scaling since the number of nodes can change. Because of that, when running pulumi preview, An update will be considered required (since node_count from the tf plan will be different from the number of nodes set by the scheduler). To avoid that, you can use ignore_changes. This will also ignore the manual changes for node_count made in the tf plan. You can read more details about the ignore_changes attribute here.

    Annotations map[string]string
    [map] A key/value map of annotations
    AutoScaling NodePoolAutoScalingArgs
    [string] Whether the Node Pool should autoscale. For more details, please check the API documentation
    AvailabilityZone string
    [string] - The desired Compute availability zone - See the API documentation for more information. This attribute is immutable.
    CoresCount int
    [int] - The CPU cores count for each node of the node pool. This attribute is immutable.
    CpuFamily string
    [string] The desired CPU Family - See the API documentation for more information. This attribute is immutable.
    DatacenterId string
    [string] A Datacenter's UUID
    K8sClusterId string
    [string] A k8s cluster's UUID
    K8sVersion string
    [string] The desired Kubernetes Version. For supported values, please check the API documentation. Downgrades are not supported. The provider will ignore downgrades of patch level.
    Labels map[string]string
    [map] A key/value map of labels
    Lans []NodePoolLanArgs
    [list] A list of numeric LAN id's you want this node pool to be part of. For more details, please check the API documentation, as well as the example above
    MaintenanceWindow NodePoolMaintenanceWindowArgs
    See the maintenance_window section in the example above
    Name string
    [string] The name of the Kubernetes Cluster. This attribute is immutable.
    NodeCount int
    [int] - The desired number of nodes in the node pool
    PublicIps []string
    [list] A list of public IPs associated with the node pool; must have at least node_count + 1 elements
    RamSize int
    [int] - The desired amount of RAM, in MB. This attribute is immutable.
    StorageSize int
    [int] - The size of the volume in GB. The size should be greater than 10GB. This attribute is immutable.
    StorageType string
    [string] - The desired storage type - SSD/HDD. This attribute is immutable.
    allowReplace Boolean

    [bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the node pool.

    ⚠️ Warning: allow_replace - lets you update immutable fields, but it first destroys and then re-creates the node pool in order to do it. Set the field to true only if you know what you are doing. This will cause a downtime for all pods on that nodepool. Consider adding multiple nodepools and update one after the other for downtime free nodepool upgrade.

    Immutable fields list: name, cpu_family, availability_zone, cores_count, ram_size, storage_size, storage_type.

    ⚠️ Note:

    Be careful when using auto_scaling since the number of nodes can change. Because of that, when running pulumi preview, An update will be considered required (since node_count from the tf plan will be different from the number of nodes set by the scheduler). To avoid that, you can use ignore_changes. This will also ignore the manual changes for node_count made in the tf plan. You can read more details about the ignore_changes attribute here.

    annotations Map<String,String>
    [map] A key/value map of annotations
    autoScaling NodePoolAutoScaling
    [string] Whether the Node Pool should autoscale. For more details, please check the API documentation
    availabilityZone String
    [string] - The desired Compute availability zone - See the API documentation for more information. This attribute is immutable.
    coresCount Integer
    [int] - The CPU cores count for each node of the node pool. This attribute is immutable.
    cpuFamily String
    [string] The desired CPU Family - See the API documentation for more information. This attribute is immutable.
    datacenterId String
    [string] A Datacenter's UUID
    k8sClusterId String
    [string] A k8s cluster's UUID
    k8sVersion String
    [string] The desired Kubernetes Version. For supported values, please check the API documentation. Downgrades are not supported. The provider will ignore downgrades of patch level.
    labels Map<String,String>
    [map] A key/value map of labels
    lans List<NodePoolLan>
    [list] A list of numeric LAN id's you want this node pool to be part of. For more details, please check the API documentation, as well as the example above
    maintenanceWindow NodePoolMaintenanceWindow
    See the maintenance_window section in the example above
    name String
    [string] The name of the Kubernetes Cluster. This attribute is immutable.
    nodeCount Integer
    [int] - The desired number of nodes in the node pool
    publicIps List<String>
    [list] A list of public IPs associated with the node pool; must have at least node_count + 1 elements
    ramSize Integer
    [int] - The desired amount of RAM, in MB. This attribute is immutable.
    storageSize Integer
    [int] - The size of the volume in GB. The size should be greater than 10GB. This attribute is immutable.
    storageType String
    [string] - The desired storage type - SSD/HDD. This attribute is immutable.
    allowReplace boolean

    [bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the node pool.

    ⚠️ Warning: allow_replace - lets you update immutable fields, but it first destroys and then re-creates the node pool in order to do it. Set the field to true only if you know what you are doing. This will cause a downtime for all pods on that nodepool. Consider adding multiple nodepools and update one after the other for downtime free nodepool upgrade.

    Immutable fields list: name, cpu_family, availability_zone, cores_count, ram_size, storage_size, storage_type.

    ⚠️ Note:

    Be careful when using auto_scaling since the number of nodes can change. Because of that, when running pulumi preview, An update will be considered required (since node_count from the tf plan will be different from the number of nodes set by the scheduler). To avoid that, you can use ignore_changes. This will also ignore the manual changes for node_count made in the tf plan. You can read more details about the ignore_changes attribute here.

    annotations {[key: string]: string}
    [map] A key/value map of annotations
    autoScaling NodePoolAutoScaling
    [string] Whether the Node Pool should autoscale. For more details, please check the API documentation
    availabilityZone string
    [string] - The desired Compute availability zone - See the API documentation for more information. This attribute is immutable.
    coresCount number
    [int] - The CPU cores count for each node of the node pool. This attribute is immutable.
    cpuFamily string
    [string] The desired CPU Family - See the API documentation for more information. This attribute is immutable.
    datacenterId string
    [string] A Datacenter's UUID
    k8sClusterId string
    [string] A k8s cluster's UUID
    k8sVersion string
    [string] The desired Kubernetes Version. For supported values, please check the API documentation. Downgrades are not supported. The provider will ignore downgrades of patch level.
    labels {[key: string]: string}
    [map] A key/value map of labels
    lans NodePoolLan[]
    [list] A list of numeric LAN id's you want this node pool to be part of. For more details, please check the API documentation, as well as the example above
    maintenanceWindow NodePoolMaintenanceWindow
    See the maintenance_window section in the example above
    name string
    [string] The name of the Kubernetes Cluster. This attribute is immutable.
    nodeCount number
    [int] - The desired number of nodes in the node pool
    publicIps string[]
    [list] A list of public IPs associated with the node pool; must have at least node_count + 1 elements
    ramSize number
    [int] - The desired amount of RAM, in MB. This attribute is immutable.
    storageSize number
    [int] - The size of the volume in GB. The size should be greater than 10GB. This attribute is immutable.
    storageType string
    [string] - The desired storage type - SSD/HDD. This attribute is immutable.
    allow_replace bool

    [bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the node pool.

    ⚠️ Warning: allow_replace - lets you update immutable fields, but it first destroys and then re-creates the node pool in order to do it. Set the field to true only if you know what you are doing. This will cause a downtime for all pods on that nodepool. Consider adding multiple nodepools and update one after the other for downtime free nodepool upgrade.

    Immutable fields list: name, cpu_family, availability_zone, cores_count, ram_size, storage_size, storage_type.

    ⚠️ Note:

    Be careful when using auto_scaling since the number of nodes can change. Because of that, when running pulumi preview, An update will be considered required (since node_count from the tf plan will be different from the number of nodes set by the scheduler). To avoid that, you can use ignore_changes. This will also ignore the manual changes for node_count made in the tf plan. You can read more details about the ignore_changes attribute here.

    annotations Mapping[str, str]
    [map] A key/value map of annotations
    auto_scaling NodePoolAutoScalingArgs
    [string] Whether the Node Pool should autoscale. For more details, please check the API documentation
    availability_zone str
    [string] - The desired Compute availability zone - See the API documentation for more information. This attribute is immutable.
    cores_count int
    [int] - The CPU cores count for each node of the node pool. This attribute is immutable.
    cpu_family str
    [string] The desired CPU Family - See the API documentation for more information. This attribute is immutable.
    datacenter_id str
    [string] A Datacenter's UUID
    k8s_cluster_id str
    [string] A k8s cluster's UUID
    k8s_version str
    [string] The desired Kubernetes Version. For supported values, please check the API documentation. Downgrades are not supported. The provider will ignore downgrades of patch level.
    labels Mapping[str, str]
    [map] A key/value map of labels
    lans Sequence[NodePoolLanArgs]
    [list] A list of numeric LAN id's you want this node pool to be part of. For more details, please check the API documentation, as well as the example above
    maintenance_window NodePoolMaintenanceWindowArgs
    See the maintenance_window section in the example above
    name str
    [string] The name of the Kubernetes Cluster. This attribute is immutable.
    node_count int
    [int] - The desired number of nodes in the node pool
    public_ips Sequence[str]
    [list] A list of public IPs associated with the node pool; must have at least node_count + 1 elements
    ram_size int
    [int] - The desired amount of RAM, in MB. This attribute is immutable.
    storage_size int
    [int] - The size of the volume in GB. The size should be greater than 10GB. This attribute is immutable.
    storage_type str
    [string] - The desired storage type - SSD/HDD. This attribute is immutable.
    allowReplace Boolean

    [bool] When set to true, allows the update of immutable fields by first destroying and then re-creating the node pool.

    ⚠️ Warning: allow_replace - lets you update immutable fields, but it first destroys and then re-creates the node pool in order to do it. Set the field to true only if you know what you are doing. This will cause a downtime for all pods on that nodepool. Consider adding multiple nodepools and update one after the other for downtime free nodepool upgrade.

    Immutable fields list: name, cpu_family, availability_zone, cores_count, ram_size, storage_size, storage_type.

    ⚠️ Note:

    Be careful when using auto_scaling since the number of nodes can change. Because of that, when running pulumi preview, An update will be considered required (since node_count from the tf plan will be different from the number of nodes set by the scheduler). To avoid that, you can use ignore_changes. This will also ignore the manual changes for node_count made in the tf plan. You can read more details about the ignore_changes attribute here.

    annotations Map<String>
    [map] A key/value map of annotations
    autoScaling Property Map
    [string] Whether the Node Pool should autoscale. For more details, please check the API documentation
    availabilityZone String
    [string] - The desired Compute availability zone - See the API documentation for more information. This attribute is immutable.
    coresCount Number
    [int] - The CPU cores count for each node of the node pool. This attribute is immutable.
    cpuFamily String
    [string] The desired CPU Family - See the API documentation for more information. This attribute is immutable.
    datacenterId String
    [string] A Datacenter's UUID
    k8sClusterId String
    [string] A k8s cluster's UUID
    k8sVersion String
    [string] The desired Kubernetes Version. For supported values, please check the API documentation. Downgrades are not supported. The provider will ignore downgrades of patch level.
    labels Map<String>
    [map] A key/value map of labels
    lans List<Property Map>
    [list] A list of numeric LAN id's you want this node pool to be part of. For more details, please check the API documentation, as well as the example above
    maintenanceWindow Property Map
    See the maintenance_window section in the example above
    name String
    [string] The name of the Kubernetes Cluster. This attribute is immutable.
    nodeCount Number
    [int] - The desired number of nodes in the node pool
    publicIps List<String>
    [list] A list of public IPs associated with the node pool; must have at least node_count + 1 elements
    ramSize Number
    [int] - The desired amount of RAM, in MB. This attribute is immutable.
    storageSize Number
    [int] - The size of the volume in GB. The size should be greater than 10GB. This attribute is immutable.
    storageType String
    [string] - The desired storage type - SSD/HDD. This attribute is immutable.

    Supporting Types

    NodePoolAutoScaling, NodePoolAutoScalingArgs

    MaxNodeCount int
    [int] The maximum number of worker nodes that the node pool can scale to. Should be greater than min_node_count
    MinNodeCount int
    [int] The minimum number of worker nodes the node pool can scale down to. Should be less than max_node_count
    MaxNodeCount int
    [int] The maximum number of worker nodes that the node pool can scale to. Should be greater than min_node_count
    MinNodeCount int
    [int] The minimum number of worker nodes the node pool can scale down to. Should be less than max_node_count
    maxNodeCount Integer
    [int] The maximum number of worker nodes that the node pool can scale to. Should be greater than min_node_count
    minNodeCount Integer
    [int] The minimum number of worker nodes the node pool can scale down to. Should be less than max_node_count
    maxNodeCount number
    [int] The maximum number of worker nodes that the node pool can scale to. Should be greater than min_node_count
    minNodeCount number
    [int] The minimum number of worker nodes the node pool can scale down to. Should be less than max_node_count
    max_node_count int
    [int] The maximum number of worker nodes that the node pool can scale to. Should be greater than min_node_count
    min_node_count int
    [int] The minimum number of worker nodes the node pool can scale down to. Should be less than max_node_count
    maxNodeCount Number
    [int] The maximum number of worker nodes that the node pool can scale to. Should be greater than min_node_count
    minNodeCount Number
    [int] The minimum number of worker nodes the node pool can scale down to. Should be less than max_node_count

    NodePoolLan, NodePoolLanArgs

    Id int
    [int] The LAN ID of an existing LAN at the related datacenter
    Dhcp bool
    [boolean] Indicates if the Kubernetes Node Pool LAN will reserve an IP using DHCP. Default value is true
    Routes List<Ionoscloud.NodePoolLanRoute>
    An array of additional LANs attached to worker nodes
    Id int
    [int] The LAN ID of an existing LAN at the related datacenter
    Dhcp bool
    [boolean] Indicates if the Kubernetes Node Pool LAN will reserve an IP using DHCP. Default value is true
    Routes []NodePoolLanRoute
    An array of additional LANs attached to worker nodes
    id Integer
    [int] The LAN ID of an existing LAN at the related datacenter
    dhcp Boolean
    [boolean] Indicates if the Kubernetes Node Pool LAN will reserve an IP using DHCP. Default value is true
    routes List<NodePoolLanRoute>
    An array of additional LANs attached to worker nodes
    id number
    [int] The LAN ID of an existing LAN at the related datacenter
    dhcp boolean
    [boolean] Indicates if the Kubernetes Node Pool LAN will reserve an IP using DHCP. Default value is true
    routes NodePoolLanRoute[]
    An array of additional LANs attached to worker nodes
    id int
    [int] The LAN ID of an existing LAN at the related datacenter
    dhcp bool
    [boolean] Indicates if the Kubernetes Node Pool LAN will reserve an IP using DHCP. Default value is true
    routes Sequence[NodePoolLanRoute]
    An array of additional LANs attached to worker nodes
    id Number
    [int] The LAN ID of an existing LAN at the related datacenter
    dhcp Boolean
    [boolean] Indicates if the Kubernetes Node Pool LAN will reserve an IP using DHCP. Default value is true
    routes List<Property Map>
    An array of additional LANs attached to worker nodes

    NodePoolLanRoute, NodePoolLanRouteArgs

    GatewayIp string
    [string] IPv4 or IPv6 Gateway IP for the route
    Network string
    [string] IPv4 or IPv6 CIDR to be routed via the interface
    GatewayIp string
    [string] IPv4 or IPv6 Gateway IP for the route
    Network string
    [string] IPv4 or IPv6 CIDR to be routed via the interface
    gatewayIp String
    [string] IPv4 or IPv6 Gateway IP for the route
    network String
    [string] IPv4 or IPv6 CIDR to be routed via the interface
    gatewayIp string
    [string] IPv4 or IPv6 Gateway IP for the route
    network string
    [string] IPv4 or IPv6 CIDR to be routed via the interface
    gateway_ip str
    [string] IPv4 or IPv6 Gateway IP for the route
    network str
    [string] IPv4 or IPv6 CIDR to be routed via the interface
    gatewayIp String
    [string] IPv4 or IPv6 Gateway IP for the route
    network String
    [string] IPv4 or IPv6 CIDR to be routed via the interface

    NodePoolMaintenanceWindow, NodePoolMaintenanceWindowArgs

    DayOfTheWeek string
    [string] Day of the week when maintenance is allowed
    Time string
    [string] A clock time in the day when maintenance is allowed
    DayOfTheWeek string
    [string] Day of the week when maintenance is allowed
    Time string
    [string] A clock time in the day when maintenance is allowed
    dayOfTheWeek String
    [string] Day of the week when maintenance is allowed
    time String
    [string] A clock time in the day when maintenance is allowed
    dayOfTheWeek string
    [string] Day of the week when maintenance is allowed
    time string
    [string] A clock time in the day when maintenance is allowed
    day_of_the_week str
    [string] Day of the week when maintenance is allowed
    time str
    [string] A clock time in the day when maintenance is allowed
    dayOfTheWeek String
    [string] Day of the week when maintenance is allowed
    time String
    [string] A clock time in the day when maintenance is allowed

    Import

    A Kubernetes Node Pool resource can be imported using its Kubernetes cluster’s uuid as well as its own UUID, both of which you can retrieve from the cloud API: resource id, e.g.:

    $ pulumi import ionoscloud:k8s/nodePool:NodePool demo k8s_cluster_uuid/k8s_nodepool_id
    

    This can be helpful when you want to import kubernetes node pools which you have already created manually or using other means, outside of pulumi, towards the goal of managing them via Pulumi

    ⚠️ **_Warning: **During a maintenance window, k8s can update your k8s_version if the old one reaches end of life. This upgrade will not be shown in the plan, as we prevent

    pulumi from doing a downgrade, as downgrading k8s_version is not supported._**

    ⚠️ Warning: If you are upgrading from v5.x.x to v6.x.x: You have to modify you plan for lans to match the new structure, by putting the ids from the old slice in lans.id fields. This is not backwards compatible.

    To learn more about importing existing cloud resources, see Importing resources.

    Package Details

    Repository
    ionoscloud ionos-cloud/pulumi-ionoscloud
    License
    Apache-2.0
    Notes
    This Pulumi package is based on the ionoscloud Terraform Provider.
    ionoscloud logo
    IonosCloud v0.2.3 published on Tuesday, May 13, 2025 by ionos-cloud