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

com.pulumi.azure.containerservice.kotlin.inputs.KubernetesClusterNetworkProfileArgs.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.

There is a newer version: 6.15.0.0
Show newest version
@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.azure.containerservice.kotlin.inputs

import com.pulumi.azure.containerservice.inputs.KubernetesClusterNetworkProfileArgs.builder
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiNullFieldException
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.Deprecated
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 *
 * @property dnsServiceIp IP address within the Kubernetes service address range that will be used by cluster service discovery (kube-dns). Changing this forces a new resource to be created.
 * @property dockerBridgeCidr IP address (in CIDR notation) used as the Docker bridge IP address on nodes. Changing this forces a new resource to be created.
 * > **Note:** `docker_bridge_cidr` has been deprecated as the API no longer supports it and will be removed in version 4.0 of the provider.
 * @property ebpfDataPlane
 * @property ipVersions Specifies a list of IP versions the Kubernetes Cluster will use to assign IP addresses to its nodes and pods. Possible values are `IPv4` and/or `IPv6`. `IPv4` must always be specified. Changing this forces a new resource to be created.
 * ->**Note:** To configure dual-stack networking `ip_versions` should be set to `["IPv4", "IPv6"]`.
 * ->**Note:** Dual-stack networking requires that the Preview Feature `Microsoft.ContainerService/AKS-EnableDualStack` is enabled and the Resource Provider is re-registered, see [the documentation](https://docs.microsoft.com/azure/aks/configure-kubenet-dual-stack?tabs=azure-cli%2Ckubectl#register-the-aks-enabledualstack-preview-feature) for more information.
 * @property loadBalancerProfile A `load_balancer_profile` block as defined below. This can only be specified when `load_balancer_sku` is set to `standard`. Changing this forces a new resource to be created.
 * @property loadBalancerSku Specifies the SKU of the Load Balancer used for this Kubernetes Cluster. Possible values are `basic` and `standard`. Defaults to `standard`. Changing this forces a new resource to be created.
 * @property natGatewayProfile A `nat_gateway_profile` block as defined below. This can only be specified when `load_balancer_sku` is set to `standard` and `outbound_type` is set to `managedNATGateway` or `userAssignedNATGateway`. Changing this forces a new resource to be created.
 * @property networkDataPlane Specifies the data plane used for building the Kubernetes network. Possible values are `azure` and `cilium`. Defaults to `azure`. Disabling this forces a new resource to be created.
 * > **Note:** When `network_data_plane` is set to `cilium`, the `network_plugin` field can only be set to `azure`.
 * > **Note:** When `network_data_plane` is set to `cilium`, one of either `network_plugin_mode = "overlay"` or `pod_subnet_id` must be specified.
 * > **Note:** This requires that the Preview Feature `Microsoft.ContainerService/CiliumDataplanePreview` is enabled and the Resource Provider is re-registered, see [the documentation](https://learn.microsoft.com/en-us/azure/aks/azure-cni-powered-by-cilium) for more information.
 * @property networkMode Network mode to be used with Azure CNI. Possible values are `bridge` and `transparent`. Changing this forces a new resource to be created.
 * > **Note:** `network_mode` can only be set to `bridge` for existing Kubernetes Clusters and cannot be used to provision new Clusters - this will be removed by Azure in the future.
 * > **Note:** This property can only be set when `network_plugin` is set to `azure`.
 * @property networkPlugin Network plugin to use for networking. Currently supported values are `azure`, `kubenet` and `none`. Changing this forces a new resource to be created.
 * > **Note:** When `network_plugin` is set to `azure` - the `pod_cidr` field must not be set, unless specifying `network_plugin_mode` to `overlay`.
 * @property networkPluginMode Specifies the network plugin mode used for building the Kubernetes network. Possible value is `overlay`.
 * > **Note:** When `network_plugin_mode` is set to `overlay`, the `network_plugin` field can only be set to `azure`. When upgrading from Azure CNI without overlay, `pod_subnet_id` must be specified.
 * @property networkPolicy Sets up network policy to be used with Azure CNI. [Network policy allows us to control the traffic flow between pods](https://docs.microsoft.com/azure/aks/use-network-policies). Currently supported values are `calico`, `azure` and `cilium`.
 * > **Note:** When `network_policy` is set to `azure`, the `network_plugin` field can only be set to `azure`.
 * > **Note:** When `network_policy` is set to `cilium`, the `network_data_plane` field must be set to `cilium`.
 * @property outboundIpAddressIds The ID of the Public IP Addresses which should be used for outbound communication for the cluster load balancer.
 * > **Note:** Set `outbound_ip_address_ids` to an empty slice `[]` in order to unlink it from the cluster. Unlinking a `outbound_ip_address_ids` will revert the load balancing for the cluster back to a managed one.
 * @property outboundIpPrefixIds The ID of the outbound Public IP Address Prefixes which should be used for the cluster load balancer.
 * > **Note:** Set `outbound_ip_prefix_ids` to an empty slice `[]` in order to unlink it from the cluster. Unlinking a `outbound_ip_prefix_ids` will revert the load balancing for the cluster back to a managed one.
 * @property outboundType The outbound (egress) routing method which should be used for this Kubernetes Cluster. Possible values are `loadBalancer`, `userDefinedRouting`, `managedNATGateway` and `userAssignedNATGateway`. Defaults to `loadBalancer`. More information on supported migration paths for `outbound_type` can be found in [this documentation](https://learn.microsoft.com/azure/aks/egress-outboundtype#updating-outboundtype-after-cluster-creation).
 * @property podCidr The CIDR to use for pod IP addresses. This field can only be set when `network_plugin` is set to `kubenet` or `network_plugin_mode` is set to `overlay`. Changing this forces a new resource to be created.
 * @property podCidrs A list of CIDRs to use for pod IP addresses. For single-stack networking a single IPv4 CIDR is expected. For dual-stack networking an IPv4 and IPv6 CIDR are expected. Changing this forces a new resource to be created.
 * @property serviceCidr The Network Range used by the Kubernetes service. Changing this forces a new resource to be created.
 * @property serviceCidrs A list of CIDRs to use for Kubernetes services. For single-stack networking a single IPv4 CIDR is expected. For dual-stack networking an IPv4 and IPv6 CIDR are expected. Changing this forces a new resource to be created.
 * > **Note:** This range should not be used by any network element on or connected to this VNet. Service address CIDR must be smaller than /12. `docker_bridge_cidr`, `dns_service_ip` and `service_cidr` should all be empty or all should be set.
 */
public data class KubernetesClusterNetworkProfileArgs(
    public val dnsServiceIp: Output? = null,
    @Deprecated(
        message = """
  `docker_bridge_cidr` has been deprecated as the API no longer supports it and will be removed in
      version 4.0 of the provider.
  """,
    )
    public val dockerBridgeCidr: Output? = null,
    @Deprecated(
        message = """
  This property has been superseded by the property `network_data_plane` and will be removed in v4.0
      of the AzureRM provider.
  """,
    )
    public val ebpfDataPlane: Output? = null,
    public val ipVersions: Output>? = null,
    public val loadBalancerProfile: Output? =
        null,
    public val loadBalancerSku: Output? = null,
    public val natGatewayProfile: Output? =
        null,
    public val networkDataPlane: Output? = null,
    public val networkMode: Output? = null,
    public val networkPlugin: Output,
    public val networkPluginMode: Output? = null,
    public val networkPolicy: Output? = null,
    public val outboundIpAddressIds: Output>? = null,
    public val outboundIpPrefixIds: Output>? = null,
    public val outboundType: Output? = null,
    public val podCidr: Output? = null,
    public val podCidrs: Output>? = null,
    public val serviceCidr: Output? = null,
    public val serviceCidrs: Output>? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.azure.containerservice.inputs.KubernetesClusterNetworkProfileArgs =
        com.pulumi.azure.containerservice.inputs.KubernetesClusterNetworkProfileArgs.builder()
            .dnsServiceIp(dnsServiceIp?.applyValue({ args0 -> args0 }))
            .dockerBridgeCidr(dockerBridgeCidr?.applyValue({ args0 -> args0 }))
            .ebpfDataPlane(ebpfDataPlane?.applyValue({ args0 -> args0 }))
            .ipVersions(ipVersions?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .loadBalancerProfile(
                loadBalancerProfile?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .loadBalancerSku(loadBalancerSku?.applyValue({ args0 -> args0 }))
            .natGatewayProfile(natGatewayProfile?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .networkDataPlane(networkDataPlane?.applyValue({ args0 -> args0 }))
            .networkMode(networkMode?.applyValue({ args0 -> args0 }))
            .networkPlugin(networkPlugin.applyValue({ args0 -> args0 }))
            .networkPluginMode(networkPluginMode?.applyValue({ args0 -> args0 }))
            .networkPolicy(networkPolicy?.applyValue({ args0 -> args0 }))
            .outboundIpAddressIds(outboundIpAddressIds?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .outboundIpPrefixIds(outboundIpPrefixIds?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .outboundType(outboundType?.applyValue({ args0 -> args0 }))
            .podCidr(podCidr?.applyValue({ args0 -> args0 }))
            .podCidrs(podCidrs?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .serviceCidr(serviceCidr?.applyValue({ args0 -> args0 }))
            .serviceCidrs(serviceCidrs?.applyValue({ args0 -> args0.map({ args0 -> args0 }) })).build()
}

/**
 * Builder for [KubernetesClusterNetworkProfileArgs].
 */
@PulumiTagMarker
public class KubernetesClusterNetworkProfileArgsBuilder internal constructor() {
    private var dnsServiceIp: Output? = null

    private var dockerBridgeCidr: Output? = null

    private var ebpfDataPlane: Output? = null

    private var ipVersions: Output>? = null

    private var loadBalancerProfile: Output? =
        null

    private var loadBalancerSku: Output? = null

    private var natGatewayProfile: Output? =
        null

    private var networkDataPlane: Output? = null

    private var networkMode: Output? = null

    private var networkPlugin: Output? = null

    private var networkPluginMode: Output? = null

    private var networkPolicy: Output? = null

    private var outboundIpAddressIds: Output>? = null

    private var outboundIpPrefixIds: Output>? = null

    private var outboundType: Output? = null

    private var podCidr: Output? = null

    private var podCidrs: Output>? = null

    private var serviceCidr: Output? = null

    private var serviceCidrs: Output>? = null

    /**
     * @param value IP address within the Kubernetes service address range that will be used by cluster service discovery (kube-dns). Changing this forces a new resource to be created.
     */
    @JvmName("qnxuyvovcaqednhq")
    public suspend fun dnsServiceIp(`value`: Output) {
        this.dnsServiceIp = value
    }

    /**
     * @param value IP address (in CIDR notation) used as the Docker bridge IP address on nodes. Changing this forces a new resource to be created.
     * > **Note:** `docker_bridge_cidr` has been deprecated as the API no longer supports it and will be removed in version 4.0 of the provider.
     */
    @Deprecated(
        message = """
  `docker_bridge_cidr` has been deprecated as the API no longer supports it and will be removed in
      version 4.0 of the provider.
  """,
    )
    @JvmName("ynysyjwpvtjmvmbr")
    public suspend fun dockerBridgeCidr(`value`: Output) {
        this.dockerBridgeCidr = value
    }

    /**
     * @param value
     */
    @Deprecated(
        message = """
  This property has been superseded by the property `network_data_plane` and will be removed in v4.0
      of the AzureRM provider.
  """,
    )
    @JvmName("xfdywfsjkaxsfgod")
    public suspend fun ebpfDataPlane(`value`: Output) {
        this.ebpfDataPlane = value
    }

    /**
     * @param value Specifies a list of IP versions the Kubernetes Cluster will use to assign IP addresses to its nodes and pods. Possible values are `IPv4` and/or `IPv6`. `IPv4` must always be specified. Changing this forces a new resource to be created.
     * ->**Note:** To configure dual-stack networking `ip_versions` should be set to `["IPv4", "IPv6"]`.
     * ->**Note:** Dual-stack networking requires that the Preview Feature `Microsoft.ContainerService/AKS-EnableDualStack` is enabled and the Resource Provider is re-registered, see [the documentation](https://docs.microsoft.com/azure/aks/configure-kubenet-dual-stack?tabs=azure-cli%2Ckubectl#register-the-aks-enabledualstack-preview-feature) for more information.
     */
    @JvmName("smadeqgvkqkxpnvc")
    public suspend fun ipVersions(`value`: Output>) {
        this.ipVersions = value
    }

    @JvmName("eajobvshacthnyvf")
    public suspend fun ipVersions(vararg values: Output) {
        this.ipVersions = Output.all(values.asList())
    }

    /**
     * @param values Specifies a list of IP versions the Kubernetes Cluster will use to assign IP addresses to its nodes and pods. Possible values are `IPv4` and/or `IPv6`. `IPv4` must always be specified. Changing this forces a new resource to be created.
     * ->**Note:** To configure dual-stack networking `ip_versions` should be set to `["IPv4", "IPv6"]`.
     * ->**Note:** Dual-stack networking requires that the Preview Feature `Microsoft.ContainerService/AKS-EnableDualStack` is enabled and the Resource Provider is re-registered, see [the documentation](https://docs.microsoft.com/azure/aks/configure-kubenet-dual-stack?tabs=azure-cli%2Ckubectl#register-the-aks-enabledualstack-preview-feature) for more information.
     */
    @JvmName("rnijbowcfgpftlop")
    public suspend fun ipVersions(values: List>) {
        this.ipVersions = Output.all(values)
    }

    /**
     * @param value A `load_balancer_profile` block as defined below. This can only be specified when `load_balancer_sku` is set to `standard`. Changing this forces a new resource to be created.
     */
    @JvmName("hpvybfafacexpsve")
    public suspend fun loadBalancerProfile(`value`: Output) {
        this.loadBalancerProfile = value
    }

    /**
     * @param value Specifies the SKU of the Load Balancer used for this Kubernetes Cluster. Possible values are `basic` and `standard`. Defaults to `standard`. Changing this forces a new resource to be created.
     */
    @JvmName("wsxkoofckkbxdgdw")
    public suspend fun loadBalancerSku(`value`: Output) {
        this.loadBalancerSku = value
    }

    /**
     * @param value A `nat_gateway_profile` block as defined below. This can only be specified when `load_balancer_sku` is set to `standard` and `outbound_type` is set to `managedNATGateway` or `userAssignedNATGateway`. Changing this forces a new resource to be created.
     */
    @JvmName("fqtjjwojbogtebev")
    public suspend fun natGatewayProfile(`value`: Output) {
        this.natGatewayProfile = value
    }

    /**
     * @param value Specifies the data plane used for building the Kubernetes network. Possible values are `azure` and `cilium`. Defaults to `azure`. Disabling this forces a new resource to be created.
     * > **Note:** When `network_data_plane` is set to `cilium`, the `network_plugin` field can only be set to `azure`.
     * > **Note:** When `network_data_plane` is set to `cilium`, one of either `network_plugin_mode = "overlay"` or `pod_subnet_id` must be specified.
     * > **Note:** This requires that the Preview Feature `Microsoft.ContainerService/CiliumDataplanePreview` is enabled and the Resource Provider is re-registered, see [the documentation](https://learn.microsoft.com/en-us/azure/aks/azure-cni-powered-by-cilium) for more information.
     */
    @JvmName("indeyaubijvejrsf")
    public suspend fun networkDataPlane(`value`: Output) {
        this.networkDataPlane = value
    }

    /**
     * @param value Network mode to be used with Azure CNI. Possible values are `bridge` and `transparent`. Changing this forces a new resource to be created.
     * > **Note:** `network_mode` can only be set to `bridge` for existing Kubernetes Clusters and cannot be used to provision new Clusters - this will be removed by Azure in the future.
     * > **Note:** This property can only be set when `network_plugin` is set to `azure`.
     */
    @JvmName("fkktvjpojogltccm")
    public suspend fun networkMode(`value`: Output) {
        this.networkMode = value
    }

    /**
     * @param value Network plugin to use for networking. Currently supported values are `azure`, `kubenet` and `none`. Changing this forces a new resource to be created.
     * > **Note:** When `network_plugin` is set to `azure` - the `pod_cidr` field must not be set, unless specifying `network_plugin_mode` to `overlay`.
     */
    @JvmName("upbitmavlryvqsbw")
    public suspend fun networkPlugin(`value`: Output) {
        this.networkPlugin = value
    }

    /**
     * @param value Specifies the network plugin mode used for building the Kubernetes network. Possible value is `overlay`.
     * > **Note:** When `network_plugin_mode` is set to `overlay`, the `network_plugin` field can only be set to `azure`. When upgrading from Azure CNI without overlay, `pod_subnet_id` must be specified.
     */
    @JvmName("nwakmipmqogdygoc")
    public suspend fun networkPluginMode(`value`: Output) {
        this.networkPluginMode = value
    }

    /**
     * @param value Sets up network policy to be used with Azure CNI. [Network policy allows us to control the traffic flow between pods](https://docs.microsoft.com/azure/aks/use-network-policies). Currently supported values are `calico`, `azure` and `cilium`.
     * > **Note:** When `network_policy` is set to `azure`, the `network_plugin` field can only be set to `azure`.
     * > **Note:** When `network_policy` is set to `cilium`, the `network_data_plane` field must be set to `cilium`.
     */
    @JvmName("fgpbepttfiricqed")
    public suspend fun networkPolicy(`value`: Output) {
        this.networkPolicy = value
    }

    /**
     * @param value The ID of the Public IP Addresses which should be used for outbound communication for the cluster load balancer.
     * > **Note:** Set `outbound_ip_address_ids` to an empty slice `[]` in order to unlink it from the cluster. Unlinking a `outbound_ip_address_ids` will revert the load balancing for the cluster back to a managed one.
     */
    @JvmName("sfcjyeychnrjoxhi")
    public suspend fun outboundIpAddressIds(`value`: Output>) {
        this.outboundIpAddressIds = value
    }

    @JvmName("dmpwikrsmlivcysf")
    public suspend fun outboundIpAddressIds(vararg values: Output) {
        this.outboundIpAddressIds = Output.all(values.asList())
    }

    /**
     * @param values The ID of the Public IP Addresses which should be used for outbound communication for the cluster load balancer.
     * > **Note:** Set `outbound_ip_address_ids` to an empty slice `[]` in order to unlink it from the cluster. Unlinking a `outbound_ip_address_ids` will revert the load balancing for the cluster back to a managed one.
     */
    @JvmName("edtiwcrwqygpeeun")
    public suspend fun outboundIpAddressIds(values: List>) {
        this.outboundIpAddressIds = Output.all(values)
    }

    /**
     * @param value The ID of the outbound Public IP Address Prefixes which should be used for the cluster load balancer.
     * > **Note:** Set `outbound_ip_prefix_ids` to an empty slice `[]` in order to unlink it from the cluster. Unlinking a `outbound_ip_prefix_ids` will revert the load balancing for the cluster back to a managed one.
     */
    @JvmName("eqvojmhqfsjsnrdh")
    public suspend fun outboundIpPrefixIds(`value`: Output>) {
        this.outboundIpPrefixIds = value
    }

    @JvmName("wxtrhfuwpelmqrkb")
    public suspend fun outboundIpPrefixIds(vararg values: Output) {
        this.outboundIpPrefixIds = Output.all(values.asList())
    }

    /**
     * @param values The ID of the outbound Public IP Address Prefixes which should be used for the cluster load balancer.
     * > **Note:** Set `outbound_ip_prefix_ids` to an empty slice `[]` in order to unlink it from the cluster. Unlinking a `outbound_ip_prefix_ids` will revert the load balancing for the cluster back to a managed one.
     */
    @JvmName("ecssbcwtmfudfawa")
    public suspend fun outboundIpPrefixIds(values: List>) {
        this.outboundIpPrefixIds = Output.all(values)
    }

    /**
     * @param value The outbound (egress) routing method which should be used for this Kubernetes Cluster. Possible values are `loadBalancer`, `userDefinedRouting`, `managedNATGateway` and `userAssignedNATGateway`. Defaults to `loadBalancer`. More information on supported migration paths for `outbound_type` can be found in [this documentation](https://learn.microsoft.com/azure/aks/egress-outboundtype#updating-outboundtype-after-cluster-creation).
     */
    @JvmName("tecmwdecdwjpuvho")
    public suspend fun outboundType(`value`: Output) {
        this.outboundType = value
    }

    /**
     * @param value The CIDR to use for pod IP addresses. This field can only be set when `network_plugin` is set to `kubenet` or `network_plugin_mode` is set to `overlay`. Changing this forces a new resource to be created.
     */
    @JvmName("liqkbniioxexberf")
    public suspend fun podCidr(`value`: Output) {
        this.podCidr = value
    }

    /**
     * @param value A list of CIDRs to use for pod IP addresses. For single-stack networking a single IPv4 CIDR is expected. For dual-stack networking an IPv4 and IPv6 CIDR are expected. Changing this forces a new resource to be created.
     */
    @JvmName("wvycteonhsycewhu")
    public suspend fun podCidrs(`value`: Output>) {
        this.podCidrs = value
    }

    @JvmName("nmveiqrdswguhsvu")
    public suspend fun podCidrs(vararg values: Output) {
        this.podCidrs = Output.all(values.asList())
    }

    /**
     * @param values A list of CIDRs to use for pod IP addresses. For single-stack networking a single IPv4 CIDR is expected. For dual-stack networking an IPv4 and IPv6 CIDR are expected. Changing this forces a new resource to be created.
     */
    @JvmName("obvdxecrrdfovfax")
    public suspend fun podCidrs(values: List>) {
        this.podCidrs = Output.all(values)
    }

    /**
     * @param value The Network Range used by the Kubernetes service. Changing this forces a new resource to be created.
     */
    @JvmName("hpftqbefttyaviac")
    public suspend fun serviceCidr(`value`: Output) {
        this.serviceCidr = value
    }

    /**
     * @param value A list of CIDRs to use for Kubernetes services. For single-stack networking a single IPv4 CIDR is expected. For dual-stack networking an IPv4 and IPv6 CIDR are expected. Changing this forces a new resource to be created.
     * > **Note:** This range should not be used by any network element on or connected to this VNet. Service address CIDR must be smaller than /12. `docker_bridge_cidr`, `dns_service_ip` and `service_cidr` should all be empty or all should be set.
     */
    @JvmName("ayewjskmeeupgwsd")
    public suspend fun serviceCidrs(`value`: Output>) {
        this.serviceCidrs = value
    }

    @JvmName("mhnursisvuolnkus")
    public suspend fun serviceCidrs(vararg values: Output) {
        this.serviceCidrs = Output.all(values.asList())
    }

    /**
     * @param values A list of CIDRs to use for Kubernetes services. For single-stack networking a single IPv4 CIDR is expected. For dual-stack networking an IPv4 and IPv6 CIDR are expected. Changing this forces a new resource to be created.
     * > **Note:** This range should not be used by any network element on or connected to this VNet. Service address CIDR must be smaller than /12. `docker_bridge_cidr`, `dns_service_ip` and `service_cidr` should all be empty or all should be set.
     */
    @JvmName("jdnjcsfcmfgmyvht")
    public suspend fun serviceCidrs(values: List>) {
        this.serviceCidrs = Output.all(values)
    }

    /**
     * @param value IP address within the Kubernetes service address range that will be used by cluster service discovery (kube-dns). Changing this forces a new resource to be created.
     */
    @JvmName("jvvjavfslrisagoj")
    public suspend fun dnsServiceIp(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.dnsServiceIp = mapped
    }

    /**
     * @param value IP address (in CIDR notation) used as the Docker bridge IP address on nodes. Changing this forces a new resource to be created.
     * > **Note:** `docker_bridge_cidr` has been deprecated as the API no longer supports it and will be removed in version 4.0 of the provider.
     */
    @Deprecated(
        message = """
  `docker_bridge_cidr` has been deprecated as the API no longer supports it and will be removed in
      version 4.0 of the provider.
  """,
    )
    @JvmName("mkvdmyjliimpfuwh")
    public suspend fun dockerBridgeCidr(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.dockerBridgeCidr = mapped
    }

    /**
     * @param value
     */
    @Deprecated(
        message = """
  This property has been superseded by the property `network_data_plane` and will be removed in v4.0
      of the AzureRM provider.
  """,
    )
    @JvmName("ofpllpsyxxjgcjml")
    public suspend fun ebpfDataPlane(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.ebpfDataPlane = mapped
    }

    /**
     * @param value Specifies a list of IP versions the Kubernetes Cluster will use to assign IP addresses to its nodes and pods. Possible values are `IPv4` and/or `IPv6`. `IPv4` must always be specified. Changing this forces a new resource to be created.
     * ->**Note:** To configure dual-stack networking `ip_versions` should be set to `["IPv4", "IPv6"]`.
     * ->**Note:** Dual-stack networking requires that the Preview Feature `Microsoft.ContainerService/AKS-EnableDualStack` is enabled and the Resource Provider is re-registered, see [the documentation](https://docs.microsoft.com/azure/aks/configure-kubenet-dual-stack?tabs=azure-cli%2Ckubectl#register-the-aks-enabledualstack-preview-feature) for more information.
     */
    @JvmName("jydatsokvnjogcpi")
    public suspend fun ipVersions(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.ipVersions = mapped
    }

    /**
     * @param values Specifies a list of IP versions the Kubernetes Cluster will use to assign IP addresses to its nodes and pods. Possible values are `IPv4` and/or `IPv6`. `IPv4` must always be specified. Changing this forces a new resource to be created.
     * ->**Note:** To configure dual-stack networking `ip_versions` should be set to `["IPv4", "IPv6"]`.
     * ->**Note:** Dual-stack networking requires that the Preview Feature `Microsoft.ContainerService/AKS-EnableDualStack` is enabled and the Resource Provider is re-registered, see [the documentation](https://docs.microsoft.com/azure/aks/configure-kubenet-dual-stack?tabs=azure-cli%2Ckubectl#register-the-aks-enabledualstack-preview-feature) for more information.
     */
    @JvmName("pptugpvyglmamtwh")
    public suspend fun ipVersions(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.ipVersions = mapped
    }

    /**
     * @param value A `load_balancer_profile` block as defined below. This can only be specified when `load_balancer_sku` is set to `standard`. Changing this forces a new resource to be created.
     */
    @JvmName("nejemoauvyikhtpl")
    public suspend fun loadBalancerProfile(`value`: KubernetesClusterNetworkProfileLoadBalancerProfileArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.loadBalancerProfile = mapped
    }

    /**
     * @param argument A `load_balancer_profile` block as defined below. This can only be specified when `load_balancer_sku` is set to `standard`. Changing this forces a new resource to be created.
     */
    @JvmName("xlinsfpuesjktyvo")
    public suspend fun loadBalancerProfile(argument: suspend KubernetesClusterNetworkProfileLoadBalancerProfileArgsBuilder.() -> Unit) {
        val toBeMapped = KubernetesClusterNetworkProfileLoadBalancerProfileArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.loadBalancerProfile = mapped
    }

    /**
     * @param value Specifies the SKU of the Load Balancer used for this Kubernetes Cluster. Possible values are `basic` and `standard`. Defaults to `standard`. Changing this forces a new resource to be created.
     */
    @JvmName("pykghsjspcdcxnuj")
    public suspend fun loadBalancerSku(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.loadBalancerSku = mapped
    }

    /**
     * @param value A `nat_gateway_profile` block as defined below. This can only be specified when `load_balancer_sku` is set to `standard` and `outbound_type` is set to `managedNATGateway` or `userAssignedNATGateway`. Changing this forces a new resource to be created.
     */
    @JvmName("yjdqynadhlqaeupj")
    public suspend fun natGatewayProfile(`value`: KubernetesClusterNetworkProfileNatGatewayProfileArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.natGatewayProfile = mapped
    }

    /**
     * @param argument A `nat_gateway_profile` block as defined below. This can only be specified when `load_balancer_sku` is set to `standard` and `outbound_type` is set to `managedNATGateway` or `userAssignedNATGateway`. Changing this forces a new resource to be created.
     */
    @JvmName("netwtcajcqwaovhd")
    public suspend fun natGatewayProfile(argument: suspend KubernetesClusterNetworkProfileNatGatewayProfileArgsBuilder.() -> Unit) {
        val toBeMapped = KubernetesClusterNetworkProfileNatGatewayProfileArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.natGatewayProfile = mapped
    }

    /**
     * @param value Specifies the data plane used for building the Kubernetes network. Possible values are `azure` and `cilium`. Defaults to `azure`. Disabling this forces a new resource to be created.
     * > **Note:** When `network_data_plane` is set to `cilium`, the `network_plugin` field can only be set to `azure`.
     * > **Note:** When `network_data_plane` is set to `cilium`, one of either `network_plugin_mode = "overlay"` or `pod_subnet_id` must be specified.
     * > **Note:** This requires that the Preview Feature `Microsoft.ContainerService/CiliumDataplanePreview` is enabled and the Resource Provider is re-registered, see [the documentation](https://learn.microsoft.com/en-us/azure/aks/azure-cni-powered-by-cilium) for more information.
     */
    @JvmName("wgsoljeunotuuwfr")
    public suspend fun networkDataPlane(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.networkDataPlane = mapped
    }

    /**
     * @param value Network mode to be used with Azure CNI. Possible values are `bridge` and `transparent`. Changing this forces a new resource to be created.
     * > **Note:** `network_mode` can only be set to `bridge` for existing Kubernetes Clusters and cannot be used to provision new Clusters - this will be removed by Azure in the future.
     * > **Note:** This property can only be set when `network_plugin` is set to `azure`.
     */
    @JvmName("gktbswmrhbfgtoie")
    public suspend fun networkMode(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.networkMode = mapped
    }

    /**
     * @param value Network plugin to use for networking. Currently supported values are `azure`, `kubenet` and `none`. Changing this forces a new resource to be created.
     * > **Note:** When `network_plugin` is set to `azure` - the `pod_cidr` field must not be set, unless specifying `network_plugin_mode` to `overlay`.
     */
    @JvmName("seajfyastehdocii")
    public suspend fun networkPlugin(`value`: String) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.networkPlugin = mapped
    }

    /**
     * @param value Specifies the network plugin mode used for building the Kubernetes network. Possible value is `overlay`.
     * > **Note:** When `network_plugin_mode` is set to `overlay`, the `network_plugin` field can only be set to `azure`. When upgrading from Azure CNI without overlay, `pod_subnet_id` must be specified.
     */
    @JvmName("jpvcrpyknuldqyov")
    public suspend fun networkPluginMode(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.networkPluginMode = mapped
    }

    /**
     * @param value Sets up network policy to be used with Azure CNI. [Network policy allows us to control the traffic flow between pods](https://docs.microsoft.com/azure/aks/use-network-policies). Currently supported values are `calico`, `azure` and `cilium`.
     * > **Note:** When `network_policy` is set to `azure`, the `network_plugin` field can only be set to `azure`.
     * > **Note:** When `network_policy` is set to `cilium`, the `network_data_plane` field must be set to `cilium`.
     */
    @JvmName("llkjsurvfrwnmavg")
    public suspend fun networkPolicy(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.networkPolicy = mapped
    }

    /**
     * @param value The ID of the Public IP Addresses which should be used for outbound communication for the cluster load balancer.
     * > **Note:** Set `outbound_ip_address_ids` to an empty slice `[]` in order to unlink it from the cluster. Unlinking a `outbound_ip_address_ids` will revert the load balancing for the cluster back to a managed one.
     */
    @JvmName("tjpkdfiooqepnqud")
    public suspend fun outboundIpAddressIds(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.outboundIpAddressIds = mapped
    }

    /**
     * @param values The ID of the Public IP Addresses which should be used for outbound communication for the cluster load balancer.
     * > **Note:** Set `outbound_ip_address_ids` to an empty slice `[]` in order to unlink it from the cluster. Unlinking a `outbound_ip_address_ids` will revert the load balancing for the cluster back to a managed one.
     */
    @JvmName("rliqdlspvfvrrhuh")
    public suspend fun outboundIpAddressIds(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.outboundIpAddressIds = mapped
    }

    /**
     * @param value The ID of the outbound Public IP Address Prefixes which should be used for the cluster load balancer.
     * > **Note:** Set `outbound_ip_prefix_ids` to an empty slice `[]` in order to unlink it from the cluster. Unlinking a `outbound_ip_prefix_ids` will revert the load balancing for the cluster back to a managed one.
     */
    @JvmName("okwuvcyexarvyafj")
    public suspend fun outboundIpPrefixIds(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.outboundIpPrefixIds = mapped
    }

    /**
     * @param values The ID of the outbound Public IP Address Prefixes which should be used for the cluster load balancer.
     * > **Note:** Set `outbound_ip_prefix_ids` to an empty slice `[]` in order to unlink it from the cluster. Unlinking a `outbound_ip_prefix_ids` will revert the load balancing for the cluster back to a managed one.
     */
    @JvmName("jqvsjkedlocpprle")
    public suspend fun outboundIpPrefixIds(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.outboundIpPrefixIds = mapped
    }

    /**
     * @param value The outbound (egress) routing method which should be used for this Kubernetes Cluster. Possible values are `loadBalancer`, `userDefinedRouting`, `managedNATGateway` and `userAssignedNATGateway`. Defaults to `loadBalancer`. More information on supported migration paths for `outbound_type` can be found in [this documentation](https://learn.microsoft.com/azure/aks/egress-outboundtype#updating-outboundtype-after-cluster-creation).
     */
    @JvmName("cqcivgfiedwdyboh")
    public suspend fun outboundType(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.outboundType = mapped
    }

    /**
     * @param value The CIDR to use for pod IP addresses. This field can only be set when `network_plugin` is set to `kubenet` or `network_plugin_mode` is set to `overlay`. Changing this forces a new resource to be created.
     */
    @JvmName("gyrxggqcnsqdkesh")
    public suspend fun podCidr(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.podCidr = mapped
    }

    /**
     * @param value A list of CIDRs to use for pod IP addresses. For single-stack networking a single IPv4 CIDR is expected. For dual-stack networking an IPv4 and IPv6 CIDR are expected. Changing this forces a new resource to be created.
     */
    @JvmName("rhykkwudmcmpbudt")
    public suspend fun podCidrs(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.podCidrs = mapped
    }

    /**
     * @param values A list of CIDRs to use for pod IP addresses. For single-stack networking a single IPv4 CIDR is expected. For dual-stack networking an IPv4 and IPv6 CIDR are expected. Changing this forces a new resource to be created.
     */
    @JvmName("nllwxxryfdxjmiep")
    public suspend fun podCidrs(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.podCidrs = mapped
    }

    /**
     * @param value The Network Range used by the Kubernetes service. Changing this forces a new resource to be created.
     */
    @JvmName("twmfggubnydprpkq")
    public suspend fun serviceCidr(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.serviceCidr = mapped
    }

    /**
     * @param value A list of CIDRs to use for Kubernetes services. For single-stack networking a single IPv4 CIDR is expected. For dual-stack networking an IPv4 and IPv6 CIDR are expected. Changing this forces a new resource to be created.
     * > **Note:** This range should not be used by any network element on or connected to this VNet. Service address CIDR must be smaller than /12. `docker_bridge_cidr`, `dns_service_ip` and `service_cidr` should all be empty or all should be set.
     */
    @JvmName("konkxtscrhloyvma")
    public suspend fun serviceCidrs(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.serviceCidrs = mapped
    }

    /**
     * @param values A list of CIDRs to use for Kubernetes services. For single-stack networking a single IPv4 CIDR is expected. For dual-stack networking an IPv4 and IPv6 CIDR are expected. Changing this forces a new resource to be created.
     * > **Note:** This range should not be used by any network element on or connected to this VNet. Service address CIDR must be smaller than /12. `docker_bridge_cidr`, `dns_service_ip` and `service_cidr` should all be empty or all should be set.
     */
    @JvmName("dtrbeolguswtfssi")
    public suspend fun serviceCidrs(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.serviceCidrs = mapped
    }

    internal fun build(): KubernetesClusterNetworkProfileArgs = KubernetesClusterNetworkProfileArgs(
        dnsServiceIp = dnsServiceIp,
        dockerBridgeCidr = dockerBridgeCidr,
        ebpfDataPlane = ebpfDataPlane,
        ipVersions = ipVersions,
        loadBalancerProfile = loadBalancerProfile,
        loadBalancerSku = loadBalancerSku,
        natGatewayProfile = natGatewayProfile,
        networkDataPlane = networkDataPlane,
        networkMode = networkMode,
        networkPlugin = networkPlugin ?: throw PulumiNullFieldException("networkPlugin"),
        networkPluginMode = networkPluginMode,
        networkPolicy = networkPolicy,
        outboundIpAddressIds = outboundIpAddressIds,
        outboundIpPrefixIds = outboundIpPrefixIds,
        outboundType = outboundType,
        podCidr = podCidr,
        podCidrs = podCidrs,
        serviceCidr = serviceCidr,
        serviceCidrs = serviceCidrs,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy