···11# RKE2 Version
2233-RKE2, Kubernetes, and other clustered software has the property of not being able to update atomically.
44-Most software in nixpkgs, like for example bash, can be updated as part of a `nixos-rebuild switch`
55-without having to worry about the old and the new bash interacting in some way.
33+RKE2, Kubernetes, and other clustered software has the property of not being able to update
44+atomically. Most software in nixpkgs, like for example bash, can be updated as part of a
55+`nixos-rebuild switch` without having to worry about the old and the new bash interacting in some
66+way. RKE2/Kubernetes, on the other hand, is typically run across several machines, and each machine
77+is updated independently. As such, different versions of the package and NixOS module must maintain
88+compatibility with each other through temporary version skew during updates. The upstream Kubernetes
99+project documents this in their
1010+[version-skew policy](https://kubernetes.io/releases/version-skew-policy/#supported-component-upgrade-order).
1111+1212+Within nixpkgs, we strive to maintain a valid "upgrade path" that does not run afoul of the upstream
1313+version skew policy.
614715> [!NOTE]
88-> Upgrade the server nodes first, one at a time. Once all servers have been upgraded, you may then upgrade agent nodes.
1616+> Upgrade the server nodes first, one at a time. Once all servers have been upgraded, you may then
1717+> upgrade agent nodes.
9181019## Release Channels
11201212-RKE2 has three main release channels, which are: `stable`, `latest` and `testing`.
2121+RKE2 has two named release channels, i.e. `stable` and `latest`. Additionally, there exists a
2222+release channel tied to each Kubernetes minor version, e.g. `v1.32`.
13231414-The `stable` channel is the default channel and is recommended for production use.
1515-The `latest` channel is the latest release.
1616-The `testing` channel is the latest release, including pre-releases.
2424+Nixpkgs follows active minor version release channels (typically 4 at a time) and sets aliases for
2525+`rke2_stable` and `rke2_latest` accordingly.
17261818-| Channel | Description |
1919-| --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
2020-| `stable` | **(Default)** Stable is recommended for production environments. These releases have been through a period of community hardening, and are compatible with the most recent release of Rancher. |
2121-| `latest` | Latest is recommended for trying out the latest features. These releases have not yet been through a period of community hardening, and may not be compatible with Rancher. |
2222-| `testing` | The most recent release, including pre-releases. |
2727+Patch releases should be backported to to the latest stable release branch, however, new minor
2828+versions are not backported.
23292424-Learn more about the [RKE2 release channels](https://docs.rke2.io/upgrade/manual_upgrade).
3030+For further information visit the
3131+[RKE2 release channels documentation](https://docs.rke2.io/upgrades/manual_upgrade?_highlight=manua#release-channels).
25322626-For an exhaustive and up-to-date list of channels, you can visit the
2727-[rke2 channel service API](https://update.rke2.io/v1-release/channels).
2828-For more technical details on how channels work, you can see the [channelserver project](https://github.com/rancher/channelserver).
3333+## EOL Versions
29343030-> [!TIP]
3131-> When attempting to upgrade to a new version of RKE2,
3232-> the [Kubernetes version skew policy](https://kubernetes.io/docs/setup/release/version-skew-policy) applies.
3333-> Ensure that your plan **does not skip intermediate minor versions** when upgrading. Nothing in the upgrade process will
3434-> protect you against unsupported changes to the Kubernetes version.
3535+Approximately every 4 months a minor RKE2 version reaches EOL. EOL versions should be removed from
3636+`nixpkgs-unstable`, preferably by throwing with an explanatory message in
3737+`pkgs/top-level/aliases.nix`. With stable releases, however, it isn't expected that packages will be
3838+removed. Instead we set `meta.knownVulnerabilities` for stable EOL packages, like it is also done
3939+for EOL JDKs, browser engines, Node.js versions, etc.
4040+4141+For further information on the RKE2 lifecycle, see the
4242+[SUSE Product Support Lifecycle page](https://www.suse.com/lifecycle#rke2).
···12911291 ring-daemon = throw "'ring-daemon' has been renamed to/replaced by 'jami-daemon'"; # Converted to throw 2024-10-17
12921292 rippled = throw "rippled has been removed as it was broken and had not been updated since 2022"; # Added 2024-11-25
12931293 rippled-validator-keys-tool = throw "rippled-validator-keys-tool has been removed as it was broken and had not been updated since 2022"; # Added 2024-11-25
12941294+ rke2_testing = throw "'rke2_testing' has been removed from nixpkgs as the RKE2 testing channel no longer serves releases"; # Added 2025-06-02
12941295 rockbox_utility = rockbox-utility; # Added 2022-03-17
12951296 rnix-hashes = throw "'rnix-hashes' has been removed due to lack of upstream maintenance"; # Added 2025-01-25
12961297 rpiboot-unstable = throw "'rpiboot-unstable' has been renamed to/replaced by 'rpiboot'"; # Converted to throw 2024-10-17