KubernetesArgs

data class KubernetesArgs(val addons: Output<List<KubernetesAddonArgs>>? = null, val apiAudiences: Output<List<String>>? = null, val clientCert: Output<String>? = null, val clientKey: Output<String>? = null, val clusterCaCert: Output<String>? = null, val clusterDomain: Output<String>? = null, val customSan: Output<String>? = null, val deleteOptions: Output<List<KubernetesDeleteOptionArgs>>? = null, val deletionProtection: Output<Boolean>? = null, val enableSsh: Output<Boolean>? = null, val imageId: Output<String>? = null, val installCloudMonitor: Output<Boolean>? = null, val isEnterpriseSecurityGroup: Output<Boolean>? = null, val keyName: Output<String>? = null, val kmsEncryptedPassword: Output<String>? = null, val kmsEncryptionContext: Output<Map<String, String>>? = null, val loadBalancerSpec: Output<String>? = null, val masterAutoRenew: Output<Boolean>? = null, val masterAutoRenewPeriod: Output<Int>? = null, val masterDiskCategory: Output<String>? = null, val masterDiskPerformanceLevel: Output<String>? = null, val masterDiskSize: Output<Int>? = null, val masterDiskSnapshotPolicyId: Output<String>? = null, val masterInstanceChargeType: Output<String>? = null, val masterInstanceTypes: Output<List<String>>? = null, val masterPeriod: Output<Int>? = null, val masterPeriodUnit: Output<String>? = null, val masterVswitchIds: Output<List<String>>? = null, val name: Output<String>? = null, val namePrefix: Output<String>? = null, val newNatGateway: Output<Boolean>? = null, val nodeCidrMask: Output<Int>? = null, val nodeNameMode: Output<String>? = null, val osType: Output<String>? = null, val password: Output<String>? = null, val platform: Output<String>? = null, val podCidr: Output<String>? = null, val podVswitchIds: Output<List<String>>? = null, val proxyMode: Output<String>? = null, val rdsInstances: Output<List<String>>? = null, val resourceGroupId: Output<String>? = null, val retainResources: Output<List<String>>? = null, val runtime: Output<KubernetesRuntimeArgs>? = null, val securityGroupId: Output<String>? = null, val serviceAccountIssuer: Output<String>? = null, val serviceCidr: Output<String>? = null, val skipSetCertificateAuthority: Output<Boolean>? = null, val slbInternetEnabled: Output<Boolean>? = null, val tags: Output<Map<String, String>>? = null, val timezone: Output<String>? = null, val userCa: Output<String>? = null, val version: Output<String>? = null) : ConvertibleToJava<KubernetesArgs>

This resource will help you to manage a Kubernetes Cluster in Alibaba Cloud Kubernetes Service, see What is kubernetes.

NOTE: From August 21, 2024, Container Service for Kubernetes (ACK) discontinues the creation of ACK dedicated clusters, see Product announcement for more details. NOTE: Available since v1.9.0. NOTE: Kubernetes cluster only supports VPC network and it can access internet while creating kubernetes cluster. A Nat Gateway and configuring a SNAT for it can ensure one VPC network access internet. If there is no nat gateway in the VPC, you can set new_nat_gateway to "true" to create one automatically. NOTE: Each kubernetes cluster contains 3 master nodes and those number cannot be changed at now. NOTE: Creating kubernetes cluster need to install several packages and it will cost about 15 minutes. Please be patient. NOTE: From version 1.9.4, the provider supports to download kube config, client certificate, client key and cluster ca certificate after creating cluster successfully, and you can put them into the specified location, like '~/.kube/config'. NOTE: From version 1.16.0, the provider supports Multiple Availability Zones Kubernetes Cluster. To create a cluster of this kind, you must specify 3 or 5 items in master_vswitch_ids and master_instance_types. NOTE: From version 1.20.0, the provider supports disabling internet load balancer for API Server by setting false to slb_internet_enabled. NOTE: If you want to manage Kubernetes, you can use Kubernetes Provider. NOTE: You need to activate several other products and confirm Authorization Policy used by Container Service before using this resource. Please refer to the Authorization management and Cluster management sections in the Document Center. NOTE: From version 1.75.0, Some parameters have been removed from resource,You can check them below and re-import the cluster if necessary. NOTE: From version 1.101.0+, We supported the professional managed clusters(ack-pro), You can create a pro cluster by setting the the value of cluster_spec. NOTE: From version 1.177.0+, exclude_autoscaler_nodes,worker_number,worker_vswitch_ids,worker_instance_types,worker_instance_charge_type,worker_period,worker_period_unit,worker_auto_renew,worker_auto_renew_period,worker_disk_category,worker_disk_size,worker_data_disks,node_port_range,cpu_policy,user_data,taints,worker_disk_performance_level,worker_disk_snapshot_policy_id are deprecated. We Suggest you using resource alicloud.cs.NodePool to manage your cluster worker nodes. NOTE: From version 1.212.0, exclude_autoscaler_nodes,worker_number,worker_vswitch_ids,worker_instance_types,worker_instance_charge_type,worker_period,worker_period_unit,worker_auto_renew,worker_auto_renew_period,worker_disk_category,worker_disk_size,worker_data_disks,node_port_range,cpu_policy,user_data,taints,worker_disk_performance_level,worker_disk_snapshot_policy_id,kube_config,availability_zone are removed. Please use resource alicloud.cs.NodePool to manage your cluster worker nodes.

