A Kubernetes cloud-controller-manager that integrates Kubernetes clusters with Hetzner Cloud APIs to manage nodes, load balancers, and routing.
Kubernetes cloud-controller-manager for Hetzner Cloud
This tool is used by Kubernetes administrators running clusters on Hetzner Cloud to automate the synchronization of Kubernetes node metadata with Hetzner Cloud servers, manage load balancers, and handle network routing. It ensures seamless cloud infrastructure integration, enabling efficient cluster lifecycle and resource management.
The --cloud-provider flag is deprecated since Kubernetes 1.19 but still required as of version 1.32; users should monitor Kubernetes updates for changes. Prior Kubernetes knowledge and cluster setup experience are required to deploy this tool effectively. The tool integrates tightly with Hetzner Cloud APIs and expects a Kubernetes environment configured with an overlay network such as Flannel.
Add the --cloud-provider=external flag to the kubelet configuration (e.g., via kubeadm config or systemd drop-in unit)
Initialize the Kubernetes control plane with kubeadm: sudo kubeadm init --pod-network-cidr=10.244.0.0/16
Configure kubectl to connect to the kube-apiserver by copying admin.conf to $HOME/.kube/config and adjusting permissions
Deploy the flannel CNI plugin: kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
Patch the flannel deployment to tolerate the uninitialized taint (specific kubectl patch command not fully shown)
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
Initializes the Kubernetes control plane with the specified pod network CIDR.
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
Deploys the Flannel CNI plugin for pod networking.
[Service] Environment="KUBELET_EXTRA_ARGS=--cloud-provider=external"
Example systemd drop-in configuration to add the --cloud-provider=external flag to kubelet.