Skip to main content

Updating the cluster from hetzner-apalla-1-35-v5 to hetzner-apalla-1-35-v7

Documentation is tailored to each Cluster Stack release. Pick the one your cluster runs.

A Cluster Stack release bundles the Kubernetes patch version, the in-cluster components, and the node image under one version number, tested together before any node boots. Updating within a Kubernetes minor moves your cluster from one release to the next on that same minor, here from hetzner-apalla-1-35-v5 to hetzner-apalla-1-35-v7. The Kubernetes minor itself does not change.

Preparing the clusterstack object 

Check if autoSubscribe is set to true or false in your clusterstack object and follow the steps for your case:

Note

The autoSubscribe key in the clusterstack object indicates that Syself Autopilot will automatically fetch the latest ClusterStackRelease version and make it available for use.

The latest version is automatically available for you. You don't need to do anything. Keep reading the next steps.

Checking the available ClusterStackReleases 

Check if the ClusterStackReleases you need are available with:

				$ kubectl get clusterstackrelease
NAME                      K8S VERSION   READY   AGE   REASON   MESSAGE
hetzner-apalla-1-35-v5    v1.35.8       true    2d
hetzner-apalla-1-35-v7    v1.35.10      true    1m
			

Note down the value of the NAME column from the release you want to upgrade to. In this case, hetzner-apalla-1-35-v7.

Upgrading the cluster object 

Edit your cluster and change the spec.topology.class to match the NAME of the ClusterStackRelease.

This can be achieved either by editing the resource inside the management cluster, or by updating it in your GitOps repository.

In this case, you only need to update one version.

Note

The manifest below uses cluster.x-k8s.io/v1beta2, the current API version for cluster manifests. v1beta1 keeps working for now, but Syself recommends migrating: see .

cluster.yamlyaml
				apiVersion: cluster.x-k8s.io/v1beta2
kind: Cluster
metadata:
  name: mycluster
spec:
  topology:
    classRef:
      name: hetzner-apalla-1-35-v7
    controlPlane:
      replicas: 3
    workers:
      machineDeployments:
        - class: workeramd64hcloud
          name: md-0
          replicas: 1
          failureDomain: nbg1
          variables:
            overrides:
              - name: workerMachineTypeHcloud
                value: cpx42
    variables:
      - name: region
        value: nbg1
      - name: controlPlaneMachineTypeHcloud
        value: cpx42
			
Note

Managing your cluster with GitOps: Syself Autopilot sets spec.topology.version from the release that spec.topology.class points at. A version stored in Git therefore goes stale at every update and shows up as drift. Either configure your GitOps tool to ignore the field or change it to v1.35.10 together with the class. See .

Once you apply it, the cluster rolls to the Cluster Stack version you specified: new nodes come up and the old ones are removed, one at a time. This is the same node replacement that happens during routine self-healing, so a workload set up to tolerate it — replicas spread across nodes with a PodDisruptionBudget — rides through the roll without downtime.

If you need to update to another version, wait for the current update process to finish. You can check if it's done by checking the nodes in your cluster:

				$ kubectl get nodes
			

If you still have old nodes, this means the update is in progress. In this case, wait until the output shows only new nodes.

Moving to a new Kubernetes minor instead of a new release on your current one? 

See .

Not sure which release your cluster is on? 

Run this against the Syself Autopilot management cluster, not the workload cluster:

				$ kubectl get clusters -A
			

The CLUSTERCLASS column shows the Cluster Stack release and VERSION shows the Kubernetes version. Select that version in the picker at the top of this page.