Import

Kubernetes cluster can be imported using the id, e.g. Then complete the main.tf accords to the result of pulumi preview.

$ pulumi import alicloud:cs/kubernetes:Kubernetes main cluster-id

Constructors

Link copied to clipboard
constructor(addons: Output<List<KubernetesAddonArgs>>? = null, apiAudiences: Output<List<String>>? = null, clientCert: Output<String>? = null, clientKey: Output<String>? = null, clusterCaCert: Output<String>? = null, clusterDomain: Output<String>? = null, customSan: Output<String>? = null, deleteOptions: Output<List<KubernetesDeleteOptionArgs>>? = null, deletionProtection: Output<Boolean>? = null, enableSsh: Output<Boolean>? = null, imageId: Output<String>? = null, installCloudMonitor: Output<Boolean>? = null, isEnterpriseSecurityGroup: Output<Boolean>? = null, keyName: Output<String>? = null, kmsEncryptedPassword: Output<String>? = null, kmsEncryptionContext: Output<Map<String, String>>? = null, loadBalancerSpec: Output<String>? = null, masterAutoRenew: Output<Boolean>? = null, masterAutoRenewPeriod: Output<Int>? = null, masterDiskCategory: Output<String>? = null, masterDiskPerformanceLevel: Output<String>? = null, masterDiskSize: Output<Int>? = null, masterDiskSnapshotPolicyId: Output<String>? = null, masterInstanceChargeType: Output<String>? = null, masterInstanceTypes: Output<List<String>>? = null, masterPeriod: Output<Int>? = null, masterPeriodUnit: Output<String>? = null, masterVswitchIds: Output<List<String>>? = null, name: Output<String>? = null, namePrefix: Output<String>? = null, newNatGateway: Output<Boolean>? = null, nodeCidrMask: Output<Int>? = null, nodeNameMode: Output<String>? = null, osType: Output<String>? = null, password: Output<String>? = null, platform: Output<String>? = null, podCidr: Output<String>? = null, podVswitchIds: Output<List<String>>? = null, proxyMode: Output<String>? = null, rdsInstances: Output<List<String>>? = null, resourceGroupId: Output<String>? = null, retainResources: Output<List<String>>? = null, runtime: Output<KubernetesRuntimeArgs>? = null, securityGroupId: Output<String>? = null, serviceAccountIssuer: Output<String>? = null, serviceCidr: Output<String>? = null, skipSetCertificateAuthority: Output<Boolean>? = null, slbInternetEnabled: Output<Boolean>? = null, tags: Output<Map<String, String>>? = null, timezone: Output<String>? = null, userCa: Output<String>? = null, version: Output<String>? = null)

Properties

Link copied to clipboard
val addons: Output<List<KubernetesAddonArgs>>? = null

The addon you want to install in cluster. See addons below. Only works for Create Operation, use resource cs_kubernetes_addon to manage addons if cluster is created.

Link copied to clipboard
val apiAudiences: Output<List<String>>? = null

A list of API audiences for Service Account Token Volume Projection. Set this to ["https://kubernetes&#46;default&#46;svc"] if you want to enable the Token Volume Projection feature requires specifying service_account_issuer as well. From cluster version 1.22+, Service Account Token Volume Projection will be enabled by default.

Link copied to clipboard
val clientCert: Output<String>? = null

From version 1.248.0, new DataSource alicloud.cs.getClusterCredential is recommended to manage cluster's kubeconfig, you can also save the certificate_authority.client_cert attribute content of new DataSource alicloud.cs.getClusterCredential to an appropriate path(like ~/.kube/client-cert.pem) for replace it.

Link copied to clipboard
val clientKey: Output<String>? = null

From version 1.248.0, new DataSource alicloud.cs.getClusterCredential is recommended to manage cluster's kubeconfig, you can also save the certificate_authority.client_key attribute content of new DataSource alicloud.cs.getClusterCredential to an appropriate path(like ~/.kube/client-key.pem) for replace it.

Link copied to clipboard
val clusterCaCert: Output<String>? = null

