Vultr DocsLatest Content


vultr_kubernetes

Updated on 15 September, 2025

Provides information about a Vultr Kubernetes Engine (VKE) Cluster with support for a single node pool.


Get information about a Vultr Kubernetes Engine (VKE) Cluster.

Note
The node pool deployed with this resource adds its own tag which is then used as an identifier for Terraform to see which node pool is part of this resource. This resource only supports a single node pool. To deploy additional worker nodes you must use vultr_kubernetes_node_pools.

Example Usage

Create a new VKE cluster:

hcl
resource "vultr_kubernetes" "k8" {
	region  = "ewr"
	label   = "vke-test"
	version = "v1.28.2+1"

	node_pools {
		node_quantity = 1
		plan          = "vc2-1c-2gb"
		label         = "vke-nodepool"
		auto_scaler   = true
		min_nodes     = 1
		max_nodes     = 2
		labels = {
			my-label = "a-label-on-all-nodes"
			my-second-label = "another-label-on-all-nodes"
		}

		taints {
			key = "a-taint"
			value = "is-tainted"
			effect = "NoExecute"
		}
	}
}

A default node pool is required when first creating the resource but it can be removed at a later point so long as there is a separate vultr_kubernetes_node_pools resource attached. For example:

hcl
resource "vultr_kubernetes" "k8" {
	region  = "ewr"
	label   = "vke-test"
	version = "v1.28.2+1"
} 

# This resource must be created and attached to the cluster
# before removing the default node from the vultr_kubernetes resource
resource "vultr_kubernetes_node_pools" "np" {
	cluster_id    = vultr_kubernetes.k8.id
	node_quantity = 1
	plan          = "vc2-1c-2gb"
	label         = "vke-nodepool"
	auto_scaler   = true
	min_nodes     = 1
	max_nodes     = 2
}

There is still a requirement that there be one node pool attached to the cluster but this should allow more flexibility about which node pool that is.

Argument Reference

The follow arguments are supported:

  • region - (Required) The region your VKE cluster will be deployed in.
  • version - (Required) The version your VKE cluster you want deployed. See Available Version
  • label - (Optional) The VKE clusters label.
  • ha_controlplanes - (Optional, Default to False) Boolean indicating if the cluster should be created with multiple, highly available controlplanes.
  • enable_firewall - (Optional, Default to False) Boolean indicating if the cluster should be created with a managed firewall.
  • vpc_id - (Optional) The ID of the VPC to use when creating the cluster. If not provided a new VPC will be created instead.

node_pools (Optional) NOTE There must be 1 node pool when the kubernetes resource is first created (see explanation above). It supports the following fields

  • node_quantity - (Required) The number of nodes in this node pool.
  • plan - (Required) The plan to be used in this node pool. See Plans List Note the minimum plan requirements must have at least 1 core and 2 gbs of memory.
  • label - (Required) The label to be used as a prefix for nodes in this node pool.
  • auto_scaler - (Optional) Enable the auto scaler for the default node pool.
  • min_nodes - (Optional) The minimum number of nodes to use with the auto scaler.
  • max_nodes - (Optional) The maximum number of nodes to use with the auto scaler.
  • labels - (Optional) A map of key/value pairs for Kubernetes node labels.
  • taints - (Optional) Taints to apply to the nodes in the node pool. Should contain key, value and effect. The effect should be one of NoSchedule, PreferNoSchedule or NoExecute.

Attributes Reference

The following attributes are exported:

  • id - The VKE cluster ID.
  • label - The VKE clusters label.
  • region - The region your VKE cluster is deployed in.
  • ha_controlplanes - Boolean indicating whether or not the cluster has multiple, highly available controlplanes.
  • firewall_group_id - The ID of the firewall group managed by this cluster.
  • version - The current kubernetes version your VKE cluster is running on.
  • status - The overall status of the cluster.
  • service_subnet - IP range that services will run on this cluster.
  • cluster_subnet - IP range that your pods will run on in this cluster.
  • endpoint - Domain for your Kubernetes clusters control plane.
  • ip - IP address of VKE cluster control plane.
  • date_created - Date of VKE cluster creation.
  • kube_config - Base64 encoded Kubeconfig for this VKE cluster.
  • cluster_ca_certificate - The base64 encoded public certificate for the cluster's certificate authority.
  • client_key - The base64 encoded private key used by clients to access the cluster.
  • client_certificate - The base64 encoded public certificate used by clients to access the cluster.
  • node_pools - Contains the default node pool that was deployed.

node_pools

  • date_created - Date of node pool creation.
  • date_updated - Date of node pool updates.
  • label - Label of node pool.
  • node_quantity - Number of nodes within node pool.
  • plan - Node plan that nodes are using within this node pool.
  • status - Status of node pool.
  • tag - Tag for node pool.
  • nodes - Array that contains information about nodes within this node pool.
  • auto_scaler - Boolean indicating if the auto scaler for the default node pool is active.
  • min_nodes - The minimum number of nodes used by the auto scaler.
  • max_nodes - The maximum number of nodes used by the auto scaler.
  • labels - Key/value pairs for Kubernetes node labels.
  • taints - Taints which should be applied to the nodes by Kubernetes. Made up of key, value and effect.

nodes

  • date_created - Date node was created.
  • id - ID of node.
  • label - Label of node.
  • status - Status of node.

Import

A kubernetes cluster created outside of terraform can be imported into the terraform state using the UUID. One thing to note is that all kubernetes resources have a default node pool with a tag of tf-vke-default. In order to avoid errors, ensure that there is a node pool with that tag set.

sh
terraform import vultr_kubernetes.my-k8s 7365a98b-5a43-450f-bd27-d768827100e5

Comments

No comments yet.