add tools/check-sylva-units-k8s-versions.py

This MR introduces a CI tool that checks the consistency of things related to k8s version:

  • the version of k8s bundled in OCI artifacts listed in sylva_diskimagebuilder_images, and other related datastructures, needs to be consistent with the version we list in k8s_version_map (or cluster.version)

  • for RKE2, these k8s versions are then used to select versions of some specific Helm charts (calico, coredns, ingress-nginx, multus) ; the versions need to be consistent with the ones supported for that RKE2 version (as specified at https://github.com/rancher/rke2/blob/ $version /charts/chart_versions.yaml)

(for the implementation, some stuff was borrowed from !4078)

Example output (current, ok):

tools/check-sylva-units-k8s-versions.py
2025-09-30 18:04:56,831 INFO: getting OCI artifact oci://registry.gitlab.com/sylva-projects/sylva-elements/kiwi-imagebuilder/leapmicro-6-0-plain-rke2-1-30:0.3.1
2025-09-30 18:04:57,980 INFO: OS image oci://registry.gitlab.com/sylva-projects/sylva-elements/kiwi-imagebuilder/leapmicro-6-0-plain-rke2-1-30:0.3.1: 1.30.14+rke2r2 rke2
2025-09-30 18:04:57,980 INFO: getting OCI artifact oci://registry.gitlab.com/sylva-projects/sylva-elements/kiwi-imagebuilder/leapmicro-6-0-plain-rke2-1-31:0.3.1
2025-09-30 18:04:59,140 INFO: OS image oci://registry.gitlab.com/sylva-projects/sylva-elements/kiwi-imagebuilder/leapmicro-6-0-plain-rke2-1-31:0.3.1: 1.31.13+rke2r1 rke2
2025-09-30 18:04:59,140 INFO: getting OCI artifact oci://registry.gitlab.com/sylva-projects/sylva-elements/kiwi-imagebuilder/leapmicro-6-0-plain-rke2-1-32:0.3.1
2025-09-30 18:05:00,321 INFO: OS image oci://registry.gitlab.com/sylva-projects/sylva-elements/kiwi-imagebuilder/leapmicro-6-0-plain-rke2-1-32:0.3.1: 1.32.9+rke2r1 rke2
2025-09-30 18:05:00,321 INFO: getting OCI artifact oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/opensuse-15-6-hardened-rke2-1-30:0.6.2
2025-09-30 18:05:01,621 INFO: OS image oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/opensuse-15-6-hardened-rke2-1-30:0.6.2: 1.30.14+rke2r2 rke2
2025-09-30 18:05:01,621 INFO: getting OCI artifact oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/opensuse-15-6-hardened-rke2-1-31:0.6.2
2025-09-30 18:05:02,820 INFO: OS image oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/opensuse-15-6-hardened-rke2-1-31:0.6.2: 1.31.13+rke2r1 rke2
2025-09-30 18:05:02,820 INFO: getting OCI artifact oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/opensuse-15-6-hardened-rke2-1-32:0.6.2
2025-09-30 18:05:04,012 INFO: OS image oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/opensuse-15-6-hardened-rke2-1-32:0.6.2: 1.32.9+rke2r1 rke2
2025-09-30 18:05:04,012 INFO: getting OCI artifact oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/opensuse-15-6-plain-kubeadm-1-30:0.6.2
2025-09-30 18:05:05,201 INFO: OS image oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/opensuse-15-6-plain-kubeadm-1-30:0.6.2: 1.30.14 kubeadm
2025-09-30 18:05:05,201 INFO: getting OCI artifact oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/opensuse-15-6-plain-kubeadm-1-31:0.6.2
2025-09-30 18:05:06,399 INFO: OS image oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/opensuse-15-6-plain-kubeadm-1-31:0.6.2: 1.31.13 kubeadm
2025-09-30 18:05:06,399 INFO: getting OCI artifact oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/opensuse-15-6-plain-kubeadm-1-32:0.6.2
2025-09-30 18:05:07,627 INFO: OS image oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/opensuse-15-6-plain-kubeadm-1-32:0.6.2: 1.32.9 kubeadm
2025-09-30 18:05:07,627 INFO: getting OCI artifact oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/opensuse-15-6-plain-rke2-1-30:0.6.2
2025-09-30 18:05:08,886 INFO: OS image oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/opensuse-15-6-plain-rke2-1-30:0.6.2: 1.30.14+rke2r2 rke2
2025-09-30 18:05:08,886 INFO: getting OCI artifact oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/opensuse-15-6-plain-rke2-1-31:0.6.2
2025-09-30 18:05:10,055 INFO: OS image oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/opensuse-15-6-plain-rke2-1-31:0.6.2: 1.31.13+rke2r1 rke2
2025-09-30 18:05:10,055 INFO: getting OCI artifact oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/opensuse-15-6-plain-rke2-1-32:0.6.2
2025-09-30 18:05:11,231 INFO: OS image oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/opensuse-15-6-plain-rke2-1-32:0.6.2: 1.32.9+rke2r1 rke2
2025-09-30 18:05:11,231 INFO: getting OCI artifact oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/ubuntu-noble-hardened-rke2-1-30:0.6.2
2025-09-30 18:05:12,516 INFO: OS image oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/ubuntu-noble-hardened-rke2-1-30:0.6.2: 1.30.14+rke2r2 rke2
2025-09-30 18:05:12,516 INFO: getting OCI artifact oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/ubuntu-noble-hardened-rke2-1-31:0.6.2
2025-09-30 18:05:13,705 INFO: OS image oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/ubuntu-noble-hardened-rke2-1-31:0.6.2: 1.31.13+rke2r1 rke2
2025-09-30 18:05:13,705 INFO: getting OCI artifact oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/ubuntu-noble-hardened-rke2-1-32:0.6.2
2025-09-30 18:05:15,139 INFO: OS image oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/ubuntu-noble-hardened-rke2-1-32:0.6.2: 1.32.9+rke2r1 rke2
2025-09-30 18:05:15,139 INFO: getting OCI artifact oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/ubuntu-noble-plain-ck8s-1-31:0.6.2
2025-09-30 18:05:16,320 INFO: OS image oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/ubuntu-noble-plain-ck8s-1-31:0.6.2: 1.31.6 ck8s
2025-09-30 18:05:16,320 INFO: getting OCI artifact oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/ubuntu-noble-plain-ck8s-1-32:0.6.2
2025-09-30 18:05:17,480 INFO: OS image oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/ubuntu-noble-plain-ck8s-1-32:0.6.2: 1.32.5 ck8s
2025-09-30 18:05:17,480 INFO: getting OCI artifact oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/ubuntu-noble-plain-kubeadm-1-30:0.6.2
2025-09-30 18:05:18,693 INFO: OS image oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/ubuntu-noble-plain-kubeadm-1-30:0.6.2: 1.30.14 kubeadm
2025-09-30 18:05:18,693 INFO: getting OCI artifact oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/ubuntu-noble-plain-kubeadm-1-31:0.6.2
2025-09-30 18:05:19,889 INFO: OS image oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/ubuntu-noble-plain-kubeadm-1-31:0.6.2: 1.31.13 kubeadm
2025-09-30 18:05:19,889 INFO: getting OCI artifact oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/ubuntu-noble-plain-kubeadm-1-32:0.6.2
2025-09-30 18:05:21,219 INFO: OS image oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/ubuntu-noble-plain-kubeadm-1-32:0.6.2: 1.32.9 kubeadm
2025-09-30 18:05:21,219 INFO: getting OCI artifact oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/ubuntu-noble-plain-rke2-1-30:0.6.2
2025-09-30 18:05:22,432 INFO: OS image oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/ubuntu-noble-plain-rke2-1-30:0.6.2: 1.30.14+rke2r2 rke2
2025-09-30 18:05:22,432 INFO: getting OCI artifact oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/ubuntu-noble-plain-rke2-1-31:0.6.2
2025-09-30 18:05:23,598 INFO: OS image oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/ubuntu-noble-plain-rke2-1-31:0.6.2: 1.31.13+rke2r1 rke2
2025-09-30 18:05:23,598 INFO: getting OCI artifact oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/ubuntu-noble-plain-rke2-1-32:0.6.2
2025-09-30 18:05:24,777 INFO: OS image oci://registry.gitlab.com/sylva-projects/sylva-elements/diskimage-builder/ubuntu-noble-plain-rke2-1-32:0.6.2: 1.32.9+rke2r1 rke2
2025-09-30 18:05:24,780 INFO: Checking consistency for rke2 1.30.14+rke2r2
2025-09-30 18:05:26,836 INFO:   k8s_version_map[1.30] matches
2025-09-30 18:05:27,218 INFO:   calico Helm chart version check
2025-09-30 18:05:27,218 INFO:     rke2-calico v3.30.100 selected ?=? RKE2 supported version: v3.30.100
2025-09-30 18:05:27,218 INFO:   calico-crd Helm chart version check
2025-09-30 18:05:27,219 INFO:     rke2-calico-crd v3.30.100 selected ?=? RKE2 supported version: v3.30.100
2025-09-30 18:05:27,219 INFO:   ingress-nginx Helm chart version check
2025-09-30 18:05:27,219 INFO:     rke2-ingress-nginx 4.12.401 selected ?=? RKE2 supported version: 4.12.401
2025-09-30 18:05:27,219 INFO:   coredns Helm chart version check
2025-09-30 18:05:27,219 INFO:     rke2-coredns 1.42.302 selected ?=? RKE2 supported version: 1.42.302
2025-09-30 18:05:27,219 INFO:   multus Helm chart version check
2025-09-30 18:05:27,219 INFO:     rke2-multus v4.2.106 selected ?=? RKE2 supported version: v4.2.106
2025-09-30 18:05:27,219 INFO: Checking consistency for kubeadm 1.30.14
2025-09-30 18:05:29,263 INFO:   k8s_version_map[1.30] matches
2025-09-30 18:05:29,263 INFO: Checking consistency for rke2 1.31.13+rke2r1
2025-09-30 18:05:31,326 INFO:   k8s_version_map[1.31] matches
2025-09-30 18:05:31,714 INFO:   calico Helm chart version check
2025-09-30 18:05:31,714 INFO:     rke2-calico v3.30.300 selected ?=? RKE2 supported version: v3.30.300
2025-09-30 18:05:31,714 INFO:   calico-crd Helm chart version check
2025-09-30 18:05:31,714 INFO:     rke2-calico-crd v3.30.300 selected ?=? RKE2 supported version: v3.30.300
2025-09-30 18:05:31,714 INFO:   ingress-nginx Helm chart version check
2025-09-30 18:05:31,714 INFO:     rke2-ingress-nginx 4.12.600 selected ?=? RKE2 supported version: 4.12.600
2025-09-30 18:05:31,714 INFO:   coredns Helm chart version check
2025-09-30 18:05:31,714 INFO:     rke2-coredns 1.43.302 selected ?=? RKE2 supported version: 1.43.302
2025-09-30 18:05:31,714 INFO:   multus Helm chart version check
2025-09-30 18:05:31,714 INFO:     rke2-multus v4.2.205 selected ?=? RKE2 supported version: v4.2.205
2025-09-30 18:05:31,714 INFO: Checking consistency for kubeadm 1.31.13
2025-09-30 18:05:33,790 INFO:   k8s_version_map[1.31] matches
2025-09-30 18:05:33,790 INFO: Checking consistency for ck8s 1.31.6
2025-09-30 18:05:35,837 INFO:   k8s_version_map[1.31] matches
2025-09-30 18:05:35,837 INFO: Checking consistency for rke2 1.32.9+rke2r1
2025-09-30 18:05:37,904 INFO:   k8s_version_map[1.32] matches
2025-09-30 18:05:38,352 INFO:   calico Helm chart version check
2025-09-30 18:05:38,353 INFO:     rke2-calico v3.30.300 selected ?=? RKE2 supported version: v3.30.300
2025-09-30 18:05:38,353 INFO:   calico-crd Helm chart version check
2025-09-30 18:05:38,353 INFO:     rke2-calico-crd v3.30.300 selected ?=? RKE2 supported version: v3.30.300
2025-09-30 18:05:38,353 INFO:   ingress-nginx Helm chart version check
2025-09-30 18:05:38,353 INFO:     rke2-ingress-nginx 4.12.600 selected ?=? RKE2 supported version: 4.12.600
2025-09-30 18:05:38,353 INFO:   coredns Helm chart version check
2025-09-30 18:05:38,353 INFO:     rke2-coredns 1.43.302 selected ?=? RKE2 supported version: 1.43.302
2025-09-30 18:05:38,353 INFO:   multus Helm chart version check
2025-09-30 18:05:38,353 INFO:     rke2-multus v4.2.205 selected ?=? RKE2 supported version: v4.2.205
2025-09-30 18:05:38,353 INFO: Checking consistency for kubeadm 1.32.9
2025-09-30 18:05:40,415 INFO:   k8s_version_map[1.32] matches
2025-09-30 18:05:40,415 INFO: Checking consistency for ck8s 1.32.5
2025-09-30 18:05:42,475 INFO:   k8s_version_map[1.32] matches

Example from https://gitlab.com/sylva-projects/sylva-core/-/jobs/11514154002 (in which I had artificially introduced errors):

025-09-26 16:28:44,227 WARNING: rke2: cluster.version is different from k8s version bundled is OS image artifact ():
2025-09-26 16:28:44,227 WARNING:   cluster.version:        1.30.14+rke2r4
2025-09-26 16:28:44,227 WARNING:   in OS image artifacts:  1.30.14+rke2r2
2025-09-26 16:28:44,228 WARNING: rke2: cluster.version is different from k8s version bundled is OS image artifact ():
2025-09-26 16:28:44,228 WARNING:   cluster.version:        1.31.14+rke2r1
2025-09-26 16:28:44,228 WARNING:   in OS image artifacts:  1.31.12+rke2r1
2025-09-26 16:28:44,228 WARNING: RKE2: Helm chart version mismatch for unit 'calico', for k8s 1.31.12+rke2r1
2025-09-26 16:28:44,228 WARNING:   unit definition:                 v3.30.3999 (from helm_chart_versions)
2025-09-26 16:28:44,228 WARNING:   upstream RKE2 reference version: v3.30.200
2025-09-26 16:28:44,228 WARNING:      from https://github.com/rancher/rke2/blob/v1.31.12%2Brke2r1/charts/chart_versions.yaml
2025-09-26 16:28:44,228 WARNING: RKE2: Helm chart version mismatch for unit 'calico', for k8s 1.32.8+rke2r1
2025-09-26 16:28:44,229 WARNING:   unit definition:                 v3.30.3999 (from helm_chart_versions)
2025-09-26 16:28:44,229 WARNING:   upstream RKE2 reference version: v3.30.200
2025-09-26 16:28:44,229 WARNING:      from https://github.com/rancher/rke2/blob/v1.32.8%2Brke2r1/charts/chart_versions.yaml

CI configuration

Below you can choose test deployment variants to run in this MR's CI.

Click to open to CI configuration

Legend:

Icon Meaning Available values
☁️ Infra Provider capd, capo, capm3
🚀 Bootstrap Provider kubeadm (alias kadm), rke2, okd, ck8s
🐧 Node OS ubuntu, suse, na, leapmicro
🛠️ Deployment Options light-deploy, dev-sources, ha, misc, maxsurge-0, logging, no-logging, openbao
🎬 Pipeline Scenarios Available scenario list and description
  • 🎬 preview ☁️ capd 🚀 kadm 🐧 ubuntu

  • 🎬 preview ☁️ capo 🚀 rke2 🐧 suse

  • 🎬 preview ☁️ capm3 🚀 rke2 🐧 ubuntu

  • ☁️ capd 🚀 kadm 🛠️ light-deploy 🐧 ubuntu

  • ☁️ capd 🚀 rke2 🛠️ light-deploy 🐧 suse

  • ☁️ capo 🚀 rke2 🐧 suse

  • ☁️ capo 🚀 rke2 🐧 leapmicro

  • ☁️ capo 🚀 kadm 🐧 ubuntu

  • ☁️ capo 🚀 rke2 🎬 rolling-update 🛠️ ha 🐧 ubuntu

  • ☁️ capo 🚀 kadm 🎬 wkld-k8s-upgrade 🐧 ubuntu

  • ☁️ capo 🚀 rke2 🎬 rolling-update-no-wkld 🛠️ ha 🐧 suse

  • ☁️ capo 🚀 rke2 🎬 sylva-upgrade-from-1.5.x 🛠️ ha 🐧 ubuntu

  • ☁️ capo 🚀 rke2 🎬 sylva-upgrade-from-1.5.x 🛠️ ha,misc 🐧 ubuntu

  • ☁️ capo 🚀 rke2 🛠️ ha,misc 🐧 ubuntu

  • ☁️ capo 🚀 rke2 🛠️ ha,misc,openbao🐧 suse

  • ☁️ capm3 🚀 rke2 🐧 suse

  • ☁️ capm3 🚀 kadm 🐧 ubuntu

  • ☁️ capm3 🚀 ck8s 🐧 ubuntu

  • ☁️ capm3 🚀 kadm 🎬 rolling-update-no-wkld 🛠️ ha,misc 🐧 ubuntu

  • ☁️ capm3 🚀 rke2 🎬 wkld-k8s-upgrade 🛠️ ha 🐧 suse

  • ☁️ capm3 🚀 kadm 🎬 rolling-update 🛠️ ha 🐧 ubuntu

  • ☁️ capm3 🚀 rke2 🎬 sylva-upgrade-from-1.5.x 🛠️ ha 🐧 suse

  • ☁️ capm3 🚀 rke2 🛠️ misc,ha 🐧 suse

  • ☁️ capm3 🚀 rke2 🎬 sylva-upgrade-from-1.5.x 🛠️ ha,misc 🐧 suse

  • ☁️ capm3 🚀 kadm 🎬 rolling-update 🛠️ ha 🐧 suse

  • ☁️ capm3 🚀 ck8s 🎬 rolling-update 🛠️ ha 🐧 ubuntu

  • ☁️ capm3 🚀 rke2|okd 🎬 no-update 🐧 ubuntu|na

Global config for deployment pipelines

  • autorun pipelines
  • allow failure on pipelines
  • record sylvactl events

Notes:

  • Enabling autorun will make deployment pipelines to be run automatically without human interaction
  • Disabling allow failure will make deployment pipelines mandatory for pipeline success.
  • if both autorun and allow failure are disabled, deployment pipelines will need manual triggering but will be blocking the pipeline

Be aware: after configuration change, pipeline is not triggered automatically. Please run it manually (by clicking the run pipeline button in Pipelines tab) or push new code.

Edited by Thomas Morin

Merge request reports

Loading