Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
com.pulumi.gcp.container.kotlin.inputs.ClusterNodePoolNodeConfigArgs.kt Maven / Gradle / Ivy
Go to download
Build cloud applications and infrastructure by combining the safety and reliability of infrastructure as code with the power of the Kotlin programming language.
@file:Suppress("NAME_SHADOWING", "DEPRECATION")
package com.pulumi.gcp.container.kotlin.inputs
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.gcp.container.inputs.ClusterNodePoolNodeConfigArgs.builder
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.Boolean
import kotlin.Int
import kotlin.Pair
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.collections.Map
import kotlin.jvm.JvmName
/**
*
* @property advancedMachineFeatures Specifies options for controlling
* advanced machine features. Structure is documented below.
* @property bootDiskKmsKey The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. For more information about protecting resources with Cloud KMS Keys please see:
* @property confidentialNodes Configuration for Confidential Nodes feature. Structure is documented below.
* @property containerdConfig Parameters to customize containerd runtime. Structure is documented below.
* @property diskSizeGb Size of the disk attached to each node, specified
* in GB. The smallest allowed disk size is 10GB. Defaults to 100GB.
* @property diskType Type of the disk attached to each node
* (e.g. 'pd-standard', 'pd-balanced' or 'pd-ssd'). If unspecified, the default disk type is 'pd-standard'
* @property effectiveTaints List of kubernetes taints applied to each node. Structure is documented above.
* @property enableConfidentialStorage Enabling Confidential Storage will create boot disk with confidential mode. It is disabled by default.
* @property ephemeralStorageConfig Parameters for the ephemeral storage filesystem. If unspecified, ephemeral storage is backed by the boot disk. Structure is documented below.
* @property ephemeralStorageLocalSsdConfig Parameters for the ephemeral storage filesystem. If unspecified, ephemeral storage is backed by the boot disk. Structure is documented below.
* @property fastSocket Parameters for the NCCL Fast Socket feature. If unspecified, NCCL Fast Socket will not be enabled on the node pool.
* Node Pool must enable gvnic.
* GKE version 1.25.2-gke.1700 or later.
* Structure is documented below.
* @property gcfsConfig Parameters for the Google Container Filesystem (GCFS).
* If unspecified, GCFS will not be enabled on the node pool. When enabling this feature you must specify `image_type = "COS_CONTAINERD"` and `node_version` from GKE versions 1.19 or later to use it.
* For GKE versions 1.19, 1.20, and 1.21, the recommended minimum `node_version` would be 1.19.15-gke.1300, 1.20.11-gke.1300, and 1.21.5-gke.1300 respectively.
* A `machine_type` that has more than 16 GiB of memory is also recommended.
* GCFS must be enabled in order to use [image streaming](https://cloud.google.com/kubernetes-engine/docs/how-to/image-streaming).
* Structure is documented below.
* @property guestAccelerators List of the type and count of accelerator cards attached to the instance.
* Structure documented below.
* @property gvnic Google Virtual NIC (gVNIC) is a virtual network interface.
* Installing the gVNIC driver allows for more efficient traffic transmission across the Google network infrastructure.
* gVNIC is an alternative to the virtIO-based ethernet driver. GKE nodes must use a Container-Optimized OS node image.
* GKE node version 1.15.11-gke.15 or later
* Structure is documented below.
* @property hostMaintenancePolicy The maintenance policy for the hosts on which the GKE VMs run on.
* @property imageType The image type to use for this node. Note that changing the image type
* will delete and recreate all nodes in the node pool.
* @property kubeletConfig Kubelet configuration, currently supported attributes can be found [here](https://cloud.google.com/sdk/gcloud/reference/beta/container/node-pools/create#--system-config-from-file).
* Structure is documented below.
* ```
* kubelet_config {
* cpu_manager_policy = "static"
* cpu_cfs_quota = true
* cpu_cfs_quota_period = "100us"
* pod_pids_limit = 1024
* }
* ```
* @property labels The Kubernetes labels (key/value pairs) to be applied to each node. The kubernetes.io/ and k8s.io/ prefixes are
* reserved by Kubernetes Core components and cannot be specified.
* @property linuxNodeConfig Parameters that can be configured on Linux nodes. Structure is documented below.
* @property localNvmeSsdBlockConfig Parameters for the local NVMe SSDs. Structure is documented below.
* @property localSsdCount The amount of local SSD disks that will be
* attached to each cluster node. Defaults to 0.
* @property localSsdEncryptionMode Possible Local SSD encryption modes:
* Accepted values are:
* * `STANDARD_ENCRYPTION`: The given node will be encrypted using keys managed by Google infrastructure and the keys wll be deleted when the node is deleted.
* * `EPHEMERAL_KEY_ENCRYPTION`: The given node will opt-in for using ephemeral key for encrypting Local SSDs. The Local SSDs will not be able to recover data in case of node crash.
* @property loggingVariant Parameter for specifying the type of logging agent used in a node pool. This will override any cluster-wide default value. Valid values include DEFAULT and MAX_THROUGHPUT. See [Increasing logging agent throughput](https://cloud.google.com/stackdriver/docs/solutions/gke/managing-logs#throughput) for more information.
* @property machineType The name of a Google Compute Engine machine type.
* Defaults to `e2-medium`. To create a custom machine type, value should be set as specified
* [here](https://cloud.google.com/compute/docs/reference/latest/instances#machineType).
* @property metadata The metadata key/value pairs assigned to instances in
* the cluster. From GKE `1.12` onwards, `disable-legacy-endpoints` is set to
* `true` by the API; if `metadata` is set but that default value is not
* included, the provider will attempt to unset the value. To avoid this, set the
* value in your config.
* @property minCpuPlatform Minimum CPU platform to be used by this instance.
* The instance may be scheduled on the specified or newer CPU platform. Applicable
* values are the friendly names of CPU platforms, such as `Intel Haswell`. See the
* [official documentation](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform)
* for more information.
* @property nodeGroup Setting this field will assign instances of this pool to run on the specified node group. This is useful for running workloads on [sole tenant nodes](https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes).
* @property oauthScopes The set of Google API scopes to be made available
* on all of the node VMs under the "default" service account.
* Use the "https://www.googleapis.com/auth/cloud-platform" scope to grant access to all APIs. It is recommended that you set `service_account` to a non-default service account and grant IAM roles to that service account for only the resources that it needs.
* See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/how-to/access-scopes) for information on migrating off of legacy access scopes.
* @property preemptible A boolean that represents whether or not the underlying node VMs
* are preemptible. See the [official documentation](https://cloud.google.com/container-engine/docs/preemptible-vm)
* for more information. Defaults to false.
* @property reservationAffinity The configuration of the desired reservation which instances could take capacity from. Structure is documented below.
* @property resourceLabels The GCP labels (key/value pairs) to be applied to each node. Refer [here](https://cloud.google.com/kubernetes-engine/docs/how-to/creating-managing-labels)
* for how these labels are applied to clusters, node pools and nodes.
* @property resourceManagerTags A map of resource manager tag keys and values to be attached to the nodes for managing Compute Engine firewalls using Network Firewall Policies. Tags must be according to specifications found [here](https://cloud.google.com/vpc/docs/tags-firewalls-overview#specifications). A maximum of 5 tag key-value pairs can be specified. Existing tags will be replaced with new values. Tags must be in one of the following formats ([KEY]=[VALUE]) 1. `tagKeys/{tag_key_id}=tagValues/{tag_value_id}` 2. `{org_id}/{tag_key_name}={tag_value_name}` 3. `{project_id}/{tag_key_name}={tag_value_name}`.
* @property sandboxConfig Sandbox configuration for this node.
* @property secondaryBootDisks Parameters for secondary boot disks to preload container images and data on new nodes. Structure is documented below. `gcfs_config` must be `enabled=true` for this feature to work. `min_master_version` must also be set to use GKE 1.28.3-gke.106700 or later versions.
* @property serviceAccount The service account to be used by the Node VMs.
* If not specified, the "default" service account is used.
* @property shieldedInstanceConfig Shielded Instance options. Structure is documented below.
* @property soleTenantConfig Allows specifying multiple [node affinities](https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes#node_affinity_and_anti-affinity) useful for running workloads on [sole tenant nodes](https://cloud.google.com/kubernetes-engine/docs/how-to/sole-tenancy). `node_affinity` structure is documented below.
* @property spot A boolean that represents whether the underlying node VMs are spot.
* See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms)
* for more information. Defaults to false.
* @property storagePools The list of Storage Pools where boot disks are provisioned.
* @property tags The list of instance tags applied to all nodes. Tags are used to identify
* valid sources or targets for network firewalls.
* @property taints A list of [Kubernetes taints](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/)
* to apply to nodes. GKE's API can only set this field on cluster creation.
* However, GKE will add taints to your nodes if you enable certain features such
* as GPUs. If this field is set, any diffs on this field will cause the provider to
* recreate the underlying resource. Taint values can be updated safely in
* Kubernetes (eg. through `kubectl`), and it's recommended that you do not use
* this field to manage taints. If you do, `lifecycle.ignore_changes` is
* recommended. Structure is documented below.
* @property workloadMetadataConfig Metadata configuration to expose to workloads on the node pool.
* Structure is documented below.
*/
public data class ClusterNodePoolNodeConfigArgs(
public val advancedMachineFeatures: Output? =
null,
public val bootDiskKmsKey: Output? = null,
public val confidentialNodes: Output? = null,
public val containerdConfig: Output? = null,
public val diskSizeGb: Output? = null,
public val diskType: Output? = null,
public val effectiveTaints: Output>? = null,
public val enableConfidentialStorage: Output? = null,
public val ephemeralStorageConfig: Output? =
null,
public val ephemeralStorageLocalSsdConfig: Output? = null,
public val fastSocket: Output? = null,
public val gcfsConfig: Output? = null,
public val guestAccelerators: Output>? = null,
public val gvnic: Output? = null,
public val hostMaintenancePolicy: Output? =
null,
public val imageType: Output? = null,
public val kubeletConfig: Output? = null,
public val labels: Output>? = null,
public val linuxNodeConfig: Output? = null,
public val localNvmeSsdBlockConfig: Output? =
null,
public val localSsdCount: Output? = null,
public val localSsdEncryptionMode: Output? = null,
public val loggingVariant: Output? = null,
public val machineType: Output? = null,
public val metadata: Output>? = null,
public val minCpuPlatform: Output? = null,
public val nodeGroup: Output? = null,
public val oauthScopes: Output>? = null,
public val preemptible: Output? = null,
public val reservationAffinity: Output? = null,
public val resourceLabels: Output>? = null,
public val resourceManagerTags: Output>? = null,
public val sandboxConfig: Output? = null,
public val secondaryBootDisks: Output>? =
null,
public val serviceAccount: Output? = null,
public val shieldedInstanceConfig: Output? =
null,
public val soleTenantConfig: Output? = null,
public val spot: Output? = null,
public val storagePools: Output>? = null,
public val tags: Output>? = null,
public val taints: Output>? = null,
public val workloadMetadataConfig: Output? =
null,
) : ConvertibleToJava {
override fun toJava(): com.pulumi.gcp.container.inputs.ClusterNodePoolNodeConfigArgs =
com.pulumi.gcp.container.inputs.ClusterNodePoolNodeConfigArgs.builder()
.advancedMachineFeatures(
advancedMachineFeatures?.applyValue({ args0 ->
args0.let({ args0 ->
args0.toJava()
})
}),
)
.bootDiskKmsKey(bootDiskKmsKey?.applyValue({ args0 -> args0 }))
.confidentialNodes(confidentialNodes?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
.containerdConfig(containerdConfig?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
.diskSizeGb(diskSizeGb?.applyValue({ args0 -> args0 }))
.diskType(diskType?.applyValue({ args0 -> args0 }))
.effectiveTaints(
effectiveTaints?.applyValue({ args0 ->
args0.map({ args0 ->
args0.let({ args0 ->
args0.toJava()
})
})
}),
)
.enableConfidentialStorage(enableConfidentialStorage?.applyValue({ args0 -> args0 }))
.ephemeralStorageConfig(
ephemeralStorageConfig?.applyValue({ args0 ->
args0.let({ args0 ->
args0.toJava()
})
}),
)
.ephemeralStorageLocalSsdConfig(
ephemeralStorageLocalSsdConfig?.applyValue({ args0 ->
args0.let({ args0 -> args0.toJava() })
}),
)
.fastSocket(fastSocket?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
.gcfsConfig(gcfsConfig?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
.guestAccelerators(
guestAccelerators?.applyValue({ args0 ->
args0.map({ args0 ->
args0.let({ args0 ->
args0.toJava()
})
})
}),
)
.gvnic(gvnic?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
.hostMaintenancePolicy(
hostMaintenancePolicy?.applyValue({ args0 ->
args0.let({ args0 ->
args0.toJava()
})
}),
)
.imageType(imageType?.applyValue({ args0 -> args0 }))
.kubeletConfig(kubeletConfig?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
.labels(labels?.applyValue({ args0 -> args0.map({ args0 -> args0.key.to(args0.value) }).toMap() }))
.linuxNodeConfig(linuxNodeConfig?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
.localNvmeSsdBlockConfig(
localNvmeSsdBlockConfig?.applyValue({ args0 ->
args0.let({ args0 ->
args0.toJava()
})
}),
)
.localSsdCount(localSsdCount?.applyValue({ args0 -> args0 }))
.localSsdEncryptionMode(localSsdEncryptionMode?.applyValue({ args0 -> args0 }))
.loggingVariant(loggingVariant?.applyValue({ args0 -> args0 }))
.machineType(machineType?.applyValue({ args0 -> args0 }))
.metadata(
metadata?.applyValue({ args0 ->
args0.map({ args0 ->
args0.key.to(args0.value)
}).toMap()
}),
)
.minCpuPlatform(minCpuPlatform?.applyValue({ args0 -> args0 }))
.nodeGroup(nodeGroup?.applyValue({ args0 -> args0 }))
.oauthScopes(oauthScopes?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
.preemptible(preemptible?.applyValue({ args0 -> args0 }))
.reservationAffinity(
reservationAffinity?.applyValue({ args0 ->
args0.let({ args0 ->
args0.toJava()
})
}),
)
.resourceLabels(
resourceLabels?.applyValue({ args0 ->
args0.map({ args0 ->
args0.key.to(args0.value)
}).toMap()
}),
)
.resourceManagerTags(
resourceManagerTags?.applyValue({ args0 ->
args0.map({ args0 ->
args0.key.to(args0.value)
}).toMap()
}),
)
.sandboxConfig(sandboxConfig?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
.secondaryBootDisks(
secondaryBootDisks?.applyValue({ args0 ->
args0.map({ args0 ->
args0.let({ args0 -> args0.toJava() })
})
}),
)
.serviceAccount(serviceAccount?.applyValue({ args0 -> args0 }))
.shieldedInstanceConfig(
shieldedInstanceConfig?.applyValue({ args0 ->
args0.let({ args0 ->
args0.toJava()
})
}),
)
.soleTenantConfig(soleTenantConfig?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
.spot(spot?.applyValue({ args0 -> args0 }))
.storagePools(storagePools?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
.tags(tags?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
.taints(taints?.applyValue({ args0 -> args0.map({ args0 -> args0.let({ args0 -> args0.toJava() }) }) }))
.workloadMetadataConfig(
workloadMetadataConfig?.applyValue({ args0 ->
args0.let({ args0 ->
args0.toJava()
})
}),
).build()
}
/**
* Builder for [ClusterNodePoolNodeConfigArgs].
*/
@PulumiTagMarker
public class ClusterNodePoolNodeConfigArgsBuilder internal constructor() {
private var advancedMachineFeatures: Output? =
null
private var bootDiskKmsKey: Output? = null
private var confidentialNodes: Output? = null
private var containerdConfig: Output? = null
private var diskSizeGb: Output? = null
private var diskType: Output? = null
private var effectiveTaints: Output>? = null
private var enableConfidentialStorage: Output? = null
private var ephemeralStorageConfig: Output? =
null
private var ephemeralStorageLocalSsdConfig:
Output? = null
private var fastSocket: Output? = null
private var gcfsConfig: Output? = null
private var guestAccelerators: Output>? = null
private var gvnic: Output? = null
private var hostMaintenancePolicy: Output? =
null
private var imageType: Output? = null
private var kubeletConfig: Output? = null
private var labels: Output>? = null
private var linuxNodeConfig: Output? = null
private var localNvmeSsdBlockConfig: Output? =
null
private var localSsdCount: Output? = null
private var localSsdEncryptionMode: Output? = null
private var loggingVariant: Output? = null
private var machineType: Output? = null
private var metadata: Output>? = null
private var minCpuPlatform: Output? = null
private var nodeGroup: Output? = null
private var oauthScopes: Output>? = null
private var preemptible: Output? = null
private var reservationAffinity: Output? = null
private var resourceLabels: Output>? = null
private var resourceManagerTags: Output>? = null
private var sandboxConfig: Output? = null
private var secondaryBootDisks: Output>? =
null
private var serviceAccount: Output? = null
private var shieldedInstanceConfig: Output? =
null
private var soleTenantConfig: Output? = null
private var spot: Output? = null
private var storagePools: Output>? = null
private var tags: Output>? = null
private var taints: Output>? = null
private var workloadMetadataConfig: Output? =
null
/**
* @param value Specifies options for controlling
* advanced machine features. Structure is documented below.
*/
@JvmName("vfyximqaohcgaewl")
public suspend fun advancedMachineFeatures(`value`: Output) {
this.advancedMachineFeatures = value
}
/**
* @param value The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. For more information about protecting resources with Cloud KMS Keys please see:
*/
@JvmName("fycsvhvmkbacarmn")
public suspend fun bootDiskKmsKey(`value`: Output) {
this.bootDiskKmsKey = value
}
/**
* @param value Configuration for Confidential Nodes feature. Structure is documented below.
*/
@JvmName("cjlphurfsuyjcqnk")
public suspend fun confidentialNodes(`value`: Output) {
this.confidentialNodes = value
}
/**
* @param value Parameters to customize containerd runtime. Structure is documented below.
*/
@JvmName("pekhocqrqprvcmvk")
public suspend fun containerdConfig(`value`: Output) {
this.containerdConfig = value
}
/**
* @param value Size of the disk attached to each node, specified
* in GB. The smallest allowed disk size is 10GB. Defaults to 100GB.
*/
@JvmName("wsgwpsouncniducp")
public suspend fun diskSizeGb(`value`: Output) {
this.diskSizeGb = value
}
/**
* @param value Type of the disk attached to each node
* (e.g. 'pd-standard', 'pd-balanced' or 'pd-ssd'). If unspecified, the default disk type is 'pd-standard'
*/
@JvmName("oacldcmvyfkgskuy")
public suspend fun diskType(`value`: Output) {
this.diskType = value
}
/**
* @param value List of kubernetes taints applied to each node. Structure is documented above.
*/
@JvmName("nawovitmqkonwgke")
public suspend fun effectiveTaints(`value`: Output>) {
this.effectiveTaints = value
}
@JvmName("rgyovwihadmxpchr")
public suspend fun effectiveTaints(vararg values: Output) {
this.effectiveTaints = Output.all(values.asList())
}
/**
* @param values List of kubernetes taints applied to each node. Structure is documented above.
*/
@JvmName("ueaxepchplkvcjje")
public suspend fun effectiveTaints(values: List>) {
this.effectiveTaints = Output.all(values)
}
/**
* @param value Enabling Confidential Storage will create boot disk with confidential mode. It is disabled by default.
*/
@JvmName("chcwxulwefylyxqs")
public suspend fun enableConfidentialStorage(`value`: Output) {
this.enableConfidentialStorage = value
}
/**
* @param value Parameters for the ephemeral storage filesystem. If unspecified, ephemeral storage is backed by the boot disk. Structure is documented below.
*/
@JvmName("pudnjtmfndmlacwt")
public suspend fun ephemeralStorageConfig(`value`: Output) {
this.ephemeralStorageConfig = value
}
/**
* @param value Parameters for the ephemeral storage filesystem. If unspecified, ephemeral storage is backed by the boot disk. Structure is documented below.
*/
@JvmName("ovcayaekfqixehra")
public suspend fun ephemeralStorageLocalSsdConfig(`value`: Output) {
this.ephemeralStorageLocalSsdConfig = value
}
/**
* @param value Parameters for the NCCL Fast Socket feature. If unspecified, NCCL Fast Socket will not be enabled on the node pool.
* Node Pool must enable gvnic.
* GKE version 1.25.2-gke.1700 or later.
* Structure is documented below.
*/
@JvmName("ejugajavlcoroyrn")
public suspend fun fastSocket(`value`: Output) {
this.fastSocket = value
}
/**
* @param value Parameters for the Google Container Filesystem (GCFS).
* If unspecified, GCFS will not be enabled on the node pool. When enabling this feature you must specify `image_type = "COS_CONTAINERD"` and `node_version` from GKE versions 1.19 or later to use it.
* For GKE versions 1.19, 1.20, and 1.21, the recommended minimum `node_version` would be 1.19.15-gke.1300, 1.20.11-gke.1300, and 1.21.5-gke.1300 respectively.
* A `machine_type` that has more than 16 GiB of memory is also recommended.
* GCFS must be enabled in order to use [image streaming](https://cloud.google.com/kubernetes-engine/docs/how-to/image-streaming).
* Structure is documented below.
*/
@JvmName("dwvrqpraqhnobsph")
public suspend fun gcfsConfig(`value`: Output) {
this.gcfsConfig = value
}
/**
* @param value List of the type and count of accelerator cards attached to the instance.
* Structure documented below.
*/
@JvmName("ajmarclcawivvhnt")
public suspend fun guestAccelerators(`value`: Output>) {
this.guestAccelerators = value
}
@JvmName("fkkfjokatyntfedy")
public suspend fun guestAccelerators(vararg values: Output) {
this.guestAccelerators = Output.all(values.asList())
}
/**
* @param values List of the type and count of accelerator cards attached to the instance.
* Structure documented below.
*/
@JvmName("mayecehwratownfl")
public suspend fun guestAccelerators(values: List>) {
this.guestAccelerators = Output.all(values)
}
/**
* @param value Google Virtual NIC (gVNIC) is a virtual network interface.
* Installing the gVNIC driver allows for more efficient traffic transmission across the Google network infrastructure.
* gVNIC is an alternative to the virtIO-based ethernet driver. GKE nodes must use a Container-Optimized OS node image.
* GKE node version 1.15.11-gke.15 or later
* Structure is documented below.
*/
@JvmName("foqbpbqbfhdvtrrb")
public suspend fun gvnic(`value`: Output) {
this.gvnic = value
}
/**
* @param value The maintenance policy for the hosts on which the GKE VMs run on.
*/
@JvmName("scofkebryhotghyx")
public suspend fun hostMaintenancePolicy(`value`: Output) {
this.hostMaintenancePolicy = value
}
/**
* @param value The image type to use for this node. Note that changing the image type
* will delete and recreate all nodes in the node pool.
*/
@JvmName("bilyomrkwwgpgnld")
public suspend fun imageType(`value`: Output) {
this.imageType = value
}
/**
* @param value Kubelet configuration, currently supported attributes can be found [here](https://cloud.google.com/sdk/gcloud/reference/beta/container/node-pools/create#--system-config-from-file).
* Structure is documented below.
* ```
* kubelet_config {
* cpu_manager_policy = "static"
* cpu_cfs_quota = true
* cpu_cfs_quota_period = "100us"
* pod_pids_limit = 1024
* }
* ```
*/
@JvmName("ivofxgmehihnlxjy")
public suspend fun kubeletConfig(`value`: Output) {
this.kubeletConfig = value
}
/**
* @param value The Kubernetes labels (key/value pairs) to be applied to each node. The kubernetes.io/ and k8s.io/ prefixes are
* reserved by Kubernetes Core components and cannot be specified.
*/
@JvmName("puvaiceqckprybuh")
public suspend fun labels(`value`: Output>) {
this.labels = value
}
/**
* @param value Parameters that can be configured on Linux nodes. Structure is documented below.
*/
@JvmName("quboqcdpbkmclphf")
public suspend fun linuxNodeConfig(`value`: Output) {
this.linuxNodeConfig = value
}
/**
* @param value Parameters for the local NVMe SSDs. Structure is documented below.
*/
@JvmName("ubwxdlmbggrqdwvy")
public suspend fun localNvmeSsdBlockConfig(`value`: Output) {
this.localNvmeSsdBlockConfig = value
}
/**
* @param value The amount of local SSD disks that will be
* attached to each cluster node. Defaults to 0.
*/
@JvmName("cxrhsjkqekevttds")
public suspend fun localSsdCount(`value`: Output) {
this.localSsdCount = value
}
/**
* @param value Possible Local SSD encryption modes:
* Accepted values are:
* * `STANDARD_ENCRYPTION`: The given node will be encrypted using keys managed by Google infrastructure and the keys wll be deleted when the node is deleted.
* * `EPHEMERAL_KEY_ENCRYPTION`: The given node will opt-in for using ephemeral key for encrypting Local SSDs. The Local SSDs will not be able to recover data in case of node crash.
*/
@JvmName("ogbayxwosjogemku")
public suspend fun localSsdEncryptionMode(`value`: Output) {
this.localSsdEncryptionMode = value
}
/**
* @param value Parameter for specifying the type of logging agent used in a node pool. This will override any cluster-wide default value. Valid values include DEFAULT and MAX_THROUGHPUT. See [Increasing logging agent throughput](https://cloud.google.com/stackdriver/docs/solutions/gke/managing-logs#throughput) for more information.
*/
@JvmName("bnnobdyvjfbtrgrh")
public suspend fun loggingVariant(`value`: Output) {
this.loggingVariant = value
}
/**
* @param value The name of a Google Compute Engine machine type.
* Defaults to `e2-medium`. To create a custom machine type, value should be set as specified
* [here](https://cloud.google.com/compute/docs/reference/latest/instances#machineType).
*/
@JvmName("efgpseyhngedrgbh")
public suspend fun machineType(`value`: Output) {
this.machineType = value
}
/**
* @param value The metadata key/value pairs assigned to instances in
* the cluster. From GKE `1.12` onwards, `disable-legacy-endpoints` is set to
* `true` by the API; if `metadata` is set but that default value is not
* included, the provider will attempt to unset the value. To avoid this, set the
* value in your config.
*/
@JvmName("antofvjmarhgvvpp")
public suspend fun metadata(`value`: Output>) {
this.metadata = value
}
/**
* @param value Minimum CPU platform to be used by this instance.
* The instance may be scheduled on the specified or newer CPU platform. Applicable
* values are the friendly names of CPU platforms, such as `Intel Haswell`. See the
* [official documentation](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform)
* for more information.
*/
@JvmName("ciqsfleblywigibr")
public suspend fun minCpuPlatform(`value`: Output) {
this.minCpuPlatform = value
}
/**
* @param value Setting this field will assign instances of this pool to run on the specified node group. This is useful for running workloads on [sole tenant nodes](https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes).
*/
@JvmName("bjfmqsthhimoqred")
public suspend fun nodeGroup(`value`: Output) {
this.nodeGroup = value
}
/**
* @param value The set of Google API scopes to be made available
* on all of the node VMs under the "default" service account.
* Use the "https://www.googleapis.com/auth/cloud-platform" scope to grant access to all APIs. It is recommended that you set `service_account` to a non-default service account and grant IAM roles to that service account for only the resources that it needs.
* See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/how-to/access-scopes) for information on migrating off of legacy access scopes.
*/
@JvmName("nnsbctvacuyofwjn")
public suspend fun oauthScopes(`value`: Output>) {
this.oauthScopes = value
}
@JvmName("uwbtctsgcksohqtq")
public suspend fun oauthScopes(vararg values: Output) {
this.oauthScopes = Output.all(values.asList())
}
/**
* @param values The set of Google API scopes to be made available
* on all of the node VMs under the "default" service account.
* Use the "https://www.googleapis.com/auth/cloud-platform" scope to grant access to all APIs. It is recommended that you set `service_account` to a non-default service account and grant IAM roles to that service account for only the resources that it needs.
* See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/how-to/access-scopes) for information on migrating off of legacy access scopes.
*/
@JvmName("ayoupigbappfjokq")
public suspend fun oauthScopes(values: List>) {
this.oauthScopes = Output.all(values)
}
/**
* @param value A boolean that represents whether or not the underlying node VMs
* are preemptible. See the [official documentation](https://cloud.google.com/container-engine/docs/preemptible-vm)
* for more information. Defaults to false.
*/
@JvmName("xuldpgfaafpubsdn")
public suspend fun preemptible(`value`: Output) {
this.preemptible = value
}
/**
* @param value The configuration of the desired reservation which instances could take capacity from. Structure is documented below.
*/
@JvmName("irafghlvulbwcttv")
public suspend fun reservationAffinity(`value`: Output) {
this.reservationAffinity = value
}
/**
* @param value The GCP labels (key/value pairs) to be applied to each node. Refer [here](https://cloud.google.com/kubernetes-engine/docs/how-to/creating-managing-labels)
* for how these labels are applied to clusters, node pools and nodes.
*/
@JvmName("lhqumnvldkliqgoo")
public suspend fun resourceLabels(`value`: Output>) {
this.resourceLabels = value
}
/**
* @param value A map of resource manager tag keys and values to be attached to the nodes for managing Compute Engine firewalls using Network Firewall Policies. Tags must be according to specifications found [here](https://cloud.google.com/vpc/docs/tags-firewalls-overview#specifications). A maximum of 5 tag key-value pairs can be specified. Existing tags will be replaced with new values. Tags must be in one of the following formats ([KEY]=[VALUE]) 1. `tagKeys/{tag_key_id}=tagValues/{tag_value_id}` 2. `{org_id}/{tag_key_name}={tag_value_name}` 3. `{project_id}/{tag_key_name}={tag_value_name}`.
*/
@JvmName("ljectshkadsmohwm")
public suspend fun resourceManagerTags(`value`: Output>) {
this.resourceManagerTags = value
}
/**
* @param value Sandbox configuration for this node.
*/
@JvmName("sxmxssywgbldhplv")
public suspend fun sandboxConfig(`value`: Output) {
this.sandboxConfig = value
}
/**
* @param value Parameters for secondary boot disks to preload container images and data on new nodes. Structure is documented below. `gcfs_config` must be `enabled=true` for this feature to work. `min_master_version` must also be set to use GKE 1.28.3-gke.106700 or later versions.
*/
@JvmName("bsahbrdofwejvrqi")
public suspend fun secondaryBootDisks(`value`: Output>) {
this.secondaryBootDisks = value
}
@JvmName("umhygqejikcxivaf")
public suspend fun secondaryBootDisks(vararg values: Output) {
this.secondaryBootDisks = Output.all(values.asList())
}
/**
* @param values Parameters for secondary boot disks to preload container images and data on new nodes. Structure is documented below. `gcfs_config` must be `enabled=true` for this feature to work. `min_master_version` must also be set to use GKE 1.28.3-gke.106700 or later versions.
*/
@JvmName("egatmsdfcvkcbbmg")
public suspend fun secondaryBootDisks(values: List>) {
this.secondaryBootDisks = Output.all(values)
}
/**
* @param value The service account to be used by the Node VMs.
* If not specified, the "default" service account is used.
*/
@JvmName("qqligndyfvcxabaf")
public suspend fun serviceAccount(`value`: Output) {
this.serviceAccount = value
}
/**
* @param value Shielded Instance options. Structure is documented below.
*/
@JvmName("ahwjtdcgvsbgmdgl")
public suspend fun shieldedInstanceConfig(`value`: Output) {
this.shieldedInstanceConfig = value
}
/**
* @param value Allows specifying multiple [node affinities](https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes#node_affinity_and_anti-affinity) useful for running workloads on [sole tenant nodes](https://cloud.google.com/kubernetes-engine/docs/how-to/sole-tenancy). `node_affinity` structure is documented below.
*/
@JvmName("yiysgaitkcxrngio")
public suspend fun soleTenantConfig(`value`: Output) {
this.soleTenantConfig = value
}
/**
* @param value A boolean that represents whether the underlying node VMs are spot.
* See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms)
* for more information. Defaults to false.
*/
@JvmName("gsnalbwkvaqdnjga")
public suspend fun spot(`value`: Output) {
this.spot = value
}
/**
* @param value The list of Storage Pools where boot disks are provisioned.
*/
@JvmName("grxwdtnfvwigyymv")
public suspend fun storagePools(`value`: Output>) {
this.storagePools = value
}
@JvmName("vnhnkxgyrkwtjwjy")
public suspend fun storagePools(vararg values: Output) {
this.storagePools = Output.all(values.asList())
}
/**
* @param values The list of Storage Pools where boot disks are provisioned.
*/
@JvmName("rnqvyepbhrrsqcnj")
public suspend fun storagePools(values: List>) {
this.storagePools = Output.all(values)
}
/**
* @param value The list of instance tags applied to all nodes. Tags are used to identify
* valid sources or targets for network firewalls.
*/
@JvmName("tebkxowhptjepklh")
public suspend fun tags(`value`: Output>) {
this.tags = value
}
@JvmName("uhacyvsrgmhdbewm")
public suspend fun tags(vararg values: Output) {
this.tags = Output.all(values.asList())
}
/**
* @param values The list of instance tags applied to all nodes. Tags are used to identify
* valid sources or targets for network firewalls.
*/
@JvmName("hpxfxldvqaigfnua")
public suspend fun tags(values: List>) {
this.tags = Output.all(values)
}
/**
* @param value A list of [Kubernetes taints](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/)
* to apply to nodes. GKE's API can only set this field on cluster creation.
* However, GKE will add taints to your nodes if you enable certain features such
* as GPUs. If this field is set, any diffs on this field will cause the provider to
* recreate the underlying resource. Taint values can be updated safely in
* Kubernetes (eg. through `kubectl`), and it's recommended that you do not use
* this field to manage taints. If you do, `lifecycle.ignore_changes` is
* recommended. Structure is documented below.
*/
@JvmName("poujxrptebsegwgc")
public suspend fun taints(`value`: Output>) {
this.taints = value
}
@JvmName("wauuiojgxmcacrye")
public suspend fun taints(vararg values: Output) {
this.taints = Output.all(values.asList())
}
/**
* @param values A list of [Kubernetes taints](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/)
* to apply to nodes. GKE's API can only set this field on cluster creation.
* However, GKE will add taints to your nodes if you enable certain features such
* as GPUs. If this field is set, any diffs on this field will cause the provider to
* recreate the underlying resource. Taint values can be updated safely in
* Kubernetes (eg. through `kubectl`), and it's recommended that you do not use
* this field to manage taints. If you do, `lifecycle.ignore_changes` is
* recommended. Structure is documented below.
*/
@JvmName("ytvlegkelenkffsv")
public suspend fun taints(values: List>) {
this.taints = Output.all(values)
}
/**
* @param value Metadata configuration to expose to workloads on the node pool.
* Structure is documented below.
*/
@JvmName("jdfducbxkyrkltwm")
public suspend fun workloadMetadataConfig(`value`: Output) {
this.workloadMetadataConfig = value
}
/**
* @param value Specifies options for controlling
* advanced machine features. Structure is documented below.
*/
@JvmName("mkrdkskxwgqvfrrs")
public suspend fun advancedMachineFeatures(`value`: ClusterNodePoolNodeConfigAdvancedMachineFeaturesArgs?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.advancedMachineFeatures = mapped
}
/**
* @param argument Specifies options for controlling
* advanced machine features. Structure is documented below.
*/
@JvmName("bswbgwqlblyhqfyk")
public suspend fun advancedMachineFeatures(argument: suspend ClusterNodePoolNodeConfigAdvancedMachineFeaturesArgsBuilder.() -> Unit) {
val toBeMapped = ClusterNodePoolNodeConfigAdvancedMachineFeaturesArgsBuilder().applySuspend {
argument()
}.build()
val mapped = of(toBeMapped)
this.advancedMachineFeatures = mapped
}
/**
* @param value The Customer Managed Encryption Key used to encrypt the boot disk attached to each node in the node pool. This should be of the form projects/[KEY_PROJECT_ID]/locations/[LOCATION]/keyRings/[RING_NAME]/cryptoKeys/[KEY_NAME]. For more information about protecting resources with Cloud KMS Keys please see:
*/
@JvmName("hntbnhpmlkhyxiiu")
public suspend fun bootDiskKmsKey(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.bootDiskKmsKey = mapped
}
/**
* @param value Configuration for Confidential Nodes feature. Structure is documented below.
*/
@JvmName("lvonkhisidfdtepg")
public suspend fun confidentialNodes(`value`: ClusterNodePoolNodeConfigConfidentialNodesArgs?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.confidentialNodes = mapped
}
/**
* @param argument Configuration for Confidential Nodes feature. Structure is documented below.
*/
@JvmName("vihdgbxycrqpjxkv")
public suspend fun confidentialNodes(argument: suspend ClusterNodePoolNodeConfigConfidentialNodesArgsBuilder.() -> Unit) {
val toBeMapped = ClusterNodePoolNodeConfigConfidentialNodesArgsBuilder().applySuspend {
argument()
}.build()
val mapped = of(toBeMapped)
this.confidentialNodes = mapped
}
/**
* @param value Parameters to customize containerd runtime. Structure is documented below.
*/
@JvmName("pndibqmgpuaxjlha")
public suspend fun containerdConfig(`value`: ClusterNodePoolNodeConfigContainerdConfigArgs?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.containerdConfig = mapped
}
/**
* @param argument Parameters to customize containerd runtime. Structure is documented below.
*/
@JvmName("nbwlroxlfleexrek")
public suspend fun containerdConfig(argument: suspend ClusterNodePoolNodeConfigContainerdConfigArgsBuilder.() -> Unit) {
val toBeMapped = ClusterNodePoolNodeConfigContainerdConfigArgsBuilder().applySuspend {
argument()
}.build()
val mapped = of(toBeMapped)
this.containerdConfig = mapped
}
/**
* @param value Size of the disk attached to each node, specified
* in GB. The smallest allowed disk size is 10GB. Defaults to 100GB.
*/
@JvmName("cdhovftdlgnnsfmw")
public suspend fun diskSizeGb(`value`: Int?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.diskSizeGb = mapped
}
/**
* @param value Type of the disk attached to each node
* (e.g. 'pd-standard', 'pd-balanced' or 'pd-ssd'). If unspecified, the default disk type is 'pd-standard'
*/
@JvmName("pgvwneqlxpubiown")
public suspend fun diskType(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.diskType = mapped
}
/**
* @param value List of kubernetes taints applied to each node. Structure is documented above.
*/
@JvmName("mkrcpgorytyuvblq")
public suspend fun effectiveTaints(`value`: List?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.effectiveTaints = mapped
}
/**
* @param argument List of kubernetes taints applied to each node. Structure is documented above.
*/
@JvmName("sponaxvtglyrroal")
public suspend fun effectiveTaints(argument: List Unit>) {
val toBeMapped = argument.toList().map {
ClusterNodePoolNodeConfigEffectiveTaintArgsBuilder().applySuspend { it() }.build()
}
val mapped = of(toBeMapped)
this.effectiveTaints = mapped
}
/**
* @param argument List of kubernetes taints applied to each node. Structure is documented above.
*/
@JvmName("ooodrclrhogdgjnf")
public suspend fun effectiveTaints(vararg argument: suspend ClusterNodePoolNodeConfigEffectiveTaintArgsBuilder.() -> Unit) {
val toBeMapped = argument.toList().map {
ClusterNodePoolNodeConfigEffectiveTaintArgsBuilder().applySuspend { it() }.build()
}
val mapped = of(toBeMapped)
this.effectiveTaints = mapped
}
/**
* @param argument List of kubernetes taints applied to each node. Structure is documented above.
*/
@JvmName("niqegjevfkuiqraf")
public suspend fun effectiveTaints(argument: suspend ClusterNodePoolNodeConfigEffectiveTaintArgsBuilder.() -> Unit) {
val toBeMapped = listOf(
ClusterNodePoolNodeConfigEffectiveTaintArgsBuilder().applySuspend {
argument()
}.build(),
)
val mapped = of(toBeMapped)
this.effectiveTaints = mapped
}
/**
* @param values List of kubernetes taints applied to each node. Structure is documented above.
*/
@JvmName("vipfnheftsykmrkx")
public suspend fun effectiveTaints(vararg values: ClusterNodePoolNodeConfigEffectiveTaintArgs) {
val toBeMapped = values.toList()
val mapped = toBeMapped.let({ args0 -> of(args0) })
this.effectiveTaints = mapped
}
/**
* @param value Enabling Confidential Storage will create boot disk with confidential mode. It is disabled by default.
*/
@JvmName("blnersbukwbpeytw")
public suspend fun enableConfidentialStorage(`value`: Boolean?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.enableConfidentialStorage = mapped
}
/**
* @param value Parameters for the ephemeral storage filesystem. If unspecified, ephemeral storage is backed by the boot disk. Structure is documented below.
*/
@JvmName("htkkulmtdjvsiwjk")
public suspend fun ephemeralStorageConfig(`value`: ClusterNodePoolNodeConfigEphemeralStorageConfigArgs?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.ephemeralStorageConfig = mapped
}
/**
* @param argument Parameters for the ephemeral storage filesystem. If unspecified, ephemeral storage is backed by the boot disk. Structure is documented below.
*/
@JvmName("maicpkihnybqruun")
public suspend fun ephemeralStorageConfig(argument: suspend ClusterNodePoolNodeConfigEphemeralStorageConfigArgsBuilder.() -> Unit) {
val toBeMapped = ClusterNodePoolNodeConfigEphemeralStorageConfigArgsBuilder().applySuspend {
argument()
}.build()
val mapped = of(toBeMapped)
this.ephemeralStorageConfig = mapped
}
/**
* @param value Parameters for the ephemeral storage filesystem. If unspecified, ephemeral storage is backed by the boot disk. Structure is documented below.
*/
@JvmName("bonmhgfaigowfrmw")
public suspend fun ephemeralStorageLocalSsdConfig(`value`: ClusterNodePoolNodeConfigEphemeralStorageLocalSsdConfigArgs?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.ephemeralStorageLocalSsdConfig = mapped
}
/**
* @param argument Parameters for the ephemeral storage filesystem. If unspecified, ephemeral storage is backed by the boot disk. Structure is documented below.
*/
@JvmName("ejvsfiwdndqvnynt")
public suspend fun ephemeralStorageLocalSsdConfig(argument: suspend ClusterNodePoolNodeConfigEphemeralStorageLocalSsdConfigArgsBuilder.() -> Unit) {
val toBeMapped =
ClusterNodePoolNodeConfigEphemeralStorageLocalSsdConfigArgsBuilder().applySuspend {
argument()
}.build()
val mapped = of(toBeMapped)
this.ephemeralStorageLocalSsdConfig = mapped
}
/**
* @param value Parameters for the NCCL Fast Socket feature. If unspecified, NCCL Fast Socket will not be enabled on the node pool.
* Node Pool must enable gvnic.
* GKE version 1.25.2-gke.1700 or later.
* Structure is documented below.
*/
@JvmName("cakscrodmjvbubid")
public suspend fun fastSocket(`value`: ClusterNodePoolNodeConfigFastSocketArgs?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.fastSocket = mapped
}
/**
* @param argument Parameters for the NCCL Fast Socket feature. If unspecified, NCCL Fast Socket will not be enabled on the node pool.
* Node Pool must enable gvnic.
* GKE version 1.25.2-gke.1700 or later.
* Structure is documented below.
*/
@JvmName("tvyiqgvovmdwtetu")
public suspend fun fastSocket(argument: suspend ClusterNodePoolNodeConfigFastSocketArgsBuilder.() -> Unit) {
val toBeMapped = ClusterNodePoolNodeConfigFastSocketArgsBuilder().applySuspend {
argument()
}.build()
val mapped = of(toBeMapped)
this.fastSocket = mapped
}
/**
* @param value Parameters for the Google Container Filesystem (GCFS).
* If unspecified, GCFS will not be enabled on the node pool. When enabling this feature you must specify `image_type = "COS_CONTAINERD"` and `node_version` from GKE versions 1.19 or later to use it.
* For GKE versions 1.19, 1.20, and 1.21, the recommended minimum `node_version` would be 1.19.15-gke.1300, 1.20.11-gke.1300, and 1.21.5-gke.1300 respectively.
* A `machine_type` that has more than 16 GiB of memory is also recommended.
* GCFS must be enabled in order to use [image streaming](https://cloud.google.com/kubernetes-engine/docs/how-to/image-streaming).
* Structure is documented below.
*/
@JvmName("wbdrwbnmrruqfqjm")
public suspend fun gcfsConfig(`value`: ClusterNodePoolNodeConfigGcfsConfigArgs?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.gcfsConfig = mapped
}
/**
* @param argument Parameters for the Google Container Filesystem (GCFS).
* If unspecified, GCFS will not be enabled on the node pool. When enabling this feature you must specify `image_type = "COS_CONTAINERD"` and `node_version` from GKE versions 1.19 or later to use it.
* For GKE versions 1.19, 1.20, and 1.21, the recommended minimum `node_version` would be 1.19.15-gke.1300, 1.20.11-gke.1300, and 1.21.5-gke.1300 respectively.
* A `machine_type` that has more than 16 GiB of memory is also recommended.
* GCFS must be enabled in order to use [image streaming](https://cloud.google.com/kubernetes-engine/docs/how-to/image-streaming).
* Structure is documented below.
*/
@JvmName("uhbxxwirynpqblah")
public suspend fun gcfsConfig(argument: suspend ClusterNodePoolNodeConfigGcfsConfigArgsBuilder.() -> Unit) {
val toBeMapped = ClusterNodePoolNodeConfigGcfsConfigArgsBuilder().applySuspend {
argument()
}.build()
val mapped = of(toBeMapped)
this.gcfsConfig = mapped
}
/**
* @param value List of the type and count of accelerator cards attached to the instance.
* Structure documented below.
*/
@JvmName("kqfetvaakekbnmlr")
public suspend fun guestAccelerators(`value`: List?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.guestAccelerators = mapped
}
/**
* @param argument List of the type and count of accelerator cards attached to the instance.
* Structure documented below.
*/
@JvmName("nnmrcqwprgsrbgiw")
public suspend fun guestAccelerators(argument: List Unit>) {
val toBeMapped = argument.toList().map {
ClusterNodePoolNodeConfigGuestAcceleratorArgsBuilder().applySuspend { it() }.build()
}
val mapped = of(toBeMapped)
this.guestAccelerators = mapped
}
/**
* @param argument List of the type and count of accelerator cards attached to the instance.
* Structure documented below.
*/
@JvmName("mvsqfbnckuwgfleg")
public suspend fun guestAccelerators(vararg argument: suspend ClusterNodePoolNodeConfigGuestAcceleratorArgsBuilder.() -> Unit) {
val toBeMapped = argument.toList().map {
ClusterNodePoolNodeConfigGuestAcceleratorArgsBuilder().applySuspend { it() }.build()
}
val mapped = of(toBeMapped)
this.guestAccelerators = mapped
}
/**
* @param argument List of the type and count of accelerator cards attached to the instance.
* Structure documented below.
*/
@JvmName("yyxrhwfmjumjebcm")
public suspend fun guestAccelerators(argument: suspend ClusterNodePoolNodeConfigGuestAcceleratorArgsBuilder.() -> Unit) {
val toBeMapped = listOf(
ClusterNodePoolNodeConfigGuestAcceleratorArgsBuilder().applySuspend {
argument()
}.build(),
)
val mapped = of(toBeMapped)
this.guestAccelerators = mapped
}
/**
* @param values List of the type and count of accelerator cards attached to the instance.
* Structure documented below.
*/
@JvmName("kmophnhbpxtoafit")
public suspend fun guestAccelerators(vararg values: ClusterNodePoolNodeConfigGuestAcceleratorArgs) {
val toBeMapped = values.toList()
val mapped = toBeMapped.let({ args0 -> of(args0) })
this.guestAccelerators = mapped
}
/**
* @param value Google Virtual NIC (gVNIC) is a virtual network interface.
* Installing the gVNIC driver allows for more efficient traffic transmission across the Google network infrastructure.
* gVNIC is an alternative to the virtIO-based ethernet driver. GKE nodes must use a Container-Optimized OS node image.
* GKE node version 1.15.11-gke.15 or later
* Structure is documented below.
*/
@JvmName("ernaeprqnoqdrnsm")
public suspend fun gvnic(`value`: ClusterNodePoolNodeConfigGvnicArgs?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.gvnic = mapped
}
/**
* @param argument Google Virtual NIC (gVNIC) is a virtual network interface.
* Installing the gVNIC driver allows for more efficient traffic transmission across the Google network infrastructure.
* gVNIC is an alternative to the virtIO-based ethernet driver. GKE nodes must use a Container-Optimized OS node image.
* GKE node version 1.15.11-gke.15 or later
* Structure is documented below.
*/
@JvmName("kywxqanachlrhbds")
public suspend fun gvnic(argument: suspend ClusterNodePoolNodeConfigGvnicArgsBuilder.() -> Unit) {
val toBeMapped = ClusterNodePoolNodeConfigGvnicArgsBuilder().applySuspend { argument() }.build()
val mapped = of(toBeMapped)
this.gvnic = mapped
}
/**
* @param value The maintenance policy for the hosts on which the GKE VMs run on.
*/
@JvmName("xhcvvhxdotbdavej")
public suspend fun hostMaintenancePolicy(`value`: ClusterNodePoolNodeConfigHostMaintenancePolicyArgs?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.hostMaintenancePolicy = mapped
}
/**
* @param argument The maintenance policy for the hosts on which the GKE VMs run on.
*/
@JvmName("crfhutmuejfrhjrr")
public suspend fun hostMaintenancePolicy(argument: suspend ClusterNodePoolNodeConfigHostMaintenancePolicyArgsBuilder.() -> Unit) {
val toBeMapped = ClusterNodePoolNodeConfigHostMaintenancePolicyArgsBuilder().applySuspend {
argument()
}.build()
val mapped = of(toBeMapped)
this.hostMaintenancePolicy = mapped
}
/**
* @param value The image type to use for this node. Note that changing the image type
* will delete and recreate all nodes in the node pool.
*/
@JvmName("bmupbkvmukmdkfnj")
public suspend fun imageType(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.imageType = mapped
}
/**
* @param value Kubelet configuration, currently supported attributes can be found [here](https://cloud.google.com/sdk/gcloud/reference/beta/container/node-pools/create#--system-config-from-file).
* Structure is documented below.
* ```
* kubelet_config {
* cpu_manager_policy = "static"
* cpu_cfs_quota = true
* cpu_cfs_quota_period = "100us"
* pod_pids_limit = 1024
* }
* ```
*/
@JvmName("cpvllxmbskgsfmvh")
public suspend fun kubeletConfig(`value`: ClusterNodePoolNodeConfigKubeletConfigArgs?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.kubeletConfig = mapped
}
/**
* @param argument Kubelet configuration, currently supported attributes can be found [here](https://cloud.google.com/sdk/gcloud/reference/beta/container/node-pools/create#--system-config-from-file).
* Structure is documented below.
* ```
* kubelet_config {
* cpu_manager_policy = "static"
* cpu_cfs_quota = true
* cpu_cfs_quota_period = "100us"
* pod_pids_limit = 1024
* }
* ```
*/
@JvmName("ehgubjhdiadojqkj")
public suspend fun kubeletConfig(argument: suspend ClusterNodePoolNodeConfigKubeletConfigArgsBuilder.() -> Unit) {
val toBeMapped = ClusterNodePoolNodeConfigKubeletConfigArgsBuilder().applySuspend {
argument()
}.build()
val mapped = of(toBeMapped)
this.kubeletConfig = mapped
}
/**
* @param value The Kubernetes labels (key/value pairs) to be applied to each node. The kubernetes.io/ and k8s.io/ prefixes are
* reserved by Kubernetes Core components and cannot be specified.
*/
@JvmName("jtstvcuhmeaddxbf")
public suspend fun labels(`value`: Map?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.labels = mapped
}
/**
* @param values The Kubernetes labels (key/value pairs) to be applied to each node. The kubernetes.io/ and k8s.io/ prefixes are
* reserved by Kubernetes Core components and cannot be specified.
*/
@JvmName("jrnpxrievbceejwf")
public fun labels(vararg values: Pair) {
val toBeMapped = values.toMap()
val mapped = toBeMapped.let({ args0 -> of(args0) })
this.labels = mapped
}
/**
* @param value Parameters that can be configured on Linux nodes. Structure is documented below.
*/
@JvmName("dyogjkfrepsmkuur")
public suspend fun linuxNodeConfig(`value`: ClusterNodePoolNodeConfigLinuxNodeConfigArgs?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.linuxNodeConfig = mapped
}
/**
* @param argument Parameters that can be configured on Linux nodes. Structure is documented below.
*/
@JvmName("nmengrvykumdvtna")
public suspend fun linuxNodeConfig(argument: suspend ClusterNodePoolNodeConfigLinuxNodeConfigArgsBuilder.() -> Unit) {
val toBeMapped = ClusterNodePoolNodeConfigLinuxNodeConfigArgsBuilder().applySuspend {
argument()
}.build()
val mapped = of(toBeMapped)
this.linuxNodeConfig = mapped
}
/**
* @param value Parameters for the local NVMe SSDs. Structure is documented below.
*/
@JvmName("ooykojrmsrbiunxa")
public suspend fun localNvmeSsdBlockConfig(`value`: ClusterNodePoolNodeConfigLocalNvmeSsdBlockConfigArgs?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.localNvmeSsdBlockConfig = mapped
}
/**
* @param argument Parameters for the local NVMe SSDs. Structure is documented below.
*/
@JvmName("uxijdvajctiougyg")
public suspend fun localNvmeSsdBlockConfig(argument: suspend ClusterNodePoolNodeConfigLocalNvmeSsdBlockConfigArgsBuilder.() -> Unit) {
val toBeMapped = ClusterNodePoolNodeConfigLocalNvmeSsdBlockConfigArgsBuilder().applySuspend {
argument()
}.build()
val mapped = of(toBeMapped)
this.localNvmeSsdBlockConfig = mapped
}
/**
* @param value The amount of local SSD disks that will be
* attached to each cluster node. Defaults to 0.
*/
@JvmName("nyiajcxctvwcdlcw")
public suspend fun localSsdCount(`value`: Int?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.localSsdCount = mapped
}
/**
* @param value Possible Local SSD encryption modes:
* Accepted values are:
* * `STANDARD_ENCRYPTION`: The given node will be encrypted using keys managed by Google infrastructure and the keys wll be deleted when the node is deleted.
* * `EPHEMERAL_KEY_ENCRYPTION`: The given node will opt-in for using ephemeral key for encrypting Local SSDs. The Local SSDs will not be able to recover data in case of node crash.
*/
@JvmName("bxdbqlfkmerptfmo")
public suspend fun localSsdEncryptionMode(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.localSsdEncryptionMode = mapped
}
/**
* @param value Parameter for specifying the type of logging agent used in a node pool. This will override any cluster-wide default value. Valid values include DEFAULT and MAX_THROUGHPUT. See [Increasing logging agent throughput](https://cloud.google.com/stackdriver/docs/solutions/gke/managing-logs#throughput) for more information.
*/
@JvmName("kgwrfytkohlosbtm")
public suspend fun loggingVariant(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.loggingVariant = mapped
}
/**
* @param value The name of a Google Compute Engine machine type.
* Defaults to `e2-medium`. To create a custom machine type, value should be set as specified
* [here](https://cloud.google.com/compute/docs/reference/latest/instances#machineType).
*/
@JvmName("rajireijawtvgfpi")
public suspend fun machineType(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.machineType = mapped
}
/**
* @param value The metadata key/value pairs assigned to instances in
* the cluster. From GKE `1.12` onwards, `disable-legacy-endpoints` is set to
* `true` by the API; if `metadata` is set but that default value is not
* included, the provider will attempt to unset the value. To avoid this, set the
* value in your config.
*/
@JvmName("dpyksvydacbyboqp")
public suspend fun metadata(`value`: Map?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.metadata = mapped
}
/**
* @param values The metadata key/value pairs assigned to instances in
* the cluster. From GKE `1.12` onwards, `disable-legacy-endpoints` is set to
* `true` by the API; if `metadata` is set but that default value is not
* included, the provider will attempt to unset the value. To avoid this, set the
* value in your config.
*/
@JvmName("fdgkadawqlqiadag")
public fun metadata(vararg values: Pair) {
val toBeMapped = values.toMap()
val mapped = toBeMapped.let({ args0 -> of(args0) })
this.metadata = mapped
}
/**
* @param value Minimum CPU platform to be used by this instance.
* The instance may be scheduled on the specified or newer CPU platform. Applicable
* values are the friendly names of CPU platforms, such as `Intel Haswell`. See the
* [official documentation](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform)
* for more information.
*/
@JvmName("wscfqkpojpdurwcf")
public suspend fun minCpuPlatform(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.minCpuPlatform = mapped
}
/**
* @param value Setting this field will assign instances of this pool to run on the specified node group. This is useful for running workloads on [sole tenant nodes](https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes).
*/
@JvmName("xewylhlqpsskllus")
public suspend fun nodeGroup(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.nodeGroup = mapped
}
/**
* @param value The set of Google API scopes to be made available
* on all of the node VMs under the "default" service account.
* Use the "https://www.googleapis.com/auth/cloud-platform" scope to grant access to all APIs. It is recommended that you set `service_account` to a non-default service account and grant IAM roles to that service account for only the resources that it needs.
* See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/how-to/access-scopes) for information on migrating off of legacy access scopes.
*/
@JvmName("qewfuoaoqtagnytu")
public suspend fun oauthScopes(`value`: List?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.oauthScopes = mapped
}
/**
* @param values The set of Google API scopes to be made available
* on all of the node VMs under the "default" service account.
* Use the "https://www.googleapis.com/auth/cloud-platform" scope to grant access to all APIs. It is recommended that you set `service_account` to a non-default service account and grant IAM roles to that service account for only the resources that it needs.
* See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/how-to/access-scopes) for information on migrating off of legacy access scopes.
*/
@JvmName("tnrwgmmirorhfnsl")
public suspend fun oauthScopes(vararg values: String) {
val toBeMapped = values.toList()
val mapped = toBeMapped.let({ args0 -> of(args0) })
this.oauthScopes = mapped
}
/**
* @param value A boolean that represents whether or not the underlying node VMs
* are preemptible. See the [official documentation](https://cloud.google.com/container-engine/docs/preemptible-vm)
* for more information. Defaults to false.
*/
@JvmName("wttmeroawdjqbdgo")
public suspend fun preemptible(`value`: Boolean?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.preemptible = mapped
}
/**
* @param value The configuration of the desired reservation which instances could take capacity from. Structure is documented below.
*/
@JvmName("iaqoubiwvoqoftjy")
public suspend fun reservationAffinity(`value`: ClusterNodePoolNodeConfigReservationAffinityArgs?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.reservationAffinity = mapped
}
/**
* @param argument The configuration of the desired reservation which instances could take capacity from. Structure is documented below.
*/
@JvmName("watvommtbpqrucew")
public suspend fun reservationAffinity(argument: suspend ClusterNodePoolNodeConfigReservationAffinityArgsBuilder.() -> Unit) {
val toBeMapped = ClusterNodePoolNodeConfigReservationAffinityArgsBuilder().applySuspend {
argument()
}.build()
val mapped = of(toBeMapped)
this.reservationAffinity = mapped
}
/**
* @param value The GCP labels (key/value pairs) to be applied to each node. Refer [here](https://cloud.google.com/kubernetes-engine/docs/how-to/creating-managing-labels)
* for how these labels are applied to clusters, node pools and nodes.
*/
@JvmName("ghotvrmyhfiitjnw")
public suspend fun resourceLabels(`value`: Map?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.resourceLabels = mapped
}
/**
* @param values The GCP labels (key/value pairs) to be applied to each node. Refer [here](https://cloud.google.com/kubernetes-engine/docs/how-to/creating-managing-labels)
* for how these labels are applied to clusters, node pools and nodes.
*/
@JvmName("pyudhglsnxaypgsn")
public fun resourceLabels(vararg values: Pair) {
val toBeMapped = values.toMap()
val mapped = toBeMapped.let({ args0 -> of(args0) })
this.resourceLabels = mapped
}
/**
* @param value A map of resource manager tag keys and values to be attached to the nodes for managing Compute Engine firewalls using Network Firewall Policies. Tags must be according to specifications found [here](https://cloud.google.com/vpc/docs/tags-firewalls-overview#specifications). A maximum of 5 tag key-value pairs can be specified. Existing tags will be replaced with new values. Tags must be in one of the following formats ([KEY]=[VALUE]) 1. `tagKeys/{tag_key_id}=tagValues/{tag_value_id}` 2. `{org_id}/{tag_key_name}={tag_value_name}` 3. `{project_id}/{tag_key_name}={tag_value_name}`.
*/
@JvmName("vynmpytlfjnvgiwg")
public suspend fun resourceManagerTags(`value`: Map?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.resourceManagerTags = mapped
}
/**
* @param values A map of resource manager tag keys and values to be attached to the nodes for managing Compute Engine firewalls using Network Firewall Policies. Tags must be according to specifications found [here](https://cloud.google.com/vpc/docs/tags-firewalls-overview#specifications). A maximum of 5 tag key-value pairs can be specified. Existing tags will be replaced with new values. Tags must be in one of the following formats ([KEY]=[VALUE]) 1. `tagKeys/{tag_key_id}=tagValues/{tag_value_id}` 2. `{org_id}/{tag_key_name}={tag_value_name}` 3. `{project_id}/{tag_key_name}={tag_value_name}`.
*/
@JvmName("dbnusvmfawqtudvp")
public fun resourceManagerTags(vararg values: Pair) {
val toBeMapped = values.toMap()
val mapped = toBeMapped.let({ args0 -> of(args0) })
this.resourceManagerTags = mapped
}
/**
* @param value Sandbox configuration for this node.
*/
@JvmName("npgmhvoohnepuiwu")
public suspend fun sandboxConfig(`value`: ClusterNodePoolNodeConfigSandboxConfigArgs?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.sandboxConfig = mapped
}
/**
* @param argument Sandbox configuration for this node.
*/
@JvmName("cvprforeuhsypiyx")
public suspend fun sandboxConfig(argument: suspend ClusterNodePoolNodeConfigSandboxConfigArgsBuilder.() -> Unit) {
val toBeMapped = ClusterNodePoolNodeConfigSandboxConfigArgsBuilder().applySuspend {
argument()
}.build()
val mapped = of(toBeMapped)
this.sandboxConfig = mapped
}
/**
* @param value Parameters for secondary boot disks to preload container images and data on new nodes. Structure is documented below. `gcfs_config` must be `enabled=true` for this feature to work. `min_master_version` must also be set to use GKE 1.28.3-gke.106700 or later versions.
*/
@JvmName("prxbyidawncryala")
public suspend fun secondaryBootDisks(`value`: List?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.secondaryBootDisks = mapped
}
/**
* @param argument Parameters for secondary boot disks to preload container images and data on new nodes. Structure is documented below. `gcfs_config` must be `enabled=true` for this feature to work. `min_master_version` must also be set to use GKE 1.28.3-gke.106700 or later versions.
*/
@JvmName("ebwjrudlecqbslek")
public suspend fun secondaryBootDisks(argument: List Unit>) {
val toBeMapped = argument.toList().map {
ClusterNodePoolNodeConfigSecondaryBootDiskArgsBuilder().applySuspend { it() }.build()
}
val mapped = of(toBeMapped)
this.secondaryBootDisks = mapped
}
/**
* @param argument Parameters for secondary boot disks to preload container images and data on new nodes. Structure is documented below. `gcfs_config` must be `enabled=true` for this feature to work. `min_master_version` must also be set to use GKE 1.28.3-gke.106700 or later versions.
*/
@JvmName("umnixwmjeiwfsvjq")
public suspend fun secondaryBootDisks(vararg argument: suspend ClusterNodePoolNodeConfigSecondaryBootDiskArgsBuilder.() -> Unit) {
val toBeMapped = argument.toList().map {
ClusterNodePoolNodeConfigSecondaryBootDiskArgsBuilder().applySuspend { it() }.build()
}
val mapped = of(toBeMapped)
this.secondaryBootDisks = mapped
}
/**
* @param argument Parameters for secondary boot disks to preload container images and data on new nodes. Structure is documented below. `gcfs_config` must be `enabled=true` for this feature to work. `min_master_version` must also be set to use GKE 1.28.3-gke.106700 or later versions.
*/
@JvmName("qidsjhoybpptvuip")
public suspend fun secondaryBootDisks(argument: suspend ClusterNodePoolNodeConfigSecondaryBootDiskArgsBuilder.() -> Unit) {
val toBeMapped = listOf(
ClusterNodePoolNodeConfigSecondaryBootDiskArgsBuilder().applySuspend {
argument()
}.build(),
)
val mapped = of(toBeMapped)
this.secondaryBootDisks = mapped
}
/**
* @param values Parameters for secondary boot disks to preload container images and data on new nodes. Structure is documented below. `gcfs_config` must be `enabled=true` for this feature to work. `min_master_version` must also be set to use GKE 1.28.3-gke.106700 or later versions.
*/
@JvmName("csqlnpmcetogxttc")
public suspend fun secondaryBootDisks(vararg values: ClusterNodePoolNodeConfigSecondaryBootDiskArgs) {
val toBeMapped = values.toList()
val mapped = toBeMapped.let({ args0 -> of(args0) })
this.secondaryBootDisks = mapped
}
/**
* @param value The service account to be used by the Node VMs.
* If not specified, the "default" service account is used.
*/
@JvmName("qagxpkfwoqvbkwmr")
public suspend fun serviceAccount(`value`: String?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.serviceAccount = mapped
}
/**
* @param value Shielded Instance options. Structure is documented below.
*/
@JvmName("kpakwauntqqyfbre")
public suspend fun shieldedInstanceConfig(`value`: ClusterNodePoolNodeConfigShieldedInstanceConfigArgs?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.shieldedInstanceConfig = mapped
}
/**
* @param argument Shielded Instance options. Structure is documented below.
*/
@JvmName("owgqcsgypgpktqcc")
public suspend fun shieldedInstanceConfig(argument: suspend ClusterNodePoolNodeConfigShieldedInstanceConfigArgsBuilder.() -> Unit) {
val toBeMapped = ClusterNodePoolNodeConfigShieldedInstanceConfigArgsBuilder().applySuspend {
argument()
}.build()
val mapped = of(toBeMapped)
this.shieldedInstanceConfig = mapped
}
/**
* @param value Allows specifying multiple [node affinities](https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes#node_affinity_and_anti-affinity) useful for running workloads on [sole tenant nodes](https://cloud.google.com/kubernetes-engine/docs/how-to/sole-tenancy). `node_affinity` structure is documented below.
*/
@JvmName("tcglvpebhrfjiaay")
public suspend fun soleTenantConfig(`value`: ClusterNodePoolNodeConfigSoleTenantConfigArgs?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.soleTenantConfig = mapped
}
/**
* @param argument Allows specifying multiple [node affinities](https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes#node_affinity_and_anti-affinity) useful for running workloads on [sole tenant nodes](https://cloud.google.com/kubernetes-engine/docs/how-to/sole-tenancy). `node_affinity` structure is documented below.
*/
@JvmName("jhjlngifggrftbqv")
public suspend fun soleTenantConfig(argument: suspend ClusterNodePoolNodeConfigSoleTenantConfigArgsBuilder.() -> Unit) {
val toBeMapped = ClusterNodePoolNodeConfigSoleTenantConfigArgsBuilder().applySuspend {
argument()
}.build()
val mapped = of(toBeMapped)
this.soleTenantConfig = mapped
}
/**
* @param value A boolean that represents whether the underlying node VMs are spot.
* See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms)
* for more information. Defaults to false.
*/
@JvmName("sjvmjycwbfpgcoms")
public suspend fun spot(`value`: Boolean?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.spot = mapped
}
/**
* @param value The list of Storage Pools where boot disks are provisioned.
*/
@JvmName("vdpgowofbkgkevby")
public suspend fun storagePools(`value`: List?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.storagePools = mapped
}
/**
* @param values The list of Storage Pools where boot disks are provisioned.
*/
@JvmName("vbsgwtqmgnfalche")
public suspend fun storagePools(vararg values: String) {
val toBeMapped = values.toList()
val mapped = toBeMapped.let({ args0 -> of(args0) })
this.storagePools = mapped
}
/**
* @param value The list of instance tags applied to all nodes. Tags are used to identify
* valid sources or targets for network firewalls.
*/
@JvmName("pjkcqbghmbfysyor")
public suspend fun tags(`value`: List?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.tags = mapped
}
/**
* @param values The list of instance tags applied to all nodes. Tags are used to identify
* valid sources or targets for network firewalls.
*/
@JvmName("ionsawnphadoslpc")
public suspend fun tags(vararg values: String) {
val toBeMapped = values.toList()
val mapped = toBeMapped.let({ args0 -> of(args0) })
this.tags = mapped
}
/**
* @param value A list of [Kubernetes taints](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/)
* to apply to nodes. GKE's API can only set this field on cluster creation.
* However, GKE will add taints to your nodes if you enable certain features such
* as GPUs. If this field is set, any diffs on this field will cause the provider to
* recreate the underlying resource. Taint values can be updated safely in
* Kubernetes (eg. through `kubectl`), and it's recommended that you do not use
* this field to manage taints. If you do, `lifecycle.ignore_changes` is
* recommended. Structure is documented below.
*/
@JvmName("fepuokrboosjyfxn")
public suspend fun taints(`value`: List?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.taints = mapped
}
/**
* @param argument A list of [Kubernetes taints](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/)
* to apply to nodes. GKE's API can only set this field on cluster creation.
* However, GKE will add taints to your nodes if you enable certain features such
* as GPUs. If this field is set, any diffs on this field will cause the provider to
* recreate the underlying resource. Taint values can be updated safely in
* Kubernetes (eg. through `kubectl`), and it's recommended that you do not use
* this field to manage taints. If you do, `lifecycle.ignore_changes` is
* recommended. Structure is documented below.
*/
@JvmName("euwvclbgdmlbgvdg")
public suspend fun taints(argument: List Unit>) {
val toBeMapped = argument.toList().map {
ClusterNodePoolNodeConfigTaintArgsBuilder().applySuspend { it() }.build()
}
val mapped = of(toBeMapped)
this.taints = mapped
}
/**
* @param argument A list of [Kubernetes taints](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/)
* to apply to nodes. GKE's API can only set this field on cluster creation.
* However, GKE will add taints to your nodes if you enable certain features such
* as GPUs. If this field is set, any diffs on this field will cause the provider to
* recreate the underlying resource. Taint values can be updated safely in
* Kubernetes (eg. through `kubectl`), and it's recommended that you do not use
* this field to manage taints. If you do, `lifecycle.ignore_changes` is
* recommended. Structure is documented below.
*/
@JvmName("hyweucytsgvmlppu")
public suspend fun taints(vararg argument: suspend ClusterNodePoolNodeConfigTaintArgsBuilder.() -> Unit) {
val toBeMapped = argument.toList().map {
ClusterNodePoolNodeConfigTaintArgsBuilder().applySuspend { it() }.build()
}
val mapped = of(toBeMapped)
this.taints = mapped
}
/**
* @param argument A list of [Kubernetes taints](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/)
* to apply to nodes. GKE's API can only set this field on cluster creation.
* However, GKE will add taints to your nodes if you enable certain features such
* as GPUs. If this field is set, any diffs on this field will cause the provider to
* recreate the underlying resource. Taint values can be updated safely in
* Kubernetes (eg. through `kubectl`), and it's recommended that you do not use
* this field to manage taints. If you do, `lifecycle.ignore_changes` is
* recommended. Structure is documented below.
*/
@JvmName("hxkmoigscocemqvu")
public suspend fun taints(argument: suspend ClusterNodePoolNodeConfigTaintArgsBuilder.() -> Unit) {
val toBeMapped = listOf(
ClusterNodePoolNodeConfigTaintArgsBuilder().applySuspend {
argument()
}.build(),
)
val mapped = of(toBeMapped)
this.taints = mapped
}
/**
* @param values A list of [Kubernetes taints](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/)
* to apply to nodes. GKE's API can only set this field on cluster creation.
* However, GKE will add taints to your nodes if you enable certain features such
* as GPUs. If this field is set, any diffs on this field will cause the provider to
* recreate the underlying resource. Taint values can be updated safely in
* Kubernetes (eg. through `kubectl`), and it's recommended that you do not use
* this field to manage taints. If you do, `lifecycle.ignore_changes` is
* recommended. Structure is documented below.
*/
@JvmName("vhsjywwluoiwseyq")
public suspend fun taints(vararg values: ClusterNodePoolNodeConfigTaintArgs) {
val toBeMapped = values.toList()
val mapped = toBeMapped.let({ args0 -> of(args0) })
this.taints = mapped
}
/**
* @param value Metadata configuration to expose to workloads on the node pool.
* Structure is documented below.
*/
@JvmName("jrnfvqmblgrvjpuv")
public suspend fun workloadMetadataConfig(`value`: ClusterNodePoolNodeConfigWorkloadMetadataConfigArgs?) {
val toBeMapped = value
val mapped = toBeMapped?.let({ args0 -> of(args0) })
this.workloadMetadataConfig = mapped
}
/**
* @param argument Metadata configuration to expose to workloads on the node pool.
* Structure is documented below.
*/
@JvmName("ocrirarbavxghdee")
public suspend fun workloadMetadataConfig(argument: suspend ClusterNodePoolNodeConfigWorkloadMetadataConfigArgsBuilder.() -> Unit) {
val toBeMapped = ClusterNodePoolNodeConfigWorkloadMetadataConfigArgsBuilder().applySuspend {
argument()
}.build()
val mapped = of(toBeMapped)
this.workloadMetadataConfig = mapped
}
internal fun build(): ClusterNodePoolNodeConfigArgs = ClusterNodePoolNodeConfigArgs(
advancedMachineFeatures = advancedMachineFeatures,
bootDiskKmsKey = bootDiskKmsKey,
confidentialNodes = confidentialNodes,
containerdConfig = containerdConfig,
diskSizeGb = diskSizeGb,
diskType = diskType,
effectiveTaints = effectiveTaints,
enableConfidentialStorage = enableConfidentialStorage,
ephemeralStorageConfig = ephemeralStorageConfig,
ephemeralStorageLocalSsdConfig = ephemeralStorageLocalSsdConfig,
fastSocket = fastSocket,
gcfsConfig = gcfsConfig,
guestAccelerators = guestAccelerators,
gvnic = gvnic,
hostMaintenancePolicy = hostMaintenancePolicy,
imageType = imageType,
kubeletConfig = kubeletConfig,
labels = labels,
linuxNodeConfig = linuxNodeConfig,
localNvmeSsdBlockConfig = localNvmeSsdBlockConfig,
localSsdCount = localSsdCount,
localSsdEncryptionMode = localSsdEncryptionMode,
loggingVariant = loggingVariant,
machineType = machineType,
metadata = metadata,
minCpuPlatform = minCpuPlatform,
nodeGroup = nodeGroup,
oauthScopes = oauthScopes,
preemptible = preemptible,
reservationAffinity = reservationAffinity,
resourceLabels = resourceLabels,
resourceManagerTags = resourceManagerTags,
sandboxConfig = sandboxConfig,
secondaryBootDisks = secondaryBootDisks,
serviceAccount = serviceAccount,
shieldedInstanceConfig = shieldedInstanceConfig,
soleTenantConfig = soleTenantConfig,
spot = spot,
storagePools = storagePools,
tags = tags,
taints = taints,
workloadMetadataConfig = workloadMetadataConfig,
)
}