Проект terraform-hcloud-kube-hetzner — это открытый Terraform-модуль, который разворачивает готовый к продакшену кластер K3s на Hetzner Cloud. Он берёт на себя всю рутину: поднимает виртуалки, настраивает приватную сеть, вешает балансировщики и автоматически обновляет кластер. Hetzner — немецкий провайдер с железом за вменяемые деньги и хорошим API, без лишних наворотов, которые есть у гиперскейлеров. Да ещё и с фокусом на европейские дата-центры, что для тех, кто думает о суверенности данных, плюс.
В качестве ОС на всех нодах стоит MicroOS от openSUSE. Это минималистичная, неизменяемая система под контейнеры. Она обновляется атомарно через снапшоты Btrfs: если апдейт сломался — система просто откатывается сама. Плюс корневая файловая система только для чтения: если контейнер взломают, злоумышленник не сможет прописать изменения в хосте — после перезагрузки всё слетит.
Сердце кластера — K3s от Rancher. Это облегчённая версия Kubernetes, которая упаковывает API-сервер, kube-proxy и kubelet в один бинарник. Она полностью совместима со стандартным K8s, но требует меньше возни.
Автор собирает высокодоступный кластер: три control plane и три worker ноды, разнесённые по дата-центрам в Фалькенштайне, Нюрнберге и Хельсинки. Для экономии он использует локальные диски через local-path provisioner вместо Longhorn — последний реплицирует данные между нодами, но может быть медленнее. Типы машин: CX23 (€3,49/мес) для управляющих нод, CX33 (€5,49/мес) для рабочих. На всё про всё — около €58 с НДС. Для сравнения: кластер в GKE или EKS стартует с $70–75 — это только платформа без учёта полезной нагрузки.
Можно сэкономить: отказаться от двух балансировщиков (оставить один) или вообще перейти на софтовый MetalLB; убрать публичные IP у всех нод и ходить через bastion host, WireGuard или Tailscale.
Разворачивается кластер через terraform init && terraform apply. Весь процесс занимает до десяти минут. После этого остаётся получить kubeconfig и проверить ноды через kubectl get nodes. Связка сама настраивает приватную сеть, шифрование трафика и ставит K3s. Для бэкапов используется встроенный снапшот etcd во внешнее S3-хранилище. Обновлениями управляют System Upgrade Controller и kured: первый катит версии по плану, второй аккуратно перезагружает ноды, когда это требуется.