KubernetesClusterNodePoolArgs

data class KubernetesClusterNodePoolArgs(val capacityReservationGroupId: Output<String>? = null, val customCaTrustEnabled: Output<Boolean>? = null, val enableAutoScaling: Output<Boolean>? = null, val enableHostEncryption: Output<Boolean>? = null, val enableNodePublicIp: Output<Boolean>? = null, val evictionPolicy: Output<String>? = null, val fipsEnabled: Output<Boolean>? = null, val gpuInstance: Output<String>? = 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 messageOfTheDay: Output<String>? = 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 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 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.

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=azure.containerservice.KubernetesClusterDefaultNodePoolArgs(
name="default",
node_count=1,
vm_size="Standard_D2_v2",
),
service_principal=azure.containerservice.KubernetesClusterServicePrincipalArgs(
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/v5/go/azure/containerservice"
"github.com/pulumi/pulumi-azure/sdk/v5/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(capacityReservationGroupId: Output<String>? = null, customCaTrustEnabled: Output<Boolean>? = null, enableAutoScaling: Output<Boolean>? = null, enableHostEncryption: Output<Boolean>? = null, enableNodePublicIp: Output<Boolean>? = null, evictionPolicy: Output<String>? = null, fipsEnabled: Output<Boolean>? = null, gpuInstance: Output<String>? = 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, messageOfTheDay: Output<String>? = 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, 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, 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 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 customCaTrustEnabled: Output<Boolean>? = null

Specifies whether to trust a Custom CA.

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

Whether to enable auto-scaler.

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

Should the nodes in this Node Pool have host encryption enabled? Changing this forces a new resource to be created.

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

Should each node have a Public IP Address? 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 forces a new resource to be created.

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 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 forces a new resource to be created.

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

The type of disk used by kubelet. Possible values are OS and Temporary.

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 forces a new resource to be created.

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 forces a new resource to be created.

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

A base64-encoded string which will be written to /etc/motd after decoding. This allows customization of the message of the day for Linux nodes. It cannot be specified for Windows nodes and must be a static string (i.e. will be printed raw and not executed as a script). Changing this forces a new resource to be created.

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 nodePublicIpPrefixId: Output<String>? = null

Resource ID for the Public IP Addresses Prefix for the nodes in this Node Pool. enable_node_public_ip 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 forces a new resource to be created.

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 forces a new resource to be created.

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 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 forces a new resource to be created.

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 forces a new resource to be created.

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 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 forces a new resource to be created.

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 forces a new resource to be created.

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

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

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, WasmWasi and KataMshvVmIsolation.

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 forces a new Kubernetes Cluster Node Pool to be created.

Functions

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