
com.pulumi.azure.containerservice.kotlin.KubernetesClusterNodePool.kt Maven / Gradle / Ivy
@file:Suppress("NAME_SHADOWING", "DEPRECATION")
package com.pulumi.azure.containerservice.kotlin
import com.pulumi.azure.containerservice.kotlin.outputs.KubernetesClusterNodePoolKubeletConfig
import com.pulumi.azure.containerservice.kotlin.outputs.KubernetesClusterNodePoolLinuxOsConfig
import com.pulumi.azure.containerservice.kotlin.outputs.KubernetesClusterNodePoolNodeNetworkProfile
import com.pulumi.azure.containerservice.kotlin.outputs.KubernetesClusterNodePoolUpgradeSettings
import com.pulumi.azure.containerservice.kotlin.outputs.KubernetesClusterNodePoolWindowsProfile
import com.pulumi.core.Output
import com.pulumi.kotlin.KotlinCustomResource
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.ResourceMapper
import com.pulumi.kotlin.options.CustomResourceOptions
import com.pulumi.kotlin.options.CustomResourceOptionsBuilder
import com.pulumi.resources.Resource
import kotlin.Boolean
import kotlin.Double
import kotlin.Int
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.collections.Map
import com.pulumi.azure.containerservice.kotlin.outputs.KubernetesClusterNodePoolKubeletConfig.Companion.toKotlin as kubernetesClusterNodePoolKubeletConfigToKotlin
import com.pulumi.azure.containerservice.kotlin.outputs.KubernetesClusterNodePoolLinuxOsConfig.Companion.toKotlin as kubernetesClusterNodePoolLinuxOsConfigToKotlin
import com.pulumi.azure.containerservice.kotlin.outputs.KubernetesClusterNodePoolNodeNetworkProfile.Companion.toKotlin as kubernetesClusterNodePoolNodeNetworkProfileToKotlin
import com.pulumi.azure.containerservice.kotlin.outputs.KubernetesClusterNodePoolUpgradeSettings.Companion.toKotlin as kubernetesClusterNodePoolUpgradeSettingsToKotlin
import com.pulumi.azure.containerservice.kotlin.outputs.KubernetesClusterNodePoolWindowsProfile.Companion.toKotlin as kubernetesClusterNodePoolWindowsProfileToKotlin
/**
* Builder for [KubernetesClusterNodePool].
*/
@PulumiTagMarker
public class KubernetesClusterNodePoolResourceBuilder internal constructor() {
public var name: String? = null
public var args: KubernetesClusterNodePoolArgs = KubernetesClusterNodePoolArgs()
public var opts: CustomResourceOptions = CustomResourceOptions()
/**
* @param name The _unique_ name of the resulting resource.
*/
public fun name(`value`: String) {
this.name = value
}
/**
* @param block The arguments to use to populate this resource's properties.
*/
public suspend fun args(block: suspend KubernetesClusterNodePoolArgsBuilder.() -> Unit) {
val builder = KubernetesClusterNodePoolArgsBuilder()
block(builder)
this.args = builder.build()
}
/**
* @param block A bag of options that control this resource's behavior.
*/
public suspend fun opts(block: suspend CustomResourceOptionsBuilder.() -> Unit) {
this.opts = com.pulumi.kotlin.options.CustomResourceOptions.opts(block)
}
internal fun build(): KubernetesClusterNodePool {
val builtJavaResource =
com.pulumi.azure.containerservice.KubernetesClusterNodePool(
this.name,
this.args.toJava(),
this.opts.toJava(),
)
return KubernetesClusterNodePool(builtJavaResource)
}
}
/**
* 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.
*
* ```typescript
* 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",
* },
* });
* ```
* ```python
* 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",
* })
* ```
* ```csharp
* 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" },
* },
* });
* });
* ```
* ```go
* 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
* })
* }
* ```
* ```java
* 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());
* }
* }
* ```
* ```yaml
* 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.
* ```sh
* $ pulumi import azure:containerservice/kubernetesClusterNodePool:KubernetesClusterNodePool pool1 /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.ContainerService/managedClusters/cluster1/agentPools/pool1
* ```
*/
public class KubernetesClusterNodePool internal constructor(
override val javaResource: com.pulumi.azure.containerservice.KubernetesClusterNodePool,
) : KotlinCustomResource(javaResource, KubernetesClusterNodePoolMapper) {
/**
* Specifies the ID of the Capacity Reservation Group where this Node Pool should exist. Changing this forces a new resource to be created.
*/
public val capacityReservationGroupId: Output?
get() = javaResource.capacityReservationGroupId().applyValue({ args0 ->
args0.map({ args0 ->
args0
}).orElse(null)
})
/**
* Specifies whether to trust a Custom CA.
* > **Note:** This requires that the Preview Feature `Microsoft.ContainerService/CustomCATrustPreview` is enabled and the Resource Provider is re-registered, see [the documentation](https://learn.microsoft.com/en-us/azure/aks/custom-certificate-authority) for more information.
*/
public val customCaTrustEnabled: Output?
get() = javaResource.customCaTrustEnabled().applyValue({ args0 ->
args0.map({ args0 ->
args0
}).orElse(null)
})
/**
* Whether to enable [auto-scaler](https://docs.microsoft.com/azure/aks/cluster-autoscaler).
*/
public val enableAutoScaling: Output?
get() = javaResource.enableAutoScaling().applyValue({ args0 ->
args0.map({ args0 ->
args0
}).orElse(null)
})
/**
* Should the nodes in this Node Pool have host encryption enabled? Changing this forces a new resource to be created.
* > **NOTE:** Additional fields must be configured depending on the value of this field - see below.
*/
public val enableHostEncryption: Output?
get() = javaResource.enableHostEncryption().applyValue({ args0 ->
args0.map({ args0 ->
args0
}).orElse(null)
})
/**
* Should each node have a Public IP Address? Changing this forces a new resource to be created.
*/
public val enableNodePublicIp: Output?
get() = javaResource.enableNodePublicIp().applyValue({ args0 ->
args0.map({ args0 ->
args0
}).orElse(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.
* > **Note:** An Eviction Policy can only be configured when `priority` is set to `Spot` and will default to `Delete` unless otherwise specified.
*/
public val evictionPolicy: Output?
get() = javaResource.evictionPolicy().applyValue({ args0 ->
args0.map({ args0 ->
args0
}).orElse(null)
})
/**
* Should the nodes in this Node Pool have Federal Information Processing Standard enabled? Changing this forces a new resource to be created.
* > **Note:** FIPS support is in Public Preview - more information and details on how to opt into the Preview can be found in [this article](https://docs.microsoft.com/azure/aks/use-multiple-node-pools#add-a-fips-enabled-node-pool-preview).
*/
public val fipsEnabled: Output?
get() = javaResource.fipsEnabled().applyValue({ args0 ->
args0.map({ args0 ->
args0
}).orElse(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.
*/
public val gpuInstance: Output?
get() = javaResource.gpuInstance().applyValue({ args0 ->
args0.map({ args0 ->
args0
}).orElse(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.
*/
public val hostGroupId: Output?
get() = javaResource.hostGroupId().applyValue({ args0 ->
args0.map({ args0 ->
args0
}).orElse(null)
})
/**
* A `kubelet_config` block as defined below. Changing this forces a new resource to be created.
*/
public val kubeletConfig: Output?
get() = javaResource.kubeletConfig().applyValue({ args0 ->
args0.map({ args0 ->
args0.let({ args0 -> kubernetesClusterNodePoolKubeletConfigToKotlin(args0) })
}).orElse(null)
})
/**
* The type of disk used by kubelet. Possible values are `OS` and `Temporary`.
*/
public val kubeletDiskType: Output
get() = javaResource.kubeletDiskType().applyValue({ args0 -> args0 })
/**
* The ID of the Kubernetes Cluster where this Node Pool should exist. Changing this forces a new resource to be created.
* > **NOTE:** The type of Default Node Pool for the Kubernetes Cluster must be `VirtualMachineScaleSets` to attach multiple node pools.
*/
public val kubernetesClusterId: Output
get() = javaResource.kubernetesClusterId().applyValue({ args0 -> args0 })
/**
* A `linux_os_config` block as defined below. Changing this forces a new resource to be created.
*/
public val linuxOsConfig: Output?
get() = javaResource.linuxOsConfig().applyValue({ args0 ->
args0.map({ args0 ->
args0.let({ args0 -> kubernetesClusterNodePoolLinuxOsConfigToKotlin(args0) })
}).orElse(null)
})
public val maxCount: Output?
get() = javaResource.maxCount().applyValue({ args0 -> args0.map({ args0 -> args0 }).orElse(null) })
/**
* The maximum number of pods that can run on each agent. Changing this forces a new resource to be created.
*/
public val maxPods: Output
get() = javaResource.maxPods().applyValue({ args0 -> args0 })
/**
* 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.
*/
public val messageOfTheDay: Output?
get() = javaResource.messageOfTheDay().applyValue({ args0 ->
args0.map({ args0 ->
args0
}).orElse(null)
})
public val minCount: Output?
get() = javaResource.minCount().applyValue({ args0 -> args0.map({ args0 -> args0 }).orElse(null) })
/**
* Should this Node Pool be used for System or User resources? Possible values are `System` and `User`. Defaults to `User`.
*/
public val mode: Output?
get() = javaResource.mode().applyValue({ args0 -> args0.map({ args0 -> args0 }).orElse(null) })
/**
* The name of the Node Pool which should be created within the Kubernetes Cluster. Changing this forces a new resource to be created.
* > **NOTE:** A Windows Node Pool cannot have a `name` longer than 6 characters.
*/
public val name: Output
get() = javaResource.name().applyValue({ args0 -> args0 })
public val nodeCount: Output
get() = javaResource.nodeCount().applyValue({ args0 -> args0 })
/**
* A map of Kubernetes labels which should be applied to nodes in this Node Pool.
*/
public val nodeLabels: Output
© 2015 - 2025 Weber Informatics LLC | Privacy Policy