How updates work
The management cluster and each client cluster in the Shturval platform are updated independently. Updates are available only through the stable channel (custom resource ShturvalUpdateChannel, updateChannel = stable).
Minor versions are released four times per year, once per quarter. A minor version includes significant changes:
- the Kubernetes version is updated;
- components or their versions may change.
The mapping between Shturval release versions and Kubernetes versions is listed on the Kubernetes versions page.
Patch versions are released optionally when vulnerabilities and defects need to be addressed. A patch version includes:
- bug fixes;
- remediation of component vulnerabilities.
Update delivery
All available updates (stable versions) for the version installed in your cluster are shown in the GUI in the Update block on the management cluster and client cluster dashboards.
If the platform runs in a closed loop (air-gapped), available versions appear after you add a bundle with the new version to the registry. To deliver updates in closed installations, follow the steps in Updating in a closed loop.
You can review the map of available update versions here.
Cluster update methods
You can update the management cluster and client clusters from the GUI or from the command line.
Note!
Successful client cluster updates are guaranteed only after the management cluster is updated to the required version.
From the platform GUI
In the GUI, you can start an update manually or configure a schedule for automatic updates. For details on starting an update from the interface, see here.
When updates run automatically, you can choose which version types (minor or patch) are allowed.
From the command line
You can start an update manually or configure a schedule for automatic updates.
For a manual update, specify the required version in the ShturvalUpdate custom resource. Use your own parameter values in the command.
Example update start command
kubectl -n shturval-update-system patch su shturval-update --type=merge -p '{"spec":{"version":"ENTER-VERSION-TO-UPDATE"}}'
To configure automatic updates on a schedule from the console:
- Create a YAML file update-schedule.yaml with a ShturvalUpdateSchedule object manifest.
Example ShturvalUpdateSchedule for scheduled updates
apiVersion: update.shturval.tech/v1beta1
kind: ShturvalUpdateSchedule
metadata:
name: <object name>
namespace: shturval-update-system
spec:
allowMinorVersion: <your parameter value>
pauseIfUpdatePeriodExceed: <your parameter value>
schedule: <your parameter value>
updatePeriod: <your parameter value>
| Parameter | Description | Data type | Example |
|---|---|---|---|
name | Name of the ShturvalUpdateSchedule to create | string | update-schedule |
allowMinorVersion | Allow updates to a minor version | boolean | true |
pauseIfUpdatePeriodExceed | Pause the update if it was started on schedule and did not finish within the specified update window | boolean | false |
schedule | Cron schedule for the start of the update window. The schedule is interpreted in the controller process time zone, usually UTC | string | 0 20 * * * |
updatePeriod | Update window duration. Default is 24 hours | string | 24h0m0s |
Note: schedule sets the start of the update window, and updatePeriod sets its duration. When checking the schedule, the controller first calculates the window from the nearest previous Cron run. If the current time falls within that window, the update starts immediately without waiting for the next scheduled run. For example, with schedule: "0 20 * * *" and updatePeriod: 24h0m0s, the update window is effectively continuous, so the update starts immediately. With the same schedule at 18:00 UTC and updatePeriod: 4h0m0s, the update starts at 20:00 UTC.
- Apply the created ShturvalUpdateSchedule in the cluster.
Command to apply update-schedule.yaml
kubectl apply -f update-schedule.yaml
- After ShturvalUpdateSchedule is applied in the cluster, add the name of the created ShturvalUpdateSchedule and the update version to the ShturvalUpdate custom resource. Use your own parameter values in the command.
Example command to start a scheduled update
kubectl -n shturval-update-system patch su shturval-update --type=merge -p '{"spec":{"followSchedule":"ENTER-NAME-OF-CREATED-ShturvalUpdateSchedule"}}'