Skip to content

Terraform module for deploying kubernetes clusters in Hetzner Cloud.

Notifications You must be signed in to change notification settings

mastodon/terraform-hetzner-k8s-kubeone

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mastodon Terraform - Hetzner KubeOne Cluster

Terraform module for creating a Kubernetes cluster in Hetzner using KubeOne.

As Hetzner doesn't have a managed Kubernetes service, this module sets up a cluster to be compatible with KubeOne as the cluster manager.

Requirements

Name Version
terraform >= 1.8.0
hcloud ~> 1.47.0

Providers

Name Version
hcloud ~> 1.47.0

Modules

No modules.

Resources

Name Type
hcloud_firewall.cluster resource
hcloud_load_balancer.load_balancer resource
hcloud_load_balancer_network.load_balancer resource
hcloud_load_balancer_service.load_balancer_service resource
hcloud_load_balancer_target.load_balancer_target resource
hcloud_network.net resource
hcloud_network_subnet.kubeone resource
hcloud_placement_group.control_plane resource
hcloud_server.control_plane resource
hcloud_server_network.control_plane resource
hcloud_ssh_keys.admin_keys data source

Inputs

Name Description Type Default Required
apiserver_alternative_names subject alternative names for the API Server signing cert. list(string) [] no
cluster_name prefix for cloud resources string n/a yes
control_plane_datacenters n/a list(string)
[
"fsn1",
"nbg1",
"hel1"
]
no
control_plane_replicas n/a number 3 no
control_plane_source_ips List of IPs that are allowed to connect to the control instances list(string) n/a yes
control_plane_type n/a string "cx22" no
datacenter n/a string "nbg1" no
disable_kubeapi_loadbalancer E2E tests specific variable to disable usage of any loadbalancer in front of kubeapi-server bool false no
image n/a string "ubuntu-20.04" no
initial_machinedeployment_operating_system_profile Name of operating system profile for MachineDeployments, only applicable if operating-system-manager addon is enabled.
If not specified, the default value will be added by machine-controller addon.
string "" no
ip_range ip range to use for private network string "192.168.0.0/16" no
ip_range_cloud ip range to use for the cloud instances string "192.168.0.0/17" no
lb_type n/a string "lb11" no
network_zone network zone to use for private network string "eu-central" no
ssh_agent_socket SSH Agent socket, default to grab from $SSH_AUTH_SOCK string "env:SSH_AUTH_SOCK" no
ssh_key_selector Selector to use when automatically pulling existing SSH keys. string "role=admin" no
ssh_keys List of SSH keys that will have access to the server. If none are given, existing SSH keys in Hetzner will be used. list(string) [] no
ssh_port SSH port to be used to provision instances number 22 no
ssh_username SSH user, used only in output string "root" no
worker_os OS to run on worker machines string "ubuntu" no
worker_type n/a string "cx22" no

Outputs

Name Description
kubeone_api kube-apiserver LB endpoint
kubeone_hosts Control plane endpoints to SSH to
ssh_commands n/a