- setup a network 10.0.0.0/8 with defaults (like hetzner panel does).
- setup a few servers (I start with 1 control-plane and 2 nodes), attaching them to the network (I did setup a snapshot image with common OS setup before, so next steps I usually skip)
- setup containerd (I do the manual setup, and all all container network plugins and rest of deps)
- setup kubeadm, kubelet, kubectl on latest or a maintained version as per kubernetes.io docs (I do again the manual setup)
- Edit on all servers /etc/hosts and add all nodes -- make sure to match the name in hetzner!!! (not necessary if you are going to do a dns server accessible in your private network)
- I'm adding a load balancer ip identical with first control-plane to be able to run the init, so later I can add the real load balancer and point to the new ip. Add it to hosts in all nodes.
- Example of init the cluster: kubeadm init --control-plane-endpoint=cplb.dev.saasified.dev --upload-certs --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=10.0.0.2 -v=5
- Add next the working nodes.
- Setup ccm with networks
- Apply cilium from this repo's e2e tests.
This worked for me. There is one thing confusing. The doc file for networks sais to match nativeRoutingCIDR to the cluster's subnet, but the e2e version is set to 10.0.0.0/8.
The result was routes as expected, Nodes got each correct ip pods pools allocated, things seem to work OK.
To follow up how to do this with K3S.