All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.azure.containerservice.inputs.KubernetesClusterDefaultNodePoolArgs Maven / Gradle / Ivy

Go to download

A Pulumi package for creating and managing Microsoft Azure cloud resources, based on the Terraform azurerm provider. We recommend using the [Azure Native provider](https://github.com/pulumi/pulumi-azure-native) to provision Azure infrastructure. Azure Native provides complete coverage of Azure resources and same-day access to new resources and resource updates.

There is a newer version: 6.10.0-alpha.1731737215
Show newest version
// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.azure.containerservice.inputs;

import com.pulumi.azure.containerservice.inputs.KubernetesClusterDefaultNodePoolKubeletConfigArgs;
import com.pulumi.azure.containerservice.inputs.KubernetesClusterDefaultNodePoolLinuxOsConfigArgs;
import com.pulumi.azure.containerservice.inputs.KubernetesClusterDefaultNodePoolNodeNetworkProfileArgs;
import com.pulumi.azure.containerservice.inputs.KubernetesClusterDefaultNodePoolUpgradeSettingsArgs;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.exceptions.MissingRequiredPropertyException;
import java.lang.Boolean;
import java.lang.Integer;
import java.lang.String;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


public final class KubernetesClusterDefaultNodePoolArgs extends com.pulumi.resources.ResourceArgs {

    public static final KubernetesClusterDefaultNodePoolArgs Empty = new KubernetesClusterDefaultNodePoolArgs();

    /**
     * Should [the Kubernetes Auto Scaler](https://docs.microsoft.com/azure/aks/cluster-autoscaler) be enabled for this Node Pool?
     * 
     * > **Note:** This requires that the `type` is set to `VirtualMachineScaleSets`.
     * 
     * > **Note:** If you're using AutoScaling, you may wish to use [`ignoreChanges` functionality](https://www.pulumi.com/docs/intro/concepts/programming-model/#ignorechanges) to ignore changes to the `node_count` field.
     * 
     */
    @Import(name="autoScalingEnabled")
    private @Nullable Output autoScalingEnabled;

    /**
     * @return Should [the Kubernetes Auto Scaler](https://docs.microsoft.com/azure/aks/cluster-autoscaler) be enabled for this Node Pool?
     * 
     * > **Note:** This requires that the `type` is set to `VirtualMachineScaleSets`.
     * 
     * > **Note:** If you're using AutoScaling, you may wish to use [`ignoreChanges` functionality](https://www.pulumi.com/docs/intro/concepts/programming-model/#ignorechanges) to ignore changes to the `node_count` field.
     * 
     */
    public Optional> autoScalingEnabled() {
        return Optional.ofNullable(this.autoScalingEnabled);
    }

    /**
     * Specifies the ID of the Capacity Reservation Group within which this AKS Cluster should be created. Changing this forces a new resource to be created.
     * 
     */
    @Import(name="capacityReservationGroupId")
    private @Nullable Output capacityReservationGroupId;

    /**
     * @return Specifies the ID of the Capacity Reservation Group within which this AKS Cluster should be created. Changing this forces a new resource to be created.
     * 
     */
    public Optional> capacityReservationGroupId() {
        return Optional.ofNullable(this.capacityReservationGroupId);
    }

    /**
     * Should the nodes in this Node Pool have Federal Information Processing Standard enabled? `temporary_name_for_rotation` must be specified when changing this block. Changing this forces a new resource to be created.
     * 
     */
    @Import(name="fipsEnabled")
    private @Nullable Output fipsEnabled;

    /**
     * @return Should the nodes in this Node Pool have Federal Information Processing Standard enabled? `temporary_name_for_rotation` must be specified when changing this block. Changing this forces a new resource to be created.
     * 
     */
    public Optional> fipsEnabled() {
        return Optional.ofNullable(this.fipsEnabled);
    }

    /**
     * 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.
     * 
     */
    @Import(name="gpuInstance")
    private @Nullable Output gpuInstance;

    /**
     * @return 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 Optional> gpuInstance() {
        return Optional.ofNullable(this.gpuInstance);
    }

    /**
     * Should the nodes in the Default Node Pool have host encryption enabled? `temporary_name_for_rotation` must be specified when changing this property.
     * 
     * > **Note:** This requires that the  Feature `Microsoft.ContainerService/EnableEncryptionAtHost` is enabled and the Resource Provider is registered.
     * 
     */
    @Import(name="hostEncryptionEnabled")
    private @Nullable Output hostEncryptionEnabled;

    /**
     * @return Should the nodes in the Default Node Pool have host encryption enabled? `temporary_name_for_rotation` must be specified when changing this property.
     * 
     * > **Note:** This requires that the  Feature `Microsoft.ContainerService/EnableEncryptionAtHost` is enabled and the Resource Provider is registered.
     * 
     */
    public Optional> hostEncryptionEnabled() {
        return Optional.ofNullable(this.hostEncryptionEnabled);
    }

    /**
     * Specifies the ID of the Host Group within which this AKS Cluster should be created. Changing this forces a new resource to be created.
     * 
     */
    @Import(name="hostGroupId")
    private @Nullable Output hostGroupId;

    /**
     * @return Specifies the ID of the Host Group within which this AKS Cluster should be created. Changing this forces a new resource to be created.
     * 
     */
    public Optional> hostGroupId() {
        return Optional.ofNullable(this.hostGroupId);
    }

    /**
     * A `kubelet_config` block as defined below. `temporary_name_for_rotation` must be specified when changing this block.
     * 
     */
    @Import(name="kubeletConfig")
    private @Nullable Output kubeletConfig;

    /**
     * @return A `kubelet_config` block as defined below. `temporary_name_for_rotation` must be specified when changing this block.
     * 
     */
    public Optional> kubeletConfig() {
        return Optional.ofNullable(this.kubeletConfig);
    }

    /**
     * The type of disk used by kubelet. Possible values are `OS` and `Temporary`.
     * 
     */
    @Import(name="kubeletDiskType")
    private @Nullable Output kubeletDiskType;

    /**
     * @return The type of disk used by kubelet. Possible values are `OS` and `Temporary`.
     * 
     */
    public Optional> kubeletDiskType() {
        return Optional.ofNullable(this.kubeletDiskType);
    }

    /**
     * A `linux_os_config` block as defined below. `temporary_name_for_rotation` must be specified when changing this block.
     * 
     */
    @Import(name="linuxOsConfig")
    private @Nullable Output linuxOsConfig;

    /**
     * @return A `linux_os_config` block as defined below. `temporary_name_for_rotation` must be specified when changing this block.
     * 
     */
    public Optional> linuxOsConfig() {
        return Optional.ofNullable(this.linuxOsConfig);
    }

    @Import(name="maxCount")
    private @Nullable Output maxCount;

    public Optional> maxCount() {
        return Optional.ofNullable(this.maxCount);
    }

    /**
     * The maximum number of pods that can run on each agent. `temporary_name_for_rotation` must be specified when changing this property.
     * 
     */
    @Import(name="maxPods")
    private @Nullable Output maxPods;

    /**
     * @return The maximum number of pods that can run on each agent. `temporary_name_for_rotation` must be specified when changing this property.
     * 
     */
    public Optional> maxPods() {
        return Optional.ofNullable(this.maxPods);
    }

    @Import(name="minCount")
    private @Nullable Output minCount;

    public Optional> minCount() {
        return Optional.ofNullable(this.minCount);
    }

    /**
     * The name which should be used for the default Kubernetes Node Pool.
     * 
     */
    @Import(name="name", required=true)
    private Output name;

    /**
     * @return The name which should be used for the default Kubernetes Node Pool.
     * 
     */
    public Output name() {
        return this.name;
    }

    @Import(name="nodeCount")
    private @Nullable Output nodeCount;

    public Optional> nodeCount() {
        return Optional.ofNullable(this.nodeCount);
    }

    /**
     * A map of Kubernetes labels which should be applied to nodes in the Default Node Pool.
     * 
     */
    @Import(name="nodeLabels")
    private @Nullable Output> nodeLabels;

    /**
     * @return A map of Kubernetes labels which should be applied to nodes in the Default Node Pool.
     * 
     */
    public Optional>> nodeLabels() {
        return Optional.ofNullable(this.nodeLabels);
    }

    /**
     * A `node_network_profile` block as documented below.
     * 
     */
    @Import(name="nodeNetworkProfile")
    private @Nullable Output nodeNetworkProfile;

    /**
     * @return A `node_network_profile` block as documented below.
     * 
     */
    public Optional> nodeNetworkProfile() {
        return Optional.ofNullable(this.nodeNetworkProfile);
    }

    /**
     * Should nodes in this Node Pool have a Public IP Address? `temporary_name_for_rotation` must be specified when changing this property.
     * 
     */
    @Import(name="nodePublicIpEnabled")
    private @Nullable Output nodePublicIpEnabled;

    /**
     * @return Should nodes in this Node Pool have a Public IP Address? `temporary_name_for_rotation` must be specified when changing this property.
     * 
     */
    public Optional> nodePublicIpEnabled() {
        return Optional.ofNullable(this.nodePublicIpEnabled);
    }

    /**
     * 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.
     * 
     */
    @Import(name="nodePublicIpPrefixId")
    private @Nullable Output nodePublicIpPrefixId;

    /**
     * @return 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.
     * 
     */
    public Optional> nodePublicIpPrefixId() {
        return Optional.ofNullable(this.nodePublicIpPrefixId);
    }

    /**
     * Enabling this option will taint default node pool with `CriticalAddonsOnly=true:NoSchedule` taint. `temporary_name_for_rotation` must be specified when changing this property.
     * 
     */
    @Import(name="onlyCriticalAddonsEnabled")
    private @Nullable Output onlyCriticalAddonsEnabled;

    /**
     * @return Enabling this option will taint default node pool with `CriticalAddonsOnly=true:NoSchedule` taint. `temporary_name_for_rotation` must be specified when changing this property.
     * 
     */
    public Optional> onlyCriticalAddonsEnabled() {
        return Optional.ofNullable(this.onlyCriticalAddonsEnabled);
    }

    /**
     * Version of Kubernetes used for the Agents. If not specified, the default node pool will be created with the version specified by `kubernetes_version`. If both are unspecified, 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](https://docs.microsoft.com/en-us/azure/aks/supported-kubernetes-versions?tabs=azure-cli#alias-minor-version).
     * 
     * > **Note:** This version must be supported by the Kubernetes Cluster - as such the version of Kubernetes used on the Cluster/Control Plane may need to be upgraded first.
     * 
     */
    @Import(name="orchestratorVersion")
    private @Nullable Output orchestratorVersion;

    /**
     * @return Version of Kubernetes used for the Agents. If not specified, the default node pool will be created with the version specified by `kubernetes_version`. If both are unspecified, 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](https://docs.microsoft.com/en-us/azure/aks/supported-kubernetes-versions?tabs=azure-cli#alias-minor-version).
     * 
     * > **Note:** This version must be supported by the Kubernetes Cluster - as such the version of Kubernetes used on the Cluster/Control Plane may need to be upgraded first.
     * 
     */
    public Optional> orchestratorVersion() {
        return Optional.ofNullable(this.orchestratorVersion);
    }

    /**
     * The size of the OS Disk which should be used for each agent in the Node Pool. `temporary_name_for_rotation` must be specified when attempting a change.
     * 
     */
    @Import(name="osDiskSizeGb")
    private @Nullable Output osDiskSizeGb;

    /**
     * @return The size of the OS Disk which should be used for each agent in the Node Pool. `temporary_name_for_rotation` must be specified when attempting a change.
     * 
     */
    public Optional> osDiskSizeGb() {
        return Optional.ofNullable(this.osDiskSizeGb);
    }

    /**
     * The type of disk which should be used for the Operating System. Possible values are `Ephemeral` and `Managed`. Defaults to `Managed`. `temporary_name_for_rotation` must be specified when attempting a change.
     * 
     */
    @Import(name="osDiskType")
    private @Nullable Output osDiskType;

    /**
     * @return The type of disk which should be used for the Operating System. Possible values are `Ephemeral` and `Managed`. Defaults to `Managed`. `temporary_name_for_rotation` must be specified when attempting a change.
     * 
     */
    public Optional> osDiskType() {
        return Optional.ofNullable(this.osDiskType);
    }

    /**
     * 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 `temporary_name_for_rotation` must be specified when attempting a change.
     * 
     */
    @Import(name="osSku")
    private @Nullable Output osSku;

    /**
     * @return 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 `temporary_name_for_rotation` must be specified when attempting a change.
     * 
     */
    public Optional> osSku() {
        return Optional.ofNullable(this.osSku);
    }

    /**
     * The ID of the Subnet where the pods in the default Node Pool should exist.
     * 
     */
    @Import(name="podSubnetId")
    private @Nullable Output podSubnetId;

    /**
     * @return The ID of the Subnet where the pods in the default Node Pool should exist.
     * 
     */
    public Optional> podSubnetId() {
        return Optional.ofNullable(this.podSubnetId);
    }

    /**
     * The ID of the Proximity Placement Group. Changing this forces a new resource to be created.
     * 
     */
    @Import(name="proximityPlacementGroupId")
    private @Nullable Output proximityPlacementGroupId;

    /**
     * @return The ID of the Proximity Placement Group. Changing this forces a new resource to be created.
     * 
     */
    public Optional> proximityPlacementGroupId() {
        return Optional.ofNullable(this.proximityPlacementGroupId);
    }

    /**
     * Specifies the autoscaling behaviour of the Kubernetes Cluster. Allowed values are `Delete` and `Deallocate`. Defaults to `Delete`.
     * 
     */
    @Import(name="scaleDownMode")
    private @Nullable Output scaleDownMode;

    /**
     * @return Specifies the autoscaling behaviour of the Kubernetes Cluster. Allowed values are `Delete` and `Deallocate`. Defaults to `Delete`.
     * 
     */
    public Optional> scaleDownMode() {
        return Optional.ofNullable(this.scaleDownMode);
    }

    /**
     * The ID of the Snapshot which should be used to create this default Node Pool. `temporary_name_for_rotation` must be specified when changing this property.
     * 
     */
    @Import(name="snapshotId")
    private @Nullable Output snapshotId;

    /**
     * @return The ID of the Snapshot which should be used to create this default Node Pool. `temporary_name_for_rotation` must be specified when changing this property.
     * 
     */
    public Optional> snapshotId() {
        return Optional.ofNullable(this.snapshotId);
    }

    /**
     * A mapping of tags to assign to the Node Pool.
     * 
     * > At this time there's a bug in the AKS API where Tags for a Node Pool are not stored in the correct case - you may wish to use `ignore_changes` functionality to ignore changes to the casing until this is fixed in the AKS API.
     * 
     */
    @Import(name="tags")
    private @Nullable Output> tags;

    /**
     * @return A mapping of tags to assign to the Node Pool.
     * 
     * > At this time there's a bug in the AKS API where Tags for a Node Pool are not stored in the correct case - you may wish to use `ignore_changes` functionality to ignore changes to the casing until this is fixed in the AKS API.
     * 
     */
    public Optional>> tags() {
        return Optional.ofNullable(this.tags);
    }

    /**
     * Specifies the name of the temporary node pool used to cycle the default node pool for VM resizing.
     * 
     */
    @Import(name="temporaryNameForRotation")
    private @Nullable Output temporaryNameForRotation;

    /**
     * @return Specifies the name of the temporary node pool used to cycle the default node pool for VM resizing.
     * 
     */
    public Optional> temporaryNameForRotation() {
        return Optional.ofNullable(this.temporaryNameForRotation);
    }

    /**
     * The type of Node Pool which should be created. Possible values are `VirtualMachineScaleSets`. Defaults to `VirtualMachineScaleSets`. Changing this forces a new resource to be created.
     * 
     * > **Note:** When creating a cluster that supports multiple node pools, the cluster must use `VirtualMachineScaleSets`. For more information on the limitations of clusters using multiple node pools see [the documentation](https://learn.microsoft.com/en-us/azure/aks/use-multiple-node-pools#limitations).
     * 
     */
    @Import(name="type")
    private @Nullable Output type;

    /**
     * @return The type of Node Pool which should be created. Possible values are `VirtualMachineScaleSets`. Defaults to `VirtualMachineScaleSets`. Changing this forces a new resource to be created.
     * 
     * > **Note:** When creating a cluster that supports multiple node pools, the cluster must use `VirtualMachineScaleSets`. For more information on the limitations of clusters using multiple node pools see [the documentation](https://learn.microsoft.com/en-us/azure/aks/use-multiple-node-pools#limitations).
     * 
     */
    public Optional> type() {
        return Optional.ofNullable(this.type);
    }

    /**
     * Used to specify whether the UltraSSD is enabled in the Default Node Pool. Defaults to `false`. See [the documentation](https://docs.microsoft.com/azure/aks/use-ultra-disks) for more information. `temporary_name_for_rotation` must be specified when attempting a change.
     * 
     */
    @Import(name="ultraSsdEnabled")
    private @Nullable Output ultraSsdEnabled;

    /**
     * @return Used to specify whether the UltraSSD is enabled in the Default Node Pool. Defaults to `false`. See [the documentation](https://docs.microsoft.com/azure/aks/use-ultra-disks) for more information. `temporary_name_for_rotation` must be specified when attempting a change.
     * 
     */
    public Optional> ultraSsdEnabled() {
        return Optional.ofNullable(this.ultraSsdEnabled);
    }

    /**
     * A `upgrade_settings` block as documented below.
     * 
     */
    @Import(name="upgradeSettings")
    private @Nullable Output upgradeSettings;

    /**
     * @return A `upgrade_settings` block as documented below.
     * 
     */
    public Optional> upgradeSettings() {
        return Optional.ofNullable(this.upgradeSettings);
    }

    /**
     * The size of the Virtual Machine, such as `Standard_DS2_v2`. `temporary_name_for_rotation` must be specified when attempting a resize.
     * 
     */
    @Import(name="vmSize", required=true)
    private Output vmSize;

    /**
     * @return The size of the Virtual Machine, such as `Standard_DS2_v2`. `temporary_name_for_rotation` must be specified when attempting a resize.
     * 
     */
    public Output vmSize() {
        return this.vmSize;
    }

    /**
     * The ID of a Subnet where the Kubernetes Node Pool should exist.
     * 
     * > **Note:** A Route Table must be configured on this Subnet.
     * 
     */
    @Import(name="vnetSubnetId")
    private @Nullable Output vnetSubnetId;

    /**
     * @return The ID of a Subnet where the Kubernetes Node Pool should exist.
     * 
     * > **Note:** A Route Table must be configured on this Subnet.
     * 
     */
    public Optional> vnetSubnetId() {
        return Optional.ofNullable(this.vnetSubnetId);
    }

    /**
     * Specifies the workload runtime used by the node pool. Possible value is `OCIContainer`.
     * 
     */
    @Import(name="workloadRuntime")
    private @Nullable Output workloadRuntime;

    /**
     * @return Specifies the workload runtime used by the node pool. Possible value is `OCIContainer`.
     * 
     */
    public Optional> workloadRuntime() {
        return Optional.ofNullable(this.workloadRuntime);
    }

    /**
     * Specifies a list of Availability Zones in which this Kubernetes Cluster should be located. `temporary_name_for_rotation` must be specified when changing this property.
     * 
     * > **Note:** This requires that the `type` is set to `VirtualMachineScaleSets` and that `load_balancer_sku` is set to `standard`.
     * 
     */
    @Import(name="zones")
    private @Nullable Output> zones;

    /**
     * @return Specifies a list of Availability Zones in which this Kubernetes Cluster should be located. `temporary_name_for_rotation` must be specified when changing this property.
     * 
     * > **Note:** This requires that the `type` is set to `VirtualMachineScaleSets` and that `load_balancer_sku` is set to `standard`.
     * 
     */
    public Optional>> zones() {
        return Optional.ofNullable(this.zones);
    }

    private KubernetesClusterDefaultNodePoolArgs() {}

    private KubernetesClusterDefaultNodePoolArgs(KubernetesClusterDefaultNodePoolArgs $) {
        this.autoScalingEnabled = $.autoScalingEnabled;
        this.capacityReservationGroupId = $.capacityReservationGroupId;
        this.fipsEnabled = $.fipsEnabled;
        this.gpuInstance = $.gpuInstance;
        this.hostEncryptionEnabled = $.hostEncryptionEnabled;
        this.hostGroupId = $.hostGroupId;
        this.kubeletConfig = $.kubeletConfig;
        this.kubeletDiskType = $.kubeletDiskType;
        this.linuxOsConfig = $.linuxOsConfig;
        this.maxCount = $.maxCount;
        this.maxPods = $.maxPods;
        this.minCount = $.minCount;
        this.name = $.name;
        this.nodeCount = $.nodeCount;
        this.nodeLabels = $.nodeLabels;
        this.nodeNetworkProfile = $.nodeNetworkProfile;
        this.nodePublicIpEnabled = $.nodePublicIpEnabled;
        this.nodePublicIpPrefixId = $.nodePublicIpPrefixId;
        this.onlyCriticalAddonsEnabled = $.onlyCriticalAddonsEnabled;
        this.orchestratorVersion = $.orchestratorVersion;
        this.osDiskSizeGb = $.osDiskSizeGb;
        this.osDiskType = $.osDiskType;
        this.osSku = $.osSku;
        this.podSubnetId = $.podSubnetId;
        this.proximityPlacementGroupId = $.proximityPlacementGroupId;
        this.scaleDownMode = $.scaleDownMode;
        this.snapshotId = $.snapshotId;
        this.tags = $.tags;
        this.temporaryNameForRotation = $.temporaryNameForRotation;
        this.type = $.type;
        this.ultraSsdEnabled = $.ultraSsdEnabled;
        this.upgradeSettings = $.upgradeSettings;
        this.vmSize = $.vmSize;
        this.vnetSubnetId = $.vnetSubnetId;
        this.workloadRuntime = $.workloadRuntime;
        this.zones = $.zones;
    }

    public static Builder builder() {
        return new Builder();
    }
    public static Builder builder(KubernetesClusterDefaultNodePoolArgs defaults) {
        return new Builder(defaults);
    }

    public static final class Builder {
        private KubernetesClusterDefaultNodePoolArgs $;

        public Builder() {
            $ = new KubernetesClusterDefaultNodePoolArgs();
        }

        public Builder(KubernetesClusterDefaultNodePoolArgs defaults) {
            $ = new KubernetesClusterDefaultNodePoolArgs(Objects.requireNonNull(defaults));
        }

        /**
         * @param autoScalingEnabled Should [the Kubernetes Auto Scaler](https://docs.microsoft.com/azure/aks/cluster-autoscaler) be enabled for this Node Pool?
         * 
         * > **Note:** This requires that the `type` is set to `VirtualMachineScaleSets`.
         * 
         * > **Note:** If you're using AutoScaling, you may wish to use [`ignoreChanges` functionality](https://www.pulumi.com/docs/intro/concepts/programming-model/#ignorechanges) to ignore changes to the `node_count` field.
         * 
         * @return builder
         * 
         */
        public Builder autoScalingEnabled(@Nullable Output autoScalingEnabled) {
            $.autoScalingEnabled = autoScalingEnabled;
            return this;
        }

        /**
         * @param autoScalingEnabled Should [the Kubernetes Auto Scaler](https://docs.microsoft.com/azure/aks/cluster-autoscaler) be enabled for this Node Pool?
         * 
         * > **Note:** This requires that the `type` is set to `VirtualMachineScaleSets`.
         * 
         * > **Note:** If you're using AutoScaling, you may wish to use [`ignoreChanges` functionality](https://www.pulumi.com/docs/intro/concepts/programming-model/#ignorechanges) to ignore changes to the `node_count` field.
         * 
         * @return builder
         * 
         */
        public Builder autoScalingEnabled(Boolean autoScalingEnabled) {
            return autoScalingEnabled(Output.of(autoScalingEnabled));
        }

        /**
         * @param capacityReservationGroupId Specifies the ID of the Capacity Reservation Group within which this AKS Cluster should be created. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder capacityReservationGroupId(@Nullable Output capacityReservationGroupId) {
            $.capacityReservationGroupId = capacityReservationGroupId;
            return this;
        }

        /**
         * @param capacityReservationGroupId Specifies the ID of the Capacity Reservation Group within which this AKS Cluster should be created. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder capacityReservationGroupId(String capacityReservationGroupId) {
            return capacityReservationGroupId(Output.of(capacityReservationGroupId));
        }

        /**
         * @param fipsEnabled Should the nodes in this Node Pool have Federal Information Processing Standard enabled? `temporary_name_for_rotation` must be specified when changing this block. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder fipsEnabled(@Nullable Output fipsEnabled) {
            $.fipsEnabled = fipsEnabled;
            return this;
        }

        /**
         * @param fipsEnabled Should the nodes in this Node Pool have Federal Information Processing Standard enabled? `temporary_name_for_rotation` must be specified when changing this block. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder fipsEnabled(Boolean fipsEnabled) {
            return fipsEnabled(Output.of(fipsEnabled));
        }

        /**
         * @param gpuInstance 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.
         * 
         * @return builder
         * 
         */
        public Builder gpuInstance(@Nullable Output gpuInstance) {
            $.gpuInstance = gpuInstance;
            return this;
        }

        /**
         * @param gpuInstance 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.
         * 
         * @return builder
         * 
         */
        public Builder gpuInstance(String gpuInstance) {
            return gpuInstance(Output.of(gpuInstance));
        }

        /**
         * @param hostEncryptionEnabled Should the nodes in the Default Node Pool have host encryption enabled? `temporary_name_for_rotation` must be specified when changing this property.
         * 
         * > **Note:** This requires that the  Feature `Microsoft.ContainerService/EnableEncryptionAtHost` is enabled and the Resource Provider is registered.
         * 
         * @return builder
         * 
         */
        public Builder hostEncryptionEnabled(@Nullable Output hostEncryptionEnabled) {
            $.hostEncryptionEnabled = hostEncryptionEnabled;
            return this;
        }

        /**
         * @param hostEncryptionEnabled Should the nodes in the Default Node Pool have host encryption enabled? `temporary_name_for_rotation` must be specified when changing this property.
         * 
         * > **Note:** This requires that the  Feature `Microsoft.ContainerService/EnableEncryptionAtHost` is enabled and the Resource Provider is registered.
         * 
         * @return builder
         * 
         */
        public Builder hostEncryptionEnabled(Boolean hostEncryptionEnabled) {
            return hostEncryptionEnabled(Output.of(hostEncryptionEnabled));
        }

        /**
         * @param hostGroupId Specifies the ID of the Host Group within which this AKS Cluster should be created. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder hostGroupId(@Nullable Output hostGroupId) {
            $.hostGroupId = hostGroupId;
            return this;
        }

        /**
         * @param hostGroupId Specifies the ID of the Host Group within which this AKS Cluster should be created. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder hostGroupId(String hostGroupId) {
            return hostGroupId(Output.of(hostGroupId));
        }

        /**
         * @param kubeletConfig A `kubelet_config` block as defined below. `temporary_name_for_rotation` must be specified when changing this block.
         * 
         * @return builder
         * 
         */
        public Builder kubeletConfig(@Nullable Output kubeletConfig) {
            $.kubeletConfig = kubeletConfig;
            return this;
        }

        /**
         * @param kubeletConfig A `kubelet_config` block as defined below. `temporary_name_for_rotation` must be specified when changing this block.
         * 
         * @return builder
         * 
         */
        public Builder kubeletConfig(KubernetesClusterDefaultNodePoolKubeletConfigArgs kubeletConfig) {
            return kubeletConfig(Output.of(kubeletConfig));
        }

        /**
         * @param kubeletDiskType The type of disk used by kubelet. Possible values are `OS` and `Temporary`.
         * 
         * @return builder
         * 
         */
        public Builder kubeletDiskType(@Nullable Output kubeletDiskType) {
            $.kubeletDiskType = kubeletDiskType;
            return this;
        }

        /**
         * @param kubeletDiskType The type of disk used by kubelet. Possible values are `OS` and `Temporary`.
         * 
         * @return builder
         * 
         */
        public Builder kubeletDiskType(String kubeletDiskType) {
            return kubeletDiskType(Output.of(kubeletDiskType));
        }

        /**
         * @param linuxOsConfig A `linux_os_config` block as defined below. `temporary_name_for_rotation` must be specified when changing this block.
         * 
         * @return builder
         * 
         */
        public Builder linuxOsConfig(@Nullable Output linuxOsConfig) {
            $.linuxOsConfig = linuxOsConfig;
            return this;
        }

        /**
         * @param linuxOsConfig A `linux_os_config` block as defined below. `temporary_name_for_rotation` must be specified when changing this block.
         * 
         * @return builder
         * 
         */
        public Builder linuxOsConfig(KubernetesClusterDefaultNodePoolLinuxOsConfigArgs linuxOsConfig) {
            return linuxOsConfig(Output.of(linuxOsConfig));
        }

        public Builder maxCount(@Nullable Output maxCount) {
            $.maxCount = maxCount;
            return this;
        }

        public Builder maxCount(Integer maxCount) {
            return maxCount(Output.of(maxCount));
        }

        /**
         * @param maxPods The maximum number of pods that can run on each agent. `temporary_name_for_rotation` must be specified when changing this property.
         * 
         * @return builder
         * 
         */
        public Builder maxPods(@Nullable Output maxPods) {
            $.maxPods = maxPods;
            return this;
        }

        /**
         * @param maxPods The maximum number of pods that can run on each agent. `temporary_name_for_rotation` must be specified when changing this property.
         * 
         * @return builder
         * 
         */
        public Builder maxPods(Integer maxPods) {
            return maxPods(Output.of(maxPods));
        }

        public Builder minCount(@Nullable Output minCount) {
            $.minCount = minCount;
            return this;
        }

        public Builder minCount(Integer minCount) {
            return minCount(Output.of(minCount));
        }

        /**
         * @param name The name which should be used for the default Kubernetes Node Pool.
         * 
         * @return builder
         * 
         */
        public Builder name(Output name) {
            $.name = name;
            return this;
        }

        /**
         * @param name The name which should be used for the default Kubernetes Node Pool.
         * 
         * @return builder
         * 
         */
        public Builder name(String name) {
            return name(Output.of(name));
        }

        public Builder nodeCount(@Nullable Output nodeCount) {
            $.nodeCount = nodeCount;
            return this;
        }

        public Builder nodeCount(Integer nodeCount) {
            return nodeCount(Output.of(nodeCount));
        }

        /**
         * @param nodeLabels A map of Kubernetes labels which should be applied to nodes in the Default Node Pool.
         * 
         * @return builder
         * 
         */
        public Builder nodeLabels(@Nullable Output> nodeLabels) {
            $.nodeLabels = nodeLabels;
            return this;
        }

        /**
         * @param nodeLabels A map of Kubernetes labels which should be applied to nodes in the Default Node Pool.
         * 
         * @return builder
         * 
         */
        public Builder nodeLabels(Map nodeLabels) {
            return nodeLabels(Output.of(nodeLabels));
        }

        /**
         * @param nodeNetworkProfile A `node_network_profile` block as documented below.
         * 
         * @return builder
         * 
         */
        public Builder nodeNetworkProfile(@Nullable Output nodeNetworkProfile) {
            $.nodeNetworkProfile = nodeNetworkProfile;
            return this;
        }

        /**
         * @param nodeNetworkProfile A `node_network_profile` block as documented below.
         * 
         * @return builder
         * 
         */
        public Builder nodeNetworkProfile(KubernetesClusterDefaultNodePoolNodeNetworkProfileArgs nodeNetworkProfile) {
            return nodeNetworkProfile(Output.of(nodeNetworkProfile));
        }

        /**
         * @param nodePublicIpEnabled Should nodes in this Node Pool have a Public IP Address? `temporary_name_for_rotation` must be specified when changing this property.
         * 
         * @return builder
         * 
         */
        public Builder nodePublicIpEnabled(@Nullable Output nodePublicIpEnabled) {
            $.nodePublicIpEnabled = nodePublicIpEnabled;
            return this;
        }

        /**
         * @param nodePublicIpEnabled Should nodes in this Node Pool have a Public IP Address? `temporary_name_for_rotation` must be specified when changing this property.
         * 
         * @return builder
         * 
         */
        public Builder nodePublicIpEnabled(Boolean nodePublicIpEnabled) {
            return nodePublicIpEnabled(Output.of(nodePublicIpEnabled));
        }

        /**
         * @param nodePublicIpPrefixId 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.
         * 
         * @return builder
         * 
         */
        public Builder nodePublicIpPrefixId(@Nullable Output nodePublicIpPrefixId) {
            $.nodePublicIpPrefixId = nodePublicIpPrefixId;
            return this;
        }

        /**
         * @param nodePublicIpPrefixId 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.
         * 
         * @return builder
         * 
         */
        public Builder nodePublicIpPrefixId(String nodePublicIpPrefixId) {
            return nodePublicIpPrefixId(Output.of(nodePublicIpPrefixId));
        }

        /**
         * @param onlyCriticalAddonsEnabled Enabling this option will taint default node pool with `CriticalAddonsOnly=true:NoSchedule` taint. `temporary_name_for_rotation` must be specified when changing this property.
         * 
         * @return builder
         * 
         */
        public Builder onlyCriticalAddonsEnabled(@Nullable Output onlyCriticalAddonsEnabled) {
            $.onlyCriticalAddonsEnabled = onlyCriticalAddonsEnabled;
            return this;
        }

        /**
         * @param onlyCriticalAddonsEnabled Enabling this option will taint default node pool with `CriticalAddonsOnly=true:NoSchedule` taint. `temporary_name_for_rotation` must be specified when changing this property.
         * 
         * @return builder
         * 
         */
        public Builder onlyCriticalAddonsEnabled(Boolean onlyCriticalAddonsEnabled) {
            return onlyCriticalAddonsEnabled(Output.of(onlyCriticalAddonsEnabled));
        }

        /**
         * @param orchestratorVersion Version of Kubernetes used for the Agents. If not specified, the default node pool will be created with the version specified by `kubernetes_version`. If both are unspecified, 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](https://docs.microsoft.com/en-us/azure/aks/supported-kubernetes-versions?tabs=azure-cli#alias-minor-version).
         * 
         * > **Note:** This version must be supported by the Kubernetes Cluster - as such the version of Kubernetes used on the Cluster/Control Plane may need to be upgraded first.
         * 
         * @return builder
         * 
         */
        public Builder orchestratorVersion(@Nullable Output orchestratorVersion) {
            $.orchestratorVersion = orchestratorVersion;
            return this;
        }

        /**
         * @param orchestratorVersion Version of Kubernetes used for the Agents. If not specified, the default node pool will be created with the version specified by `kubernetes_version`. If both are unspecified, 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](https://docs.microsoft.com/en-us/azure/aks/supported-kubernetes-versions?tabs=azure-cli#alias-minor-version).
         * 
         * > **Note:** This version must be supported by the Kubernetes Cluster - as such the version of Kubernetes used on the Cluster/Control Plane may need to be upgraded first.
         * 
         * @return builder
         * 
         */
        public Builder orchestratorVersion(String orchestratorVersion) {
            return orchestratorVersion(Output.of(orchestratorVersion));
        }

        /**
         * @param osDiskSizeGb The size of the OS Disk which should be used for each agent in the Node Pool. `temporary_name_for_rotation` must be specified when attempting a change.
         * 
         * @return builder
         * 
         */
        public Builder osDiskSizeGb(@Nullable Output osDiskSizeGb) {
            $.osDiskSizeGb = osDiskSizeGb;
            return this;
        }

        /**
         * @param osDiskSizeGb The size of the OS Disk which should be used for each agent in the Node Pool. `temporary_name_for_rotation` must be specified when attempting a change.
         * 
         * @return builder
         * 
         */
        public Builder osDiskSizeGb(Integer osDiskSizeGb) {
            return osDiskSizeGb(Output.of(osDiskSizeGb));
        }

        /**
         * @param osDiskType The type of disk which should be used for the Operating System. Possible values are `Ephemeral` and `Managed`. Defaults to `Managed`. `temporary_name_for_rotation` must be specified when attempting a change.
         * 
         * @return builder
         * 
         */
        public Builder osDiskType(@Nullable Output osDiskType) {
            $.osDiskType = osDiskType;
            return this;
        }

        /**
         * @param osDiskType The type of disk which should be used for the Operating System. Possible values are `Ephemeral` and `Managed`. Defaults to `Managed`. `temporary_name_for_rotation` must be specified when attempting a change.
         * 
         * @return builder
         * 
         */
        public Builder osDiskType(String osDiskType) {
            return osDiskType(Output.of(osDiskType));
        }

        /**
         * @param osSku 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 `temporary_name_for_rotation` must be specified when attempting a change.
         * 
         * @return builder
         * 
         */
        public Builder osSku(@Nullable Output osSku) {
            $.osSku = osSku;
            return this;
        }

        /**
         * @param osSku 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 `temporary_name_for_rotation` must be specified when attempting a change.
         * 
         * @return builder
         * 
         */
        public Builder osSku(String osSku) {
            return osSku(Output.of(osSku));
        }

        /**
         * @param podSubnetId The ID of the Subnet where the pods in the default Node Pool should exist.
         * 
         * @return builder
         * 
         */
        public Builder podSubnetId(@Nullable Output podSubnetId) {
            $.podSubnetId = podSubnetId;
            return this;
        }

        /**
         * @param podSubnetId The ID of the Subnet where the pods in the default Node Pool should exist.
         * 
         * @return builder
         * 
         */
        public Builder podSubnetId(String podSubnetId) {
            return podSubnetId(Output.of(podSubnetId));
        }

        /**
         * @param proximityPlacementGroupId The ID of the Proximity Placement Group. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder proximityPlacementGroupId(@Nullable Output proximityPlacementGroupId) {
            $.proximityPlacementGroupId = proximityPlacementGroupId;
            return this;
        }

        /**
         * @param proximityPlacementGroupId The ID of the Proximity Placement Group. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder proximityPlacementGroupId(String proximityPlacementGroupId) {
            return proximityPlacementGroupId(Output.of(proximityPlacementGroupId));
        }

        /**
         * @param scaleDownMode Specifies the autoscaling behaviour of the Kubernetes Cluster. Allowed values are `Delete` and `Deallocate`. Defaults to `Delete`.
         * 
         * @return builder
         * 
         */
        public Builder scaleDownMode(@Nullable Output scaleDownMode) {
            $.scaleDownMode = scaleDownMode;
            return this;
        }

        /**
         * @param scaleDownMode Specifies the autoscaling behaviour of the Kubernetes Cluster. Allowed values are `Delete` and `Deallocate`. Defaults to `Delete`.
         * 
         * @return builder
         * 
         */
        public Builder scaleDownMode(String scaleDownMode) {
            return scaleDownMode(Output.of(scaleDownMode));
        }

        /**
         * @param snapshotId The ID of the Snapshot which should be used to create this default Node Pool. `temporary_name_for_rotation` must be specified when changing this property.
         * 
         * @return builder
         * 
         */
        public Builder snapshotId(@Nullable Output snapshotId) {
            $.snapshotId = snapshotId;
            return this;
        }

        /**
         * @param snapshotId The ID of the Snapshot which should be used to create this default Node Pool. `temporary_name_for_rotation` must be specified when changing this property.
         * 
         * @return builder
         * 
         */
        public Builder snapshotId(String snapshotId) {
            return snapshotId(Output.of(snapshotId));
        }

        /**
         * @param tags A mapping of tags to assign to the Node Pool.
         * 
         * > At this time there's a bug in the AKS API where Tags for a Node Pool are not stored in the correct case - you may wish to use `ignore_changes` functionality to ignore changes to the casing until this is fixed in the AKS API.
         * 
         * @return builder
         * 
         */
        public Builder tags(@Nullable Output> tags) {
            $.tags = tags;
            return this;
        }

        /**
         * @param tags A mapping of tags to assign to the Node Pool.
         * 
         * > At this time there's a bug in the AKS API where Tags for a Node Pool are not stored in the correct case - you may wish to use `ignore_changes` functionality to ignore changes to the casing until this is fixed in the AKS API.
         * 
         * @return builder
         * 
         */
        public Builder tags(Map tags) {
            return tags(Output.of(tags));
        }

        /**
         * @param temporaryNameForRotation Specifies the name of the temporary node pool used to cycle the default node pool for VM resizing.
         * 
         * @return builder
         * 
         */
        public Builder temporaryNameForRotation(@Nullable Output temporaryNameForRotation) {
            $.temporaryNameForRotation = temporaryNameForRotation;
            return this;
        }

        /**
         * @param temporaryNameForRotation Specifies the name of the temporary node pool used to cycle the default node pool for VM resizing.
         * 
         * @return builder
         * 
         */
        public Builder temporaryNameForRotation(String temporaryNameForRotation) {
            return temporaryNameForRotation(Output.of(temporaryNameForRotation));
        }

        /**
         * @param type The type of Node Pool which should be created. Possible values are `VirtualMachineScaleSets`. Defaults to `VirtualMachineScaleSets`. Changing this forces a new resource to be created.
         * 
         * > **Note:** When creating a cluster that supports multiple node pools, the cluster must use `VirtualMachineScaleSets`. For more information on the limitations of clusters using multiple node pools see [the documentation](https://learn.microsoft.com/en-us/azure/aks/use-multiple-node-pools#limitations).
         * 
         * @return builder
         * 
         */
        public Builder type(@Nullable Output type) {
            $.type = type;
            return this;
        }

        /**
         * @param type The type of Node Pool which should be created. Possible values are `VirtualMachineScaleSets`. Defaults to `VirtualMachineScaleSets`. Changing this forces a new resource to be created.
         * 
         * > **Note:** When creating a cluster that supports multiple node pools, the cluster must use `VirtualMachineScaleSets`. For more information on the limitations of clusters using multiple node pools see [the documentation](https://learn.microsoft.com/en-us/azure/aks/use-multiple-node-pools#limitations).
         * 
         * @return builder
         * 
         */
        public Builder type(String type) {
            return type(Output.of(type));
        }

        /**
         * @param ultraSsdEnabled Used to specify whether the UltraSSD is enabled in the Default Node Pool. Defaults to `false`. See [the documentation](https://docs.microsoft.com/azure/aks/use-ultra-disks) for more information. `temporary_name_for_rotation` must be specified when attempting a change.
         * 
         * @return builder
         * 
         */
        public Builder ultraSsdEnabled(@Nullable Output ultraSsdEnabled) {
            $.ultraSsdEnabled = ultraSsdEnabled;
            return this;
        }

        /**
         * @param ultraSsdEnabled Used to specify whether the UltraSSD is enabled in the Default Node Pool. Defaults to `false`. See [the documentation](https://docs.microsoft.com/azure/aks/use-ultra-disks) for more information. `temporary_name_for_rotation` must be specified when attempting a change.
         * 
         * @return builder
         * 
         */
        public Builder ultraSsdEnabled(Boolean ultraSsdEnabled) {
            return ultraSsdEnabled(Output.of(ultraSsdEnabled));
        }

        /**
         * @param upgradeSettings A `upgrade_settings` block as documented below.
         * 
         * @return builder
         * 
         */
        public Builder upgradeSettings(@Nullable Output upgradeSettings) {
            $.upgradeSettings = upgradeSettings;
            return this;
        }

        /**
         * @param upgradeSettings A `upgrade_settings` block as documented below.
         * 
         * @return builder
         * 
         */
        public Builder upgradeSettings(KubernetesClusterDefaultNodePoolUpgradeSettingsArgs upgradeSettings) {
            return upgradeSettings(Output.of(upgradeSettings));
        }

        /**
         * @param vmSize The size of the Virtual Machine, such as `Standard_DS2_v2`. `temporary_name_for_rotation` must be specified when attempting a resize.
         * 
         * @return builder
         * 
         */
        public Builder vmSize(Output vmSize) {
            $.vmSize = vmSize;
            return this;
        }

        /**
         * @param vmSize The size of the Virtual Machine, such as `Standard_DS2_v2`. `temporary_name_for_rotation` must be specified when attempting a resize.
         * 
         * @return builder
         * 
         */
        public Builder vmSize(String vmSize) {
            return vmSize(Output.of(vmSize));
        }

        /**
         * @param vnetSubnetId The ID of a Subnet where the Kubernetes Node Pool should exist.
         * 
         * > **Note:** A Route Table must be configured on this Subnet.
         * 
         * @return builder
         * 
         */
        public Builder vnetSubnetId(@Nullable Output vnetSubnetId) {
            $.vnetSubnetId = vnetSubnetId;
            return this;
        }

        /**
         * @param vnetSubnetId The ID of a Subnet where the Kubernetes Node Pool should exist.
         * 
         * > **Note:** A Route Table must be configured on this Subnet.
         * 
         * @return builder
         * 
         */
        public Builder vnetSubnetId(String vnetSubnetId) {
            return vnetSubnetId(Output.of(vnetSubnetId));
        }

        /**
         * @param workloadRuntime Specifies the workload runtime used by the node pool. Possible value is `OCIContainer`.
         * 
         * @return builder
         * 
         */
        public Builder workloadRuntime(@Nullable Output workloadRuntime) {
            $.workloadRuntime = workloadRuntime;
            return this;
        }

        /**
         * @param workloadRuntime Specifies the workload runtime used by the node pool. Possible value is `OCIContainer`.
         * 
         * @return builder
         * 
         */
        public Builder workloadRuntime(String workloadRuntime) {
            return workloadRuntime(Output.of(workloadRuntime));
        }

        /**
         * @param zones Specifies a list of Availability Zones in which this Kubernetes Cluster should be located. `temporary_name_for_rotation` must be specified when changing this property.
         * 
         * > **Note:** This requires that the `type` is set to `VirtualMachineScaleSets` and that `load_balancer_sku` is set to `standard`.
         * 
         * @return builder
         * 
         */
        public Builder zones(@Nullable Output> zones) {
            $.zones = zones;
            return this;
        }

        /**
         * @param zones Specifies a list of Availability Zones in which this Kubernetes Cluster should be located. `temporary_name_for_rotation` must be specified when changing this property.
         * 
         * > **Note:** This requires that the `type` is set to `VirtualMachineScaleSets` and that `load_balancer_sku` is set to `standard`.
         * 
         * @return builder
         * 
         */
        public Builder zones(List zones) {
            return zones(Output.of(zones));
        }

        /**
         * @param zones Specifies a list of Availability Zones in which this Kubernetes Cluster should be located. `temporary_name_for_rotation` must be specified when changing this property.
         * 
         * > **Note:** This requires that the `type` is set to `VirtualMachineScaleSets` and that `load_balancer_sku` is set to `standard`.
         * 
         * @return builder
         * 
         */
        public Builder zones(String... zones) {
            return zones(List.of(zones));
        }

        public KubernetesClusterDefaultNodePoolArgs build() {
            if ($.name == null) {
                throw new MissingRequiredPropertyException("KubernetesClusterDefaultNodePoolArgs", "name");
            }
            if ($.vmSize == null) {
                throw new MissingRequiredPropertyException("KubernetesClusterDefaultNodePoolArgs", "vmSize");
            }
            return $;
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy