
com.pulumi.azure.containerservice.kotlin.inputs.KubernetesClusterAutoScalerProfileArgs.kt Maven / Gradle / Ivy
@file:Suppress("NAME_SHADOWING", "DEPRECATION")
package com.pulumi.azure.containerservice.kotlin.inputs
import com.pulumi.azure.containerservice.inputs.KubernetesClusterAutoScalerProfileArgs.builder
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import kotlin.Boolean
import kotlin.Double
import kotlin.Int
import kotlin.String
import kotlin.Suppress
import kotlin.jvm.JvmName
/**
*
* @property balanceSimilarNodeGroups Detect similar node groups and balance the number of nodes between them. Defaults to `false`.
* @property emptyBulkDeleteMax Maximum number of empty nodes that can be deleted at the same time. Defaults to `10`.
* @property expander Expander to use. Possible values are `least-waste`, `priority`, `most-pods` and `random`. Defaults to `random`.
* @property maxGracefulTerminationSec Maximum number of seconds the cluster autoscaler waits for pod termination when trying to scale down a node. Defaults to `600`.
* @property maxNodeProvisioningTime Maximum time the autoscaler waits for a node to be provisioned. Defaults to `15m`.
* @property maxUnreadyNodes Maximum Number of allowed unready nodes. Defaults to `3`.
* @property maxUnreadyPercentage Maximum percentage of unready nodes the cluster autoscaler will stop if the percentage is exceeded. Defaults to `45`.
* @property newPodScaleUpDelay For scenarios like burst/batch scale where you don't want CA to act before the kubernetes scheduler could schedule all the pods, you can tell CA to ignore unscheduled pods before they're a certain age. Defaults to `10s`.
* @property scaleDownDelayAfterAdd How long after the scale up of AKS nodes the scale down evaluation resumes. Defaults to `10m`.
* @property scaleDownDelayAfterDelete How long after node deletion that scale down evaluation resumes. Defaults to the value used for `scan_interval`.
* @property scaleDownDelayAfterFailure How long after scale down failure that scale down evaluation resumes. Defaults to `3m`.
* @property scaleDownUnneeded How long a node should be unneeded before it is eligible for scale down. Defaults to `10m`.
* @property scaleDownUnready How long an unready node should be unneeded before it is eligible for scale down. Defaults to `20m`.
* @property scaleDownUtilizationThreshold Node utilization level, defined as sum of requested resources divided by capacity, below which a node can be considered for scale down. Defaults to `0.5`.
* @property scanInterval How often the AKS Cluster should be re-evaluated for scale up/down. Defaults to `10s`.
* @property skipNodesWithLocalStorage If `true` cluster autoscaler will never delete nodes with pods with local storage, for example, EmptyDir or HostPath. Defaults to `true`.
* @property skipNodesWithSystemPods If `true` cluster autoscaler will never delete nodes with pods from kube-system (except for DaemonSet or mirror pods). Defaults to `true`.
*/
public data class KubernetesClusterAutoScalerProfileArgs(
public val balanceSimilarNodeGroups: Output? = null,
public val emptyBulkDeleteMax: Output? = null,
public val expander: Output? = null,
public val maxGracefulTerminationSec: Output? = null,
public val maxNodeProvisioningTime: Output? = null,
public val maxUnreadyNodes: Output? = null,
public val maxUnreadyPercentage: Output? = null,
public val newPodScaleUpDelay: Output? = null,
public val scaleDownDelayAfterAdd: Output? = null,
public val scaleDownDelayAfterDelete: Output? = null,
public val scaleDownDelayAfterFailure: Output? = null,
public val scaleDownUnneeded: Output? = null,
public val scaleDownUnready: Output? = null,
public val scaleDownUtilizationThreshold: Output? = null,
public val scanInterval: Output? = null,
public val skipNodesWithLocalStorage: Output? = null,
public val skipNodesWithSystemPods: Output? = null,
) :
ConvertibleToJava {
override fun toJava(): com.pulumi.azure.containerservice.inputs.KubernetesClusterAutoScalerProfileArgs =
com.pulumi.azure.containerservice.inputs.KubernetesClusterAutoScalerProfileArgs.builder()
.balanceSimilarNodeGroups(balanceSimilarNodeGroups?.applyValue({ args0 -> args0 }))
.emptyBulkDeleteMax(emptyBulkDeleteMax?.applyValue({ args0 -> args0 }))
.expander(expander?.applyValue({ args0 -> args0 }))
.maxGracefulTerminationSec(maxGracefulTerminationSec?.applyValue({ args0 -> args0 }))
.maxNodeProvisioningTime(maxNodeProvisioningTime?.applyValue({ args0 -> args0 }))
.maxUnreadyNodes(maxUnreadyNodes?.applyValue({ args0 -> args0 }))
.maxUnreadyPercentage(maxUnreadyPercentage?.applyValue({ args0 -> args0 }))
.newPodScaleUpDelay(newPodScaleUpDelay?.applyValue({ args0 -> args0 }))
.scaleDownDelayAfterAdd(scaleDownDelayAfterAdd?.applyValue({ args0 -> args0 }))
.scaleDownDelayAfterDelete(scaleDownDelayAfterDelete?.applyValue({ args0 -> args0 }))
.scaleDownDelayAfterFailure(scaleDownDelayAfterFailure?.applyValue({ args0 -> args0 }))
.scaleDownUnneeded(scaleDownUnneeded?.applyValue({ args0 -> args0 }))
.scaleDownUnready(scaleDownUnready?.applyValue({ args0 -> args0 }))
.scaleDownUtilizationThreshold(scaleDownUtilizationThreshold?.applyValue({ args0 -> args0 }))
.scanInterval(scanInterval?.applyValue({ args0 -> args0 }))
.skipNodesWithLocalStorage(skipNodesWithLocalStorage?.applyValue({ args0 -> args0 }))
.skipNodesWithSystemPods(skipNodesWithSystemPods?.applyValue({ args0 -> args0 })).build()
}
/**
* Builder for [KubernetesClusterAutoScalerProfileArgs].
*/
@PulumiTagMarker
public class KubernetesClusterAutoScalerProfileArgsBuilder internal constructor() {
private var balanceSimilarNodeGroups: Output? = null
private var emptyBulkDeleteMax: Output? = null
private var expander: Output? = null
private var maxGracefulTerminationSec: Output? = null
private var maxNodeProvisioningTime: Output? = null
private var maxUnreadyNodes: Output? = null
private var maxUnreadyPercentage: Output? = null
private var newPodScaleUpDelay: Output? = null
private var scaleDownDelayAfterAdd: Output? = null
private var scaleDownDelayAfterDelete: Output? = null
private var scaleDownDelayAfterFailure: Output? = null
private var scaleDownUnneeded: Output? = null
private var scaleDownUnready: Output? = null
private var scaleDownUtilizationThreshold: Output? = null
private var scanInterval: Output? = null
private var skipNodesWithLocalStorage: Output? = null
private var skipNodesWithSystemPods: Output? = null
/**
* @param value Detect similar node groups and balance the number of nodes between them. Defaults to `false`.
*/
@JvmName("ndxpxduggipvivxw")
public suspend fun balanceSimilarNodeGroups(`value`: Output) {
this.balanceSimilarNodeGroups = value
}
/**
* @param value Maximum number of empty nodes that can be deleted at the same time. Defaults to `10`.
*/
@JvmName("awswoginmhlffudb")
public suspend fun emptyBulkDeleteMax(`value`: Output) {
this.emptyBulkDeleteMax = value
}
/**
* @param value Expander to use. Possible values are `least-waste`, `priority`, `most-pods` and `random`. Defaults to `random`.
*/
@JvmName("xymvfbbtfmyrmdgr")
public suspend fun expander(`value`: Output) {
this.expander = value
}
/**
* @param value Maximum number of seconds the cluster autoscaler waits for pod termination when trying to scale down a node. Defaults to `600`.
*/
@JvmName("otgvghxptptxyoom")
public suspend fun maxGracefulTerminationSec(`value`: Output) {
this.maxGracefulTerminationSec = value
}
/**
* @param value Maximum time the autoscaler waits for a node to be provisioned. Defaults to `15m`.
*/
@JvmName("ottffoovgspljcqy")
public suspend fun maxNodeProvisioningTime(`value`: Output) {
this.maxNodeProvisioningTime = value
}
/**
* @param value Maximum Number of allowed unready nodes. Defaults to `3`.
*/
@JvmName("qcdjcmjufybsyioy")
public suspend fun maxUnreadyNodes(`value`: Output) {
this.maxUnreadyNodes = value
}
/**
* @param value Maximum percentage of unready nodes the cluster autoscaler will stop if the percentage is exceeded. Defaults to `45`.
*/
@JvmName("rduamehtksedhnej")
public suspend fun maxUnreadyPercentage(`value`: Output) {
this.maxUnreadyPercentage = value
}
/**
* @param value For scenarios like burst/batch scale where you don't want CA to act before the kubernetes scheduler could schedule all the pods, you can tell CA to ignore unscheduled pods before they're a certain age. Defaults to `10s`.
*/
@JvmName("aplynrxxhtemyura")
public suspend fun newPodScaleUpDelay(`value`: Output) {
this.newPodScaleUpDelay = value
}
/**
* @param value How long after the scale up of AKS nodes the scale down evaluation resumes. Defaults to `10m`.
*/
@JvmName("ubydenyhmykmcdlj")
public suspend fun scaleDownDelayAfterAdd(`value`: Output) {
this.scaleDownDelayAfterAdd = value
}
/**
* @param value How long after node deletion that scale down evaluation resumes. Defaults to the value used for `scan_interval`.
*/
@JvmName("oejlwdqhyhksrsvq")
public suspend fun scaleDownDelayAfterDelete(`value`: Output) {
this.scaleDownDelayAfterDelete = value
}
/**
* @param value How long after scale down failure that scale down evaluation resumes. Defaults to `3m`.
*/
@JvmName("ohkpwqmtdokuteai")
public suspend fun scaleDownDelayAfterFailure(`value`: Output) {
this.scaleDownDelayAfterFailure = value
}
/**
* @param value How long a node should be unneeded before it is eligible for scale down. Defaults to `10m`.
*/
@JvmName("johvfhwbxfsftsmr")
public suspend fun scaleDownUnneeded(`value`: Output) {
this.scaleDownUnneeded = value
}
/**
* @param value How long an unready node should be unneeded before it is eligible for scale down. Defaults to `20m`.
*/
@JvmName("curyrkfbdmvaiwtk")
public suspend fun scaleDownUnready(`value`: Output) {
this.scaleDownUnready = value
}
/**
* @param value Node utilization level, defined as sum of requested resources divided by capacity, below which a node can be considered for scale down. Defaults to `0.5`.
*/
@JvmName("diowcbipwmqqlylv")
public suspend fun scaleDownUtilizationThreshold(`value`: Output) {
this.scaleDownUtilizationThreshold = value
}
/**
* @param value How often the AKS Cluster should be re-evaluated for scale up/down. Defaults to `10s`.
*/
@JvmName("lhmxunryttrlxatr")
public suspend fun scanInterval(`value`: Output) {
this.scanInterval = value
}
/**
* @param value If `true` cluster autoscaler will never delete nodes with pods with local storage, for example, EmptyDir or HostPath. Defaults to `true`.
*/
@JvmName("ghndqumcyefjflle")
public suspend fun skipNodesWithLocalStorage(`value`: Output) {
this.skipNodesWithLocalStorage = value
}
/**
* @param value If `true` cluster autoscaler will never delete nodes with pods from kube-system (except for DaemonSet or mirror pods). Defaults to `true`.
*/
@JvmName("wqvcktqkwihrdmdi")
public suspend fun skipNodesWithSystemPods(`value`: Output) {
this.skipNodesWithSystemPods = value
}
/**
* @param value Detect similar node groups and balance the number of nodes between them. Defaults to `false`.
*/
@JvmName("nfdlhicsdspkqrrr")
public suspend fun balanceSimilarNodeGroups(`value`: Boolean?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.balanceSimilarNodeGroups = mapped
}
/**
* @param value Maximum number of empty nodes that can be deleted at the same time. Defaults to `10`.
*/
@JvmName("cqlkxfrquppttieo")
public suspend fun emptyBulkDeleteMax(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.emptyBulkDeleteMax = mapped
}
/**
* @param value Expander to use. Possible values are `least-waste`, `priority`, `most-pods` and `random`. Defaults to `random`.
*/
@JvmName("wxekvhevcdionkwo")
public suspend fun expander(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.expander = mapped
}
/**
* @param value Maximum number of seconds the cluster autoscaler waits for pod termination when trying to scale down a node. Defaults to `600`.
*/
@JvmName("tdiryadnqdhpbbxs")
public suspend fun maxGracefulTerminationSec(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.maxGracefulTerminationSec = mapped
}
/**
* @param value Maximum time the autoscaler waits for a node to be provisioned. Defaults to `15m`.
*/
@JvmName("pniqiranfitmbhfw")
public suspend fun maxNodeProvisioningTime(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.maxNodeProvisioningTime = mapped
}
/**
* @param value Maximum Number of allowed unready nodes. Defaults to `3`.
*/
@JvmName("hdgegowdqdgbkhbk")
public suspend fun maxUnreadyNodes(`value`: Int?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.maxUnreadyNodes = mapped
}
/**
* @param value Maximum percentage of unready nodes the cluster autoscaler will stop if the percentage is exceeded. Defaults to `45`.
*/
@JvmName("ehgjyybndbiecgin")
public suspend fun maxUnreadyPercentage(`value`: Double?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.maxUnreadyPercentage = mapped
}
/**
* @param value For scenarios like burst/batch scale where you don't want CA to act before the kubernetes scheduler could schedule all the pods, you can tell CA to ignore unscheduled pods before they're a certain age. Defaults to `10s`.
*/
@JvmName("yvmccorkwumphjfv")
public suspend fun newPodScaleUpDelay(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.newPodScaleUpDelay = mapped
}
/**
* @param value How long after the scale up of AKS nodes the scale down evaluation resumes. Defaults to `10m`.
*/
@JvmName("ycuqdgywjbogaajh")
public suspend fun scaleDownDelayAfterAdd(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.scaleDownDelayAfterAdd = mapped
}
/**
* @param value How long after node deletion that scale down evaluation resumes. Defaults to the value used for `scan_interval`.
*/
@JvmName("oseumryqumulekok")
public suspend fun scaleDownDelayAfterDelete(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.scaleDownDelayAfterDelete = mapped
}
/**
* @param value How long after scale down failure that scale down evaluation resumes. Defaults to `3m`.
*/
@JvmName("tucukleyjaukwynw")
public suspend fun scaleDownDelayAfterFailure(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.scaleDownDelayAfterFailure = mapped
}
/**
* @param value How long a node should be unneeded before it is eligible for scale down. Defaults to `10m`.
*/
@JvmName("yfgwcomsqjvwweuq")
public suspend fun scaleDownUnneeded(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.scaleDownUnneeded = mapped
}
/**
* @param value How long an unready node should be unneeded before it is eligible for scale down. Defaults to `20m`.
*/
@JvmName("mywydhxcfulktqmk")
public suspend fun scaleDownUnready(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.scaleDownUnready = mapped
}
/**
* @param value Node utilization level, defined as sum of requested resources divided by capacity, below which a node can be considered for scale down. Defaults to `0.5`.
*/
@JvmName("exfbkukctjnhnhwm")
public suspend fun scaleDownUtilizationThreshold(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.scaleDownUtilizationThreshold = mapped
}
/**
* @param value How often the AKS Cluster should be re-evaluated for scale up/down. Defaults to `10s`.
*/
@JvmName("faypwmsorwurljiu")
public suspend fun scanInterval(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.scanInterval = mapped
}
/**
* @param value If `true` cluster autoscaler will never delete nodes with pods with local storage, for example, EmptyDir or HostPath. Defaults to `true`.
*/
@JvmName("lnyxgvhyhmlglekm")
public suspend fun skipNodesWithLocalStorage(`value`: Boolean?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.skipNodesWithLocalStorage = mapped
}
/**
* @param value If `true` cluster autoscaler will never delete nodes with pods from kube-system (except for DaemonSet or mirror pods). Defaults to `true`.
*/
@JvmName("xprtrrrtxqtdcksm")
public suspend fun skipNodesWithSystemPods(`value`: Boolean?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.skipNodesWithSystemPods = mapped
}
internal fun build(): KubernetesClusterAutoScalerProfileArgs =
KubernetesClusterAutoScalerProfileArgs(
balanceSimilarNodeGroups = balanceSimilarNodeGroups,
emptyBulkDeleteMax = emptyBulkDeleteMax,
expander = expander,
maxGracefulTerminationSec = maxGracefulTerminationSec,
maxNodeProvisioningTime = maxNodeProvisioningTime,
maxUnreadyNodes = maxUnreadyNodes,
maxUnreadyPercentage = maxUnreadyPercentage,
newPodScaleUpDelay = newPodScaleUpDelay,
scaleDownDelayAfterAdd = scaleDownDelayAfterAdd,
scaleDownDelayAfterDelete = scaleDownDelayAfterDelete,
scaleDownDelayAfterFailure = scaleDownDelayAfterFailure,
scaleDownUnneeded = scaleDownUnneeded,
scaleDownUnready = scaleDownUnready,
scaleDownUtilizationThreshold = scaleDownUtilizationThreshold,
scanInterval = scanInterval,
skipNodesWithLocalStorage = skipNodesWithLocalStorage,
skipNodesWithSystemPods = skipNodesWithSystemPods,
)
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy