New
- Added support for the Singapore location.
- We’ve reintroduced the option to create a load balancer for the Kubernetes API, but this time it’s optional and turned off by default. If you want to use it, you can enable it by setting
create_load_balancer_for_the_kubernetes_api: false
. Just a heads-up: the load balancer was removed a few versions back because Hetzner doesn’t yet support load balancers in their firewalls. This means you can’t restrict access to the Kubernetes API when using a load balancer. However, since some users asked for it, we’ve brought it back for flexibility. You can now enable it if needed!
Fixes
- Fixed a problem that caused extra placement groups to be created.
- Resolved an issue where pagination was missing when fetching SSH keys in projects with more than 25 keys.
- Fixed the assignment of labels and taints to nodes.
Improvements
- We took out the library we were using for SSH sessions because it occasionally caused issues with certain keys. Those problems were tricky to figure out and fix. Now, we’re using the standard
ssh
binary that comes with the operating system to run commands on remote nodes. This change should help prevent those strange compatibility problems that popped up with some keys or environments. - The cached list of available k3s versions now refreshes automatically if the cache is older than 7 days.
- The system now waits for at least one worker node to be ready before installing the Cluster Autoscaler. This prevents premature autoscaling when creating a new cluster. Previously, the Cluster Autoscaler was installed before worker nodes were ready, which could trigger autoscaling as soon as pending pods were detected. Reference.
- For consistency, autoscaled node pools now include the cluster name as a prefix in node names, similar to static node pools.
- Added a confirmation prompt before deleting a cluster to avoid accidental deletion when using the wrong config file.
- Clusters are now protected from deletion by default as an additional measure to prevent accidentally deleting the wrong one. If you're working with test or temporary clusters and need to delete them, you can disable this protection by setting
protect_against_deletion: false
in the configuration file. - Added a confirmation prompt before upgrading a cluster to prevent accidentally upgrading the wrong cluster.
- Improved exception handling during the software installation phase. Previously, a failure in installing a software component could stop the setup of worker nodes.
- Disabled the
local-path
storage class by default to avoid conflicts where k3s automatically sets it as the default storage class. - The tool no longer opens firewall ports for the embedded registry mirror if a private network is available.
- Made the image tag for the Cluster Autoscaler customizable using the setting
manifests.cluster_autoscaler_container_image_tag
. - Autoscaled nodes are now considered when determining upgrade concurrency.
- Added error and debugging information when SSH sessions to nodes fail.
Miscellaneous
- Upgraded the System Upgrade Controller to the latest version.
- Upgraded the Hetzner CSI Driver to the latest version.
- Upgraded the Hetzner Cloud Controller Manager to the latest version.
- Upgraded the Cluster Autoscaler to the latest version.
- Upgraded Cilium to the latest version.
Upgrading from v2.1.0
- If you have active autoscaled node pools (pools with one or more nodes currently in the cluster), you need to set the property
include_cluster_name_as_prefix
tofalse
for those pools due to the naming convention change mentioned earlier. - If you are using the
local-path
storage class, you need to setlocal_path_storage_class.enabled
totrue
. - If you'd rather use a load balancer for the Kubernetes API instead of constantly switching between contexts, you can enable it by setting
create_load_balancer_for_the_kubernetes_api: true
. After that, just run thecreate
command to set up the load balancer.