Releases & Support
Version string
v1.36.4-stratum.3
│ │
│ └── the Stratum build number for this Kubernetes patch
└────────── the Kubernetes version this release is built from
The Kubernetes version leads because it is the question asked most often and it determines the support window. The suffix increments when Stratum ships a change against an unchanged Kubernetes build.
stratum version
What a release contains
Every release is the same single artifact, for amd64 and arm64, both built natively. Each carries its own component binaries and images, so a release is self-describing: the artifact is the version.
Published alongside it: an SBOM, signatures, and provenance for the build.
Support model
Stratum follows upstream Kubernetes rather than setting its own cadence. Upstream publishes a minor roughly every four months and maintains each for about fourteen, so roughly three minors are supported at any time.
A Stratum release for a given Kubernetes minor lands behind the upstream date, deliberately: each build is validated — conformance, HA failover, upgrade and restore — before it is published. Shipping late with evidence is preferred to shipping on the upstream date without it.
Within a supported minor, patch releases pick up upstream Kubernetes and etcd patches including CVE fixes, and correct defects in Stratum's own code.
Stratum has not cut its first tagged release. The version scheme and support model described here apply from the first tagged release onward. Until then, treat every build as a development snapshot with no support window and no upgrade guarantee.
Upgrading between releases
See Upgrades & Rollback. The short version: one minor at a time, no downgrades, no cross-major changes, and the tooling refuses rather than letting you find out afterwards.
Changes awaiting release
The dashboard's node shell is on by default. A cluster whose config leaves out
spec.dashboard.enableNodeShell offers a root shell on its nodes to any
dashboard user whose RBAC can create privileged pods, the cluster-admin
sign-in token included, from the first restart on this release. Set
enableNodeShell: false on every control plane before upgrading to keep it
withheld. A cis: true cluster keeps it off unless asked for, because its
Pod Security admission refuses the shell's pod. See
The dashboard.
Cluster certificate commands now stop gracefully on the first SIGHUP, as they
do on SIGINT and SIGTERM. stratum certs rotate-ca --cluster and
stratum certs migrate-etcd-ca --cluster stop at the next step boundary and
allow cleanup to run; previously SIGHUP terminated them immediately. A second
signal forces termination. Follow the command's recovery guidance before
resuming. See the certificate lifecycle upgrade notes.
The kubelets have their own client CA. On a cluster created by this release,
a certificate the cluster root signs, admin's included, no longer reaches a
kubelet's API, and the API servers reach the kubelets with an RBAC identity
rather than system:masters. A cluster created earlier keeps the cluster root
as its kubelets' client trust until stratum certs migrate-kubelet-client-ca --cluster --yes moves it; until then stratum hardening check fails its new
kubelet.1 and live.kubelet controls. See the
certificate lifecycle upgrade notes.
kube-vip no longer runs as system:masters. Its certificate names the user
system:kube-vip with no group, and the Role kube-system/stratum:kube-vip
grants it only its election Lease. Its pod no longer mounts the directory
holding the admin kubeconfig. See
kube-vip's identity.
kube-scheduler's pod mounts only its own kubeconfig, which moves to
/var/lib/stratum/kubeconfig/scheduler/. It no longer mounts the PKI
directory or the directory holding the admin kubeconfigs. An upgrade writes the
new file before restarting kube-scheduler. See
kube-scheduler's files.
NodePorts answer on every address of the interfaces Cilium attaches to, as kube-proxy's do, including a kube-vip VIP. Before, Cilium served them on each node's primary address only, so a NodePort reached through the VIP answered only from the controller holding it. Upgrading restarts the Cilium agents once, one node at a time.
Every cluster runs a dashboard, on NodePort 30443 of every node unless
spec.dashboard moves or disables it. A cluster where another Service already
holds that port, such as a fleet manager exposed on 30443, keeps the other
Service and serves the dashboard on a ClusterIP until the port is free. Set
spec.dashboard.nodePort on every control plane to give the dashboard a
NodePort of its own. See
Connect to the dashboard.
admin.conf is no longer system:masters. Its certificate carries the group
stratum:cluster-admins, which the ClusterRoleBinding stratum:cluster-admins
binds to cluster-admin, so deleting that binding revokes every admin.conf
without a CA rotation. A new root-only super-admin.conf keeps
system:masters for Stratum's own clients and for recovery. See
admin.conf and super-admin.conf.
An upgraded cluster moves off system:masters on its own. On each control
plane's first start of this release, once the bindings the new certificates
need exist, Stratum reissues every leaf and restarts that control plane's
components, one control plane at a time. Copies of admin.conf made before the
upgrade keep system:masters until they expire or the cluster CA is rotated.
The new masters.1 control in stratum hardening check fails while any
certificate on a node other than super-admin's carries system:masters. See
Upgraded clusters and system:masters.