Skip to main content

Config Reference Guide

Mandatary Options for cluster

FieldDefaultDescription
hetzner_tokenHetzner token for your project.
cluster_nameName of your k3s Kubernetes cluster.
kubeconfig_path./kubeconfigAfter cluster creation, the kubeconfig for your cluster to be able to connect to your Kubernetes cluster.
k3s_versionv1.29.2+k3s1K3s version you want to use.
public_ssh_key_pathYou need to generate an SSH key pair and point to the public SSH path.
private_ssh_key_pathYou need to generate an SSH key pair and point to the private SSH path.
ssh_allowed_networks["0.0.0.0/0"]Networks allowed for SSH access.
api_allowed_networks["0.0.0.0/0"]Networks allowed for API access.
masters_poolConfiguration for the master nodes pool, including instance type, count, and location.

Config Options for cluster

FieldDefaultDescription
disable_flannelfalseSet to true if you want to install a different CNI.
debugfalseTo see in real-time what scripts are being executed. Beware, it will print the tokens, so please don't run when in a hostile environment.
cluster_cidr10.244.0.0/16Optional: A custom IPv4/IPv6 network CIDR to use for pod IPs.
service_cidr10.43.0.0/16Optional: A custom IPv4/IPv6 network CIDR to use for service IPs.
cluster_dns10.43.0.10Optional: IPv4 Cluster IP for CoreDNS service. Needs to be an address from the service_cidr range.
enable_public_net_ipv4trueSet it to false if you don't want the nodes to have a public IPv4 address. To access the public network from the nodes, you have to set up a NAT gateway.
enable_public_net_ipv6trueSet it to false if you don't want the nodes to have a public IPv6 address. To access the public network from the nodes, you have to set up a NAT gateway.
private_api_load_balancerfalseDefault is false; set it to true if you want to use a private API load balancer, ensuring that it's accessible from where you are executing this config.
api_server_hostnameDNS for the k8s API LoadBalancer. Only enable after you have run the create command at least once and done the DNS mapping to the private IP or public IP of the load balancer. Else, the kubectl command will DNS timeout.
use_ssh_agentfalseSet to true if your key has a passphrase or if SSH connections don't work or seem to hang without an agent.
ssh_port22SSH port for connecting to nodes.
private_network_subnet10.0.0.0/16Subnet for the private network. Ensure this doesn't overlap with other networks in the same project.
schedule_workloads_on_mastersfalseDetermines whether workloads can be scheduled on master nodes.
worker_node_poolsConfiguration for worker node pools, including names, instance types, counts, locations, and autoscaling configurations.
image"ubuntu-24.04"The default OS image for nodes.
snapshot_os"default"OS type when using a custom snapshot for the node image.
enable_encryptionfalseEnable encryption for data at rest.
additional_packagesArray of additional packages to install on cluster nodes.
kube_api_server_argsCustom arguments for the Kubernetes API server.
kube_scheduler_argsCustom arguments for the Kubernetes scheduler.
kube_controller_manager_argsCustom arguments for the Kubernetes
existing_network_nameName of an existing network to use for the cluster.
autoscaler_versionv2The version of the autoscaler to use.
autoscaling_imageDeprecatedDeprecated: previously used for specifying the autoscaling image.
autoscaling_image_arm64Specifies the image to use for ARM64 instance autoscaling.
autoscaling_image_x86Specifies the image to use for x86 instance autoscaling.
kube_cloud_controller_manager_argsCustom arguments for the Kubernetes cloud controller manager.
kubelet_argsCustom arguments for kubelet.
kube_proxy_argsCustom arguments for kube proxy.
disable_kube_proxyfalseSet to true to disable kube proxy, useful when using a custom CNI.
cloud_controller_manager_manifest_url"https://github.com/hetznercloud/hcloud-cloud-controller-manager/releases/download/v1.19.0/ccm-networks.yaml"URL for the cloud controller manager manifest. Useful for cloud resource management integration.
csi_driver_manifest_url"https://raw.githubusercontent.com/hetznercloud/csi-driver/v2.6.0/deploy/kubernetes/hcloud-csi.yml"URL for the CSI driver manifest, enabling storage integration with specific cloud providers.
system_upgrade_controller_manifest_url"https://raw.githubusercontent.com/rancher/system-upgrade-controller/master/manifests/system-upgrade-controller.yaml"URL for system upgrade controller manifest, facilitating cluster updates.
post_create_commandsCommands executed post-creation of cluster nodes for further customization or installation.