From version 1.248.0, new DataSource alicloud.cs.getClusterCredential is recommended to manage cluster's kubeconfig, you can also save the certificate_authority.cluster_cert attribute content of new DataSource alicloud.cs.getClusterCredential to an appropriate path(like ~/.kube/cluster-ca-cert.pem) for replace it. Removed params

Link copied to clipboard
val clusterDomain: Output<String>? = null

Cluster local domain name, Default to cluster.local. A domain name consists of one or more sections separated by a decimal point (.), each of which is up to 63 characters long, and can be lowercase, numerals, and underscores (-), and must be lowercase or numerals at the beginning and end.

Link copied to clipboard
val customSan: Output<String>? = null

Customize the certificate SAN, multiple IP or domain names are separated by English commas (,).

Link copied to clipboard

Delete options, only work for deleting resource. Make sure you have run pulumi up to make the configuration applied. See delete_options below.

Link copied to clipboard
val deletionProtection: Output<Boolean>? = null

Whether to enable cluster deletion protection.

Link copied to clipboard
val enableSsh: Output<Boolean>? = null

Enable login to the node through SSH. Default to false.

Link copied to clipboard
val imageId: Output<String>? = null

Custom Image support. Must be based on AliyunLinux or AliyunLinux3.

Link copied to clipboard
val installCloudMonitor: Output<Boolean>? = null

Install cloud monitor agent on ECS. Default to true.

Link copied to clipboard
val isEnterpriseSecurityGroup: Output<Boolean>? = null

Enable to create advanced security group. default: false. See Advanced security group. Only works for Create Operation.

Link copied to clipboard
val keyName: Output<String>? = null

The keypair of ssh login cluster node, you have to create it first. You have to specify one of password key_name kms_encrypted_password fields.

Link copied to clipboard
val kmsEncryptedPassword: Output<String>? = null

An KMS encrypts password used to a cs kubernetes. You have to specify one of password key_name kms_encrypted_password fields.

Link copied to clipboard
val kmsEncryptionContext: Output<Map<String, String>>? = null

An KMS encryption context used to decrypt kms_encrypted_password before creating or updating a cs kubernetes with kms_encrypted_password. See Encryption Context. It is valid when kms_encrypted_password is set.

Link copied to clipboard
val loadBalancerSpec: Output<String>? = null

The cluster api server load balancer instance specification. For more information on how to select a LB instance specification, see SLB instance overview. Only works for Create Operation. The spec will not take effect because the charge of the load balancer has been changed to PayByCLCU.

Link copied to clipboard
val masterAutoRenew: Output<Boolean>? = null

Enable master payment auto-renew, defaults to false.

Link copied to clipboard
val masterAutoRenewPeriod: Output<Int>? = null

Master payment auto-renew period, it can be one of {1, 2, 3, 6, 12}.

Link copied to clipboard
val masterDiskCategory: Output<String>? = null

The system disk category of master node. Its valid value are cloud_ssd, cloud_essd and cloud_efficiency. Default to cloud_efficiency.

Link copied to clipboard
val masterDiskPerformanceLevel: Output<String>? = null

Master node system disk performance level. When master_disk_category values cloud_essd, the optional values are PL0, PL1, PL2 or PL3, but the specific performance level is related to the disk capacity. For more information, see Enhanced SSDs. Default is PL1.

Link copied to clipboard
val masterDiskSize: Output<Int>? = null

The system disk size of master node. Its valid value range 20~500 in GB. Default to 20.

Link copied to clipboard
val masterDiskSnapshotPolicyId: Output<String>? = null

Master node system disk auto snapshot policy. Computed params

Link copied to clipboard
val masterInstanceChargeType: Output<String>? = null

Master payment type. or PostPaid or PrePaid, defaults to PostPaid. If value is PrePaid, the files master_period, master_period_unit, master_auto_renew and master_auto_renew_period are required.

Link copied to clipboard
val masterInstanceTypes: Output<List<String>>? = null

The instance type of master node. Specify one type for single AZ Cluster, three types for MultiAZ Cluster.

Link copied to clipboard
val masterPeriod: Output<Int>? = null

Master payment period.Its valid value is one of {1, 2, 3, 6, 12, 24, 36, 48, 60}.

Link copied to clipboard
val masterPeriodUnit: Output<String>? = null

Master payment period unit, the valid value is Month.

Link copied to clipboard
val masterVswitchIds: Output<List<String>>? = null

The vswitches used by master, you can specific 3 or 5 vswitches because of the amount of masters. Detailed below.

Link copied to clipboard
val name: Output<String>? = null

The kubernetes cluster's name. It is unique in one Alicloud account.

Link copied to clipboard
val namePrefix: Output<String>? = null
Link copied to clipboard
val newNatGateway: Output<Boolean>? = null

Whether to create a new nat gateway while creating kubernetes cluster. Default to true. Then openapi in Alibaba Cloud are not all on intranet, So turn this option on is a good choice. Your cluster nodes and applications will have public network access. If there is a NAT gateway in the selected VPC, ACK will use this gateway by default; if there is no NAT gateway in the selected VPC, ACK will create a new NAT gateway for you and automatically configure SNAT rules. Only works for Create Operation.

Link copied to clipboard
val nodeCidrMask: Output<Int>? = null

The node cidr block to specific how many pods can run on single node. 24-28 is allowed. 24 means 2^(32-24)-1=255 and the node can run at most 255 pods. default: 24

Link copied to clipboard
val nodeNameMode: Output<String>? = null

Each node name consists of a prefix, an IP substring, and a suffix, the input format is customized,<prefix>,IPSubStringLen,<suffix>. For example "customized,aliyun.com-,5,-test", if the node IP address is 192.168.59.176, the prefix is aliyun.com-, IP substring length is 5, and the suffix is -test, the node name will be aliyun.com-59176-test.

Link copied to clipboard
val osType: Output<String>? = null

The operating system of the nodes that run pods, its valid value is either Linux or Windows. Default to Linux.

Link copied to clipboard
val password: Output<String>? = null

The password of ssh login cluster node. You have to specify one of password key_name kms_encrypted_password fields.

Link copied to clipboard
val platform: Output<String>? = null

The architecture of the nodes that run pods, its valid value AliyunLinux, AliyunLinux3. Default to AliyunLinux3.

Link copied to clipboard
val podCidr: Output<String>? = null

Flannel Specific The CIDR block for the pod network when using Flannel.

Link copied to clipboard
val podVswitchIds: Output<List<String>>? = null

Terway Specific The vswitches for the pod network when using Terway. It is recommended that pod_vswitch_ids is not belong to worker_vswitch_ids and master_vswitch_ids but must be in same availability zones. Only works for Create Operation.

Link copied to clipboard
val proxyMode: Output<String>? = null

Proxy mode is option of kube-proxy. options: iptables | ipvs. default: ipvs.

Link copied to clipboard
val rdsInstances: Output<List<String>>? = null

RDS instance list, You can choose which RDS instances whitelist to add instances to.

Link copied to clipboard
val resourceGroupId: Output<String>? = null

The ID of the resource group,by default these cloud resources are automatically assigned to the default resource group.

Link copied to clipboard
val retainResources: Output<List<String>>? = null
Link copied to clipboard
val runtime: Output<KubernetesRuntimeArgs>? = null

The runtime of containers. If you select another container runtime, see How do I select between Docker and Sandboxed-Container. See runtime below.

Link copied to clipboard
val securityGroupId: Output<String>? = null

The ID of the security group to which the ECS instances in the cluster belong. If it is not specified, a new Security group will be built.

Link copied to clipboard
val serviceAccountIssuer: Output<String>? = null

The issuer of the Service Account token for Service Account Token Volume Projection, corresponds to the iss field in the token payload. Set this to "https://kubernetes.default.svc" to enable the Token Volume Projection feature (requires specifying api_audiences as well). From cluster version 1.22+, Service Account Token Volume Projection will be enabled by default.

Link copied to clipboard
val serviceCidr: Output<String>? = null

The CIDR block for the service network. It cannot be duplicated with the VPC CIDR and CIDR used by Kubernetes cluster in VPC, cannot be modified after creation.

Link copied to clipboard

Configure whether to save certificate authority data for your cluster to attribute certificate_authority.For cluster security, recommended configuration as true. Will be removed with attribute certificate_authority removed. Network params

Link copied to clipboard
val slbInternetEnabled: Output<Boolean>? = null

Whether to create internet load balancer for API Server. Default to true. Only works for Create Operation.

Link copied to clipboard
val tags: Output<Map<String, String>>? = null

Default nil, A map of tags assigned to the kubernetes cluster and work nodes.

Link copied to clipboard
val timezone: Output<String>? = null

When you create a cluster, set the time zones for the Master and Worker nodes. You can only change the managed node time zone if you create a cluster. Once the cluster is created, you can only change the time zone of the Worker node.

Link copied to clipboard
val userCa: Output<String>? = null

The path of customized CA cert, you can use this CA to sign client certs to connect your cluster.

Link copied to clipboard
val version: Output<String>? = null

Desired Kubernetes version. If you do not specify a value, the latest available version at resource creation is used and no upgrades will occur except you set a higher version number. The value must be configured and increased to upgrade the version when desired. Downgrades are not supported by ACK.

Functions

Link copied to clipboard
open override fun toJava(): KubernetesArgs