system-upgrade-contoller - a general-purpose, Kubernetes-native upgrade controller (for nodes)

Important warning

If you use this to upgrade your cluster, the version we believe you have installed and the version you actually have installed will forever differ. We understand some people want to stay closer to the latest releases than we can sometimes offer, but here be dragons...

Get started

Full documentation is available from Rancher at system-upgrade-controller

There are some example-plans for you to consider using.

A plan is need to start upgrade process on cluster. This is easily by applying the following yaml manifests to your cluster with kubectl apply -f civo-plan.yaml (or whatever you call the file containing the contents below):

# Server plan
apiVersion: upgrade.cattle.io/v1
kind: Plan
metadata:
  name: server-plan
  namespace: system-upgrade
spec:
  concurrency: 1
  cordon: true
  nodeSelector:
    matchExpressions:
    - key: node-role.kubernetes.io/master
      operator: In
      values:
      - "true"
  serviceAccountName: system-upgrade
  upgrade:
    image: rancher/k3s-upgrade
  channel: https://update.k3s.io/v1-release/channels/v1.16
---
# Agent plan
apiVersion: upgrade.cattle.io/v1
kind: Plan
metadata:
  name: agent-plan
  namespace: system-upgrade
spec:
  concurrency: 1
  cordon: true
  nodeSelector:
    matchExpressions:
    - key: node-role.kubernetes.io/master
      operator: DoesNotExist
  prepare:
    args:
    - prepare
    - server-plan
    image: rancher/k3s-upgrade:v1.17.4-k3s1
  serviceAccountName: system-upgrade
  upgrade:
    image: rancher/k3s-upgrade
  channel: https://update.k3s.io/v1-release/channels/v1.16

This will create the plan for the system-update-controller and on the Civo kubernetes nodes the k3s version will be updated to the last (stable) version.

Check it via kubectl get nodes --output wide