create_hetzner_cluster
Create and provision a new Kubernetes cluster on Hetzner Cloud. Requires a Hetzner API credential, at least one SSH key credential, and a datacenter location. Optionally configure GitOps by providing a git credential name and repository: GitHub by default, or Bitbucket Cloud with gitops_provider 'bitbucket_cloud'. Optionally provide node_groups to create heterogeneous worker pools instead of a single homogeneous worker pool defined by worker_count and worker_server_type. The cluster will begin provisioning immediately after creation. Use list_provider_credentials to find credential IDs, list_instance_types for server sizes and list prices (it does not show per-location stock: omit the server types to let the platform pick ones the location can provision), and list_gitops_credentials/list_gitops_repositories for GitOps setup.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Cluster name. Must be unique within the organisation. | |
| location | Yes | Hetzner datacenter location (e.g., 'fsn1', 'nbg1', 'hel1', 'ash'). | |
| description | No | Optional cluster description. | |
| node_groups | No | Optional heterogeneous worker pools. When provided, worker_count and worker_server_type are ignored. Each entry creates `count` workers of the given `instance_type` with the given labels and taints. | |
| distribution | No | Kubernetes distribution. Default: 'kubeadm' (vanilla upstream Kubernetes with Cilium). 'k3s' is the lightweight alternative. | |
| worker_count | No | Number of worker nodes when node_groups is not provided. Must be at least 1 unless node_groups is supplied. Default: 1. | |
| credential_id | Yes | UUID of the Hetzner API credential. Get from list_provider_credentials with provider='hetzner'. | |
| gitops_branch | No | Git branch for GitOps. Default: 'master'. | |
| gitops_provider | No | Provider of the GitOps repository: 'github' (the default when omitted) or 'bitbucket_cloud'. Pass the credential's provider from list_gitops_credentials. | |
| gitops_repo_slug | No | Bitbucket Cloud repository slug of the GitOps repository (from list_gitops_repositories). Only with gitops_provider 'bitbucket_cloud', together with gitops_workspace. | |
| gitops_workspace | No | Bitbucket Cloud workspace of the GitOps repository (from list_gitops_repositories). Only with gitops_provider 'bitbucket_cloud', together with gitops_repo_slug. | |
| gitops_repository | No | GitOps repository: 'owner/repo' on GitHub (e.g., 'org/repo'), 'workspace/repo_slug' on Bitbucket Cloud. Requires gitops_credential_name. | |
| include_networking | No | Include networking stack (Traefik + cert-manager) configured for hcloud. Default: true, matching the portal create default. | |
| kubernetes_version | No | Version for the chosen distribution. With the default distribution (kubeadm) pass a plain upstream tag such as v1.36.4, from list_kubernetes_versions with engine 'kubeadm'. With distribution 'k3s' pass a k3s build such as v1.35.7+k3s1, from engine 'k3s' (a bare patch resolves to its newest +k3sN build). A +k3sN build without distribution 'k3s' is refused. Omit it to install the catalogue's stable version for the distribution. | |
| worker_server_type | No | Hetzner server type for worker nodes when node_groups is not provided. Omit it and the platform picks the cheapest x86 type the location can provision right now with at least 2 vCPU and 4 GB. The create result names the type it picked. | |
| bastion_server_type | No | Hetzner server type for the bastion host. Omit it and the platform picks the cheapest x86 type the location can provision right now with at least 2 vCPU and 4 GB: Hetzner stock varies per location, so there is no fixed default. The create result names the type it picked. An explicit type that the location cannot provision is refused with the available alternatives. | |
| control_plane_count | No | Number of control plane nodes (1 or 3 for HA). Default: 1. | |
| ssh_key_credential_id | No | UUID of the primary SSH key credential. Either this or ssh_key_credential_ids must be provided. Get from list_provider_credentials with provider='ssh-key'. | |
| gitops_credential_name | No | Name of the git credential for GitOps (from list_gitops_credentials), GitHub or Bitbucket Cloud. Requires gitops_repository, or for Bitbucket Cloud gitops_workspace and gitops_repo_slug. | |
| ssh_key_credential_ids | No | Optional list of additional SSH key credential UUIDs to authorise on the cluster servers. Use this to grant multiple users access. Each value must be a UUID returned by list_provider_credentials with provider='ssh-key'. | |
| control_plane_server_type | No | Hetzner server type for control plane nodes. Omit it and the platform picks the cheapest x86 type the location can provision right now with at least 4 vCPU and 8 GB. The create result names the type it picked. |