KubernetesClusterNodePoolArgs

data class KubernetesClusterNodePoolArgs(val autoScalingEnabled: Output<Boolean>? = null, val capacityReservationGroupId: Output<String>? = null, val evictionPolicy: Output<String>? = null, val fipsEnabled: Output<Boolean>? = null, val gpuInstance: Output<String>? = null, val hostEncryptionEnabled: Output<Boolean>? = null, val hostGroupId: Output<String>? = null, val kubeletConfig: Output<KubernetesClusterNodePoolKubeletConfigArgs>? = null, val kubeletDiskType: Output<String>? = null, val kubernetesClusterId: Output<String>? = null, val linuxOsConfig: Output<KubernetesClusterNodePoolLinuxOsConfigArgs>? = null, val maxCount: Output<Int>? = null, val maxPods: Output<Int>? = null, val minCount: Output<Int>? = null, val mode: Output<String>? = null, val name: Output<String>? = null, val nodeCount: Output<Int>? = null, val nodeLabels: Output<Map<String, String>>? = null, val nodeNetworkProfile: Output<KubernetesClusterNodePoolNodeNetworkProfileArgs>? = null, val nodePublicIpEnabled: Output<Boolean>? = null, val nodePublicIpPrefixId: Output<String>? = null, val nodeTaints: Output<List<String>>? = null, val orchestratorVersion: Output<String>? = null, val osDiskSizeGb: Output<Int>? = null, val osDiskType: Output<String>? = null, val osSku: Output<String>? = null, val osType: Output<String>? = null, val podSubnetId: Output<String>? = null, val priority: Output<String>? = null, val proximityPlacementGroupId: Output<String>? = null, val scaleDownMode: Output<String>? = null, val snapshotId: Output<String>? = null, val spotMaxPrice: Output<Double>? = null, val tags: Output<Map<String, String>>? = null, val temporaryNameForRotation: Output<String>? = null, val ultraSsdEnabled: Output<Boolean>? = null, val upgradeSettings: Output<KubernetesClusterNodePoolUpgradeSettingsArgs>? = null, val vmSize: Output<String>? = null, val vnetSubnetId: Output<String>? = null, val windowsProfile: Output<KubernetesClusterNodePoolWindowsProfileArgs>? = null, val workloadRuntime: Output<String>? = null, val zones: Output<List<String>>? = null) : ConvertibleToJava<KubernetesClusterNodePoolArgs>

Manages a Node Pool within a Kubernetes Cluster

NOTE: Multiple Node Pools are only supported when the Kubernetes Cluster is using Virtual Machine Scale Sets. Note: Changing certain properties is done by cycling the node pool. When cycling it, it doesn’t perform cordon and drain, and it will disrupt rescheduling pods currently running on the previous node pool. temporary_name_for_rotation must be specified when changing any of the following properties: fips_enabled, host_encryption_enabled, kubelet_config, kubelet_disk_type, linux_os_config, max_pods, node_public_ip_enabled, os_disk_size_gb, os_disk_type, pod_subnet_id, snapshot_id, ultra_ssd_enabled, vm_size, vnet_subnet_id, zones.

Example Usage

This example provisions a basic Kubernetes Node Pool.

import * as pulumi from "@pulumi/pulumi";
import * as azure from "@pulumi/azure";
const example = new azure.core.ResourceGroup("example", {
name: "example-resources",
location: "West Europe",
});
const exampleKubernetesCluster = new azure.containerservice.KubernetesCluster("example", {
name: "example-aks1",
location: example.location,
resourceGroupName: example.name,
dnsPrefix: "exampleaks1",
defaultNodePool: {
name: "default",
nodeCount: 1,
vmSize: "Standard_D2_v2",
},
servicePrincipal: {
clientId: "00000000-0000-0000-0000-000000000000",
clientSecret: "00000000000000000000000000000000",
},
});
const exampleKubernetesClusterNodePool = new azure.containerservice.KubernetesClusterNodePool("example", {
name: "internal",
kubernetesClusterId: exampleKubernetesCluster.id,
vmSize: "Standard_DS2_v2",
nodeCount: 1,
tags: {
Environment: "Production",
},
});
import pulumi
import pulumi_azure as azure
example = azure.core.ResourceGroup("example",
name="example-resources",
location="West Europe")
example_kubernetes_cluster = azure.containerservice.KubernetesCluster("example",
name="example-aks1",
location=example.location,
resource_group_name=example.name,
dns_prefix="exampleaks1",
default_node_pool={
"name": "default",
"node_count": 1,
"vm_size": "Standard_D2_v2",
},
service_principal={
"client_id": "00000000-0000-0000-0000-000000000000",
"client_secret": "00000000000000000000000000000000",
})
example_kubernetes_cluster_node_pool = azure.containerservice.KubernetesClusterNodePool("example",
name="internal",
kubernetes_cluster_id=example_kubernetes_cluster.id,
vm_size="Standard_DS2_v2",
node_count=1,
tags={
"Environment": "Production",
})
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Azure = Pulumi.Azure;
return await Deployment.RunAsync(() =>
{
var example = new Azure.Core.ResourceGroup("example", new()
{
Name = "example-resources",
Location = "West Europe",
});
var exampleKubernetesCluster = new Azure.ContainerService.KubernetesCluster("example", new()
{
Name = "example-aks1",
Location = example.Location,
ResourceGroupName = example.Name,
DnsPrefix = "exampleaks1",
DefaultNodePool = new Azure.ContainerService.Inputs.KubernetesClusterDefaultNodePoolArgs
{
Name = "default",
NodeCount = 1,
VmSize = "Standard_D2_v2",
},
ServicePrincipal = new Azure.ContainerService.Inputs.KubernetesClusterServicePrincipalArgs
{
ClientId = "00000000-0000-0000-0000-000000000000",
ClientSecret = "00000000000000000000000000000000",
},
});
var exampleKubernetesClusterNodePool = new Azure.ContainerService.KubernetesClusterNodePool("example", new()
{
Name = "internal",
KubernetesClusterId = exampleKubernetesCluster.Id,
VmSize = "Standard_DS2_v2",
NodeCount = 1,
Tags =
{
{ "Environment", "Production" },
},
});
});
package main
import (
"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/containerservice"
"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
example, err := core.NewResourceGroup(ctx, "example", &core.ResourceGroupArgs{
Name: pulumi.String("example-resources"),
Location: pulumi.String("West Europe"),
})
if err != nil {
return err
}
exampleKubernetesCluster, err := containerservice.NewKubernetesCluster(ctx, "example", &containerservice.KubernetesClusterArgs{
Name: pulumi.String("example-aks1"),
Location: example.Location,
ResourceGroupName: example.Name,
DnsPrefix: pulumi.String("exampleaks1"),
DefaultNodePool: &containerservice.KubernetesClusterDefaultNodePoolArgs{
Name: pulumi.String("default"),
NodeCount: pulumi.Int(1),
VmSize: pulumi.String("Standard_D2_v2"),
},
ServicePrincipal: &containerservice.KubernetesClusterServicePrincipalArgs{
ClientId: pulumi.String("00000000-0000-0000-0000-000000000000"),
ClientSecret: pulumi.String("00000000000000000000000000000000"),
},
})
if err != nil {
return err
}
_, err = containerservice.NewKubernetesClusterNodePool(ctx, "example", &containerservice.KubernetesClusterNodePoolArgs{
Name: pulumi.String("internal"),
KubernetesClusterId: exampleKubernetesCluster.ID(),
VmSize: pulumi.String("Standard_DS2_v2"),
NodeCount: pulumi.Int(1),
Tags: pulumi.StringMap{
"Environment": pulumi.String("Production"),
},
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azure.core.ResourceGroup;
import com.pulumi.azure.core.ResourceGroupArgs;
import com.pulumi.azure.containerservice.KubernetesCluster;
import com.pulumi.azure.containerservice.KubernetesClusterArgs;
import com.pulumi.azure.containerservice.inputs.KubernetesClusterDefaultNodePoolArgs;
import com.pulumi.azure.containerservice.inputs.KubernetesClusterServicePrincipalArgs;
import com.pulumi.azure.containerservice.KubernetesClusterNodePool;
import com.pulumi.azure.containerservice.KubernetesClusterNodePoolArgs;
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 ResourceGroup("example", ResourceGroupArgs.builder()
.name("example-resources")
.location("West Europe")
.build());
var exampleKubernetesCluster = new KubernetesCluster("exampleKubernetesCluster", KubernetesClusterArgs.builder()
.name("example-aks1")
.location(example.location())
.resourceGroupName(example.name())
.dnsPrefix("exampleaks1")
.defaultNodePool(KubernetesClusterDefaultNodePoolArgs.builder()
.name("default")
.nodeCount(1)
.vmSize("Standard_D2_v2")
.build())
.servicePrincipal(KubernetesClusterServicePrincipalArgs.builder()
.clientId("00000000-0000-0000-0000-000000000000")
.clientSecret("00000000000000000000000000000000")
.build())
.build());
var exampleKubernetesClusterNodePool = new KubernetesClusterNodePool("exampleKubernetesClusterNodePool", KubernetesClusterNodePoolArgs.builder()
.name("internal")
.kubernetesClusterId(exampleKubernetesCluster.id())
.vmSize("Standard_DS2_v2")
.nodeCount(1)
.tags(Map.of("Environment", "Production"))
.build());
}
}
resources:
example:
type: azure:core:ResourceGroup
properties:
name: example-resources
location: West Europe
exampleKubernetesCluster:
type: azure:containerservice:KubernetesCluster
name: example
properties:
name: example-aks1
location: ${example.location}
resourceGroupName: ${example.name}
dnsPrefix: exampleaks1
defaultNodePool:
name: default
nodeCount: 1
vmSize: Standard_D2_v2
servicePrincipal:
clientId: 00000000-0000-0000-0000-000000000000
clientSecret: '00000000000000000000000000000000'
exampleKubernetesClusterNodePool:
type: azure:containerservice:KubernetesClusterNodePool
name: example
properties:
name: internal
kubernetesClusterId: ${exampleKubernetesCluster.id}
vmSize: Standard_DS2_v2
nodeCount: 1
tags:
Environment: Production

Import

Kubernetes Cluster Node Pools can be imported using the resource id, e.g.

$ pulumi import azure:containerservice/kubernetesClusterNodePool:KubernetesClusterNodePool pool1 /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.ContainerService/managedClusters/cluster1/agentPools/pool1

Constructors

Link copied to clipboard
constructor(autoScalingEnabled: Output<Boolean>? = null, capacityReservationGroupId: Output<String>? = null, evictionPolicy: Output<String>? = null, fipsEnabled: Output<Boolean>? = null, gpuInstance: Output<String>? = null, hostEncryptionEnabled: Output<Boolean>? = null, hostGroupId: Output<String>? = null, kubeletConfig: Output<KubernetesClusterNodePoolKubeletConfigArgs>? = null, kubeletDiskType: Output<String>? = null, kubernetesClusterId: Output<String>? = null, linuxOsConfig: Output<KubernetesClusterNodePoolLinuxOsConfigArgs>? = null, maxCount: Output<Int>? = null, maxPods: Output<Int>? = null, minCount: Output<Int>? = null, mode: Output<String>? = null, name: Output<String>? = null, nodeCount: Output<Int>? = null, nodeLabels: Output<Map<String, String>>? = null, nodeNetworkProfile: Output<KubernetesClusterNodePoolNodeNetworkProfileArgs>? = null, nodePublicIpEnabled: Output<Boolean>? = null, nodePublicIpPrefixId: Output<String>? = null, nodeTaints: Output<List<String>>? = null, orchestratorVersion: Output<String>? = null, osDiskSizeGb: Output<Int>? = null, osDiskType: Output<String>? = null, osSku: Output<String>? = null, osType: Output<String>? = null, podSubnetId: Output<String>? = null, priority: Output<String>? = null, proximityPlacementGroupId: Output<String>? = null, scaleDownMode: Output<String>? = null, snapshotId: Output<String>? = null, spotMaxPrice: Output<Double>? = null, tags: Output<Map<String, String>>? = null, temporaryNameForRotation: Output<String>? = null, ultraSsdEnabled: Output<Boolean>? = null, upgradeSettings: Output<KubernetesClusterNodePoolUpgradeSettingsArgs>? = null, vmSize: Output<String>? = null, vnetSubnetId: Output<String>? = null, windowsProfile: Output<KubernetesClusterNodePoolWindowsProfileArgs>? = null, workloadRuntime: Output<String>? = null, zones: Output<List<String>>? = null)

Properties

Link copied to clipboard
val autoScalingEnabled: Output<Boolean>? = null

Whether to enable auto-scaler.

Link copied to clipboard
val capacityReservationGroupId: Output<String>? = null

Specifies the ID of the Capacity Reservation Group where this Node Pool should exist. Changing this forces a new resource to be created.

Link copied to clipboard
val evictionPolicy: Output<String>? = null

The Eviction Policy which should be used for Virtual Machines within the Virtual Machine Scale Set powering this Node Pool. Possible values are Deallocate and Delete. Changing this forces a new resource to be created.

Link copied to clipboard
val fipsEnabled: Output<Boolean>? = null

Should the nodes in this Node Pool have Federal Information Processing Standard enabled? Changing this property requires specifying temporary_name_for_rotation.

Link copied to clipboard
val gpuInstance: Output<String>? = null

Specifies the GPU MIG instance profile for supported GPU VM SKU. The allowed values are MIG1g, MIG2g, MIG3g, MIG4g and MIG7g. Changing this forces a new resource to be created.

Link copied to clipboard
val hostEncryptionEnabled: Output<Boolean>? = null

Should the nodes in this Node Pool have host encryption enabled? Changing this property requires specifying temporary_name_for_rotation.

Link copied to clipboard
val hostGroupId: Output<String>? = null

The fully qualified resource ID of the Dedicated Host Group to provision virtual machines from. Changing this forces a new resource to be created.

Link copied to clipboard

A kubelet_config block as defined below. Changing this requires specifying temporary_name_for_rotation.

Link copied to clipboard
val kubeletDiskType: Output<String>? = null

The type of disk used by kubelet. Possible values are OS and Temporary. Changing this property requires specifying temporary_name_for_rotation.

Link copied to clipboard
val kubernetesClusterId: Output<String>? = null

The ID of the Kubernetes Cluster where this Node Pool should exist. Changing this forces a new resource to be created.

Link copied to clipboard

A linux_os_config block as defined below. Changing this requires specifying temporary_name_for_rotation.

Link copied to clipboard
val maxCount: Output<Int>? = null
Link copied to clipboard
val maxPods: Output<Int>? = null

The maximum number of pods that can run on each agent. Changing this property requires specifying temporary_name_for_rotation.

Link copied to clipboard
val minCount: Output<Int>? = null
Link copied to clipboard
val mode: Output<String>? = null

Should this Node Pool be used for System or User resources? Possible values are System and User. Defaults to User.

Link copied to clipboard
val name: Output<String>? = null

The name of the Node Pool which should be created within the Kubernetes Cluster. Changing this forces a new resource to be created.

Link copied to clipboard
val nodeCount: Output<Int>? = null
Link copied to clipboard
val nodeLabels: Output<Map<String, String>>? = null

A map of Kubernetes labels which should be applied to nodes in this Node Pool.

Link copied to clipboard

A node_network_profile block as documented below.

Link copied to clipboard
val nodePublicIpEnabled: Output<Boolean>? = null

Should each node have a Public IP Address? Changing this property requires specifying temporary_name_for_rotation.

Link copied to clipboard
val nodePublicIpPrefixId: Output<String>? = null

Resource ID for the Public IP Addresses Prefix for the nodes in this Node Pool. node_public_ip_enabled should be true. Changing this forces a new resource to be created.

Link copied to clipboard
val nodeTaints: Output<List<String>>? = null

A list of Kubernetes taints which should be applied to nodes in the agent pool (e.g key=value:NoSchedule).

Link copied to clipboard
val orchestratorVersion: Output<String>? = null

Version of Kubernetes used for the Agents. If not specified, the latest recommended version will be used at provisioning time (but won't auto-upgrade). AKS does not require an exact patch version to be specified, minor version aliases such as 1.22 are also supported. - The minor version's latest GA patch is automatically chosen in that case. More details can be found in the documentation.

Link copied to clipboard
val osDiskSizeGb: Output<Int>? = null

The Agent Operating System disk size in GB. Changing this property requires specifying temporary_name_for_rotation.

Link copied to clipboard
val osDiskType: Output<String>? = null

The type of disk which should be used for the Operating System. Possible values are Ephemeral and Managed. Defaults to Managed. Changing this property requires specifying temporary_name_for_rotation.

Link copied to clipboard
val osSku: Output<String>? = null

Specifies the OS SKU used by the agent pool. Possible values are AzureLinux, Ubuntu, Windows2019 and Windows2022. If not specified, the default is Ubuntu if OSType=Linux or Windows2019 if OSType=Windows. And the default Windows OSSKU will be changed to Windows2022 after Windows2019 is deprecated. Changing this from AzureLinux or Ubuntu to AzureLinux or Ubuntu will not replace the resource, otherwise it forces a new resource to be created.

Link copied to clipboard
val osType: Output<String>? = null

The Operating System which should be used for this Node Pool. Changing this forces a new resource to be created. Possible values are Linux and Windows. Defaults to Linux.

Link copied to clipboard
val podSubnetId: Output<String>? = null

The ID of the Subnet where the pods in the Node Pool should exist. Changing this property requires specifying temporary_name_for_rotation.

Link copied to clipboard
val priority: Output<String>? = null

The Priority for Virtual Machines within the Virtual Machine Scale Set that powers this Node Pool. Possible values are Regular and Spot. Defaults to Regular. Changing this forces a new resource to be created.

Link copied to clipboard
val proximityPlacementGroupId: Output<String>? = null

The ID of the Proximity Placement Group where the Virtual Machine Scale Set that powers this Node Pool will be placed. Changing this forces a new resource to be created.

Link copied to clipboard
val scaleDownMode: Output<String>? = null

Specifies how the node pool should deal with scaled-down nodes. Allowed values are Delete and Deallocate. Defaults to Delete.

Link copied to clipboard
val snapshotId: Output<String>? = null

The ID of the Snapshot which should be used to create this Node Pool. Changing this property requires specifying temporary_name_for_rotation.

Link copied to clipboard
val spotMaxPrice: Output<Double>? = null

The maximum price you're willing to pay in USD per Virtual Machine. Valid values are -1 (the current on-demand price for a Virtual Machine) or a positive value with up to five decimal places. Changing this forces a new resource to be created.

Link copied to clipboard
val tags: Output<Map<String, String>>? = null

A mapping of tags to assign to the resource.

Link copied to clipboard
val temporaryNameForRotation: Output<String>? = null

Specifies the name of the temporary node pool used to cycle the node pool when one of the relevant properties are updated.

Link copied to clipboard
val ultraSsdEnabled: Output<Boolean>? = null

Used to specify whether the UltraSSD is enabled in the Node Pool. Defaults to false. See the documentation for more information. Changing this property requires specifying temporary_name_for_rotation.

Link copied to clipboard

A upgrade_settings block as documented below.

Link copied to clipboard
val vmSize: Output<String>? = null

The SKU which should be used for the Virtual Machines used in this Node Pool. Changing this property requires specifying temporary_name_for_rotation.

Link copied to clipboard
val vnetSubnetId: Output<String>? = null

The ID of the Subnet where this Node Pool should exist. Changing this property requires specifying temporary_name_for_rotation.

Link copied to clipboard

A windows_profile block as documented below. Changing this forces a new resource to be created.

Link copied to clipboard
val workloadRuntime: Output<String>? = null

Used to specify the workload runtime. Allowed values are OCIContainer and WasmWasi.

Link copied to clipboard
val zones: Output<List<String>>? = null

Specifies a list of Availability Zones in which this Kubernetes Cluster Node Pool should be located. Changing this property requires specifying temporary_name_for_rotation.

Functions

Link copied to clipboard
open override fun toJava(): KubernetesClusterNodePoolArgs