On this page · 11 sections
Summary. CentOS Stream 9 reaches end of life on 31 May 2027, the day RHEL 9 Full Support ends. For RHEL 9 that date is only a phase change: Maintenance Support runs from 1 June 2027 to 31 May 2032, and an extended life cycle add-on runs to 31 May 2036. For Stream 9 it is a hard stop, as it was for Stream 8, whose packages went to vault.centos.org in 2024. AlmaLinux 9 and Rocky Linux 9 also run to 2032, and Oracle lists Premier Support for Oracle Linux 9 until June 2032. So every Stream 9 machine needs a new home: CentOS Stream 10 (end of life 31 May 2030; x86-64-v3 processors only on x86), RHEL 9 or 10, or a RHEL-compatible rebuild. AlmaLinux's migration script lists Stream 9 as a supported source. Red Hat calls a Convert2RHEL conversion from Stream 9 possible but unsupported. Our verdict: move servers and base images to a 9.x rebuild or RHEL 9, keep Stream 10 for jobs that need a preview of the next RHEL, and finish by April 2027.
About this article. This guide is for teams running CentOS Stream 9 on build servers, CI runners, developer machines and container images. On 7 November 2026 we checked every date, version and command against primary sources: CentOS Project pages, Red Hat's lifecycle policy, data and documentation, the AlmaLinux, Rocky Linux and Oracle lifecycle pages, the migration tools' READMEs and the image registries. Red Hat calls its future dates approximations, so re-check before you book a change window. Prices quoted are US list prices and can change. No vendor paid for inclusion. Researched with AI assistance and reviewed by our editorial team.
Running Ubuntu 22.04 LTS too? Our guide to Ubuntu 22.04's end of standard support covers the same month.
What actually happens on 31 May 2027
CentOS Stream is the development branch that Red Hat engineers build and RHEL minor releases are cut from. Once a RHEL major version enters maintenance, its Stream branch has no more minor releases to feed, so the project ends it. That is exactly how the CentOS Project explained the end of Stream 8 in 2023: RHEL 8 was moving to maintenance, so Stream 8 had done its job and would be archived after 31 May 2024. Within days the old mirror tree was emptied and pointed users to the vault.
The same logic applies to Stream 9. Here is what each RHEL-family distribution does that day, from the vendors' lifecycle pages.
| Distribution | What changes on 31 May 2027 | Updates continue until |
|---|---|---|
| CentOS Stream 9 | End of life; no further updates | 31 May 2027 |
| RHEL 9 | Full Support ends; Maintenance Support begins 1 June 2027 | 31 May 2032 (add-on to 31 May 2036) |
| Rocky Linux 9 | Active support ends; maintenance updates continue | 31 May 2032 |
| AlmaLinux 9 | Nothing announced; follows RHEL 9 | 2032 |
| Oracle Linux 9 | Nothing; Premier Support continues | June 2032 (Extended Support to June 2035) |
| CentOS Stream 10 | Nothing | 31 May 2030 |
| RHEL 10 | Nothing; Full Support continues | Full to 31 May 2030, Maintenance to 31 May 2035 |
On RHEL 9, AlmaLinux 9, Rocky Linux 9 or Oracle Linux 9, 31 May 2027 is a phase change and you can stay until 2032. On CentOS Stream 9, it is the end.
What the maintenance phase means for RHEL 9
Red Hat's feature matrix sets out the difference. In Full Support, RHEL gets errata, minor releases, native hardware enablement and software enhancements. In Maintenance Support, errata continue but minor releases and enhancements stop. Newer hardware is then handled by running RHEL 9 as a virtual guest on a newer host, not by backporting drivers.
Errata follow Red Hat's standard criteria: security advisories for Critical and Important issues and for Moderate CVEs scoring 7 or more on CVSS (in force since 1 April 2025), plus urgent and selected high-priority bug fixes. The minimum package list for urgent bug fixes includes the kernel, glibc, openssl, openssh, systemd, sudo, dnf and, on RHEL 9, Python 3.9. Some Application Streams, such as language runtimes and databases, have shorter lives than the OS itself.
Red Hat lists 9.10 as the final RHEL 9 minor release. Its release-dates page (last updated 21 May 2026) still shows RHEL 9.8, released on 19 May 2026 with RHEL 10.2, as the newest, and Red Hat does not generally publish future dates. AlmaLinux shipped a 9.9 beta on 17 September 2026, so 9.9 is close, but do not plan around a specific day for 9.9 or 9.10.
Red Hat's layered minor-release coverage
Red Hat keeps the ten-year major-version lifecycle (about five years of Full Support and five of Maintenance) but now sells coverage for individual minor releases in three layers:
- RHEL Standard covers each minor release for 6 months.
- RHEL Premium covers eligible minor releases for 2 years.
- Extended Life Cycle Premium (ELCP), an add-on to Premium, covers even-numbered minor releases (.2, .4, .6, .8) for 6 years from general availability and the final .10 release for 9 years.
From RHEL 9, ELCP replaces Extended Update Support, Enhanced EUS and Update Services for SAP Solutions (E4S), though SAP customers keep E4S on RHEL 8 and 9. It also replaces Extended Life-cycle Support from RHEL 8.10 on 1 June 2029. After ELCP, renewable one-year Long-Life terms keep errata flowing.
This matters in one case: if a certified application needs a fixed RHEL 9 minor version, budget for Premium or ELCP. For a patched OS that takes each minor update, Standard is enough.
Your options, one by one
CentOS Stream 10
CentOS Stream 10 Coughlan runs until 31 May 2030, the end of RHEL 10 Full Support. It ships Linux kernel 6.12, Python 3.12, GCC 14, OpenJDK 21, Node.js 22, PostgreSQL 16 and MySQL 8.4. Valkey replaces Redis, the Xorg server is gone (Wayland is the default, with Xwayland for older X11 applications), and modularity has been dropped in favour of ordinary non-modular RPM packages.
The catch is hardware. The x86_64 build targets the x86-64-v3 level, which sets a minimum processor; the release notes suggest ld.so --help to see which levels your CPU supports. Red Hat notes that v3 arrived with Intel Haswell (2013) and AMD Excavator (2015), and that hypervisors may need reconfiguring to pass it through to guests. Broadcom documents RHEL 10 installs failing on vSphere clusters with a Sandy Bridge EVC baseline, which hides AVX2. If your hypervisor estate is also changing, see our VMware vSphere 8 alternatives comparison.
Stream 10 suits CI pipelines that want an early look at the next RHEL 10 minor release and teams that contribute upstream. It gives three years of runway, then the same migration again. We found no documented in-place upgrade from Stream 9 to Stream 10 on the CentOS Project's pages, so plan on rebuilding.
RHEL 9 or RHEL 10
RHEL 9 runs to 31 May 2032, with the extended life cycle add-on to 31 May 2036. RHEL 10 has Full Support to 31 May 2030 and Maintenance to 31 May 2035, with the add-on to 31 May 2039. Red Hat's online store lists one-year RHEL Server subscriptions at US$878.90 (Standard) and US$1,428.90 (Premium). It does not state the counting unit, so confirm that, and Indian pricing, with Red Hat or a partner. Our Ubuntu 24.04 vs 26.04 vs RHEL 10 server comparison sets RHEL 10 against Ubuntu.
The no-cost Red Hat Developer Subscription for Individuals covers up to 16 physical or virtual nodes on x86_64 and aarch64, self-supported, for demos, prototyping, QA and small production use. Organisations are pointed to Red Hat sales for the Developer Subscription for Teams.
Getting from Stream 9 to RHEL is the awkward part. In the latest copy of Red Hat's Convert2RHEL guide we could read (archived 3 May 2026), supported RHEL 9 conversions run from AlmaLinux, Oracle Linux or Rocky Linux 9.7 to RHEL 9.7, while a CentOS Stream 9 conversion is possible but unsupported. Stream packages can be newer than the released RHEL packages that would replace them, so treat RHEL as a rebuild target.
AlmaLinux 9 or 10
The AlmaLinux OS Foundation commits to updates for AlmaLinux 9.x until 2032, and each minor version reaches end of life when the next one ships. Since July 2023 AlmaLinux has aimed for ABI compatibility with RHEL rather than an exact rebuild, and it treats software that works on RHEL but fails on AlmaLinux as a bug. Its FAQ table does not yet have a 10.x row, but the 10.2 release notes say the AlmaLinux 10 architectures are maintained through 2035.
The almalinux-deploy script lists CentOS Stream 9 and 10 as supported sources, with the -d flag to allow downgrades because Stream runs ahead of AlmaLinux stable. It handles x86_64, aarch64, ppc64le and s390x, UEFI with Secure Boot, and OCI containers, and its README asks for a backup and a console or tmux session first. AlmaLinux 10 also ships an extra x86-64-v2 build for older hardware that RHEL 10 and Stream 10 no longer run on, with the caveat that third-party RHEL 10 packages target v3.
Rocky Linux 9
Rocky Linux 9 was released on 14 July 2022. Its active support ends on 31 May 2027 and its end of life is 31 May 2032; Rocky Linux 10 runs to 31 May 2035. Rocky ships minor releases each May and November; the previous one then moves to the vault and gets no more fixes, so stay supported by running dnf upgrade after each release.
Rocky's migrate2rocky9 script converts Enterprise Linux 9 systems to Rocky Linux 9, and its README says upgrades are not supported. Rocky's documentation guide lists CentOS Stream 8 and 9 among the sources and advises a snapshot or staging run before converting a production server, so test on a clone first.
Oracle Linux 9
Oracle's Lifetime Support Policy lists Oracle Linux 9 (GA June 2022) with Premier Support to June 2032, Extended Support to June 2035 and Sustaining Support with no end date, the longest published horizon among the 9.x rebuilds here. Oracle Linux is free to download and distribute, with support sold as a subscription. It fits teams that already hold Oracle support contracts or run Oracle-certified software.
Head-to-head comparison
Sources are those cited in the sections above.
| Option | Updates until | Cost model | Path from Stream 9 | x86 CPU baseline | Best for |
|---|---|---|---|---|---|
| CentOS Stream 10 | 31 May 2030 | Free | Rebuild; no documented in-place path | x86-64-v3 | CI that previews the next RHEL minor |
| RHEL 9 | 31 May 2032 (add-on to 2036) | Subscription; free for individuals up to 16 nodes | Rebuild; Convert2RHEL from Stream unsupported | x86-64-v2 | Vendor-certified enterprise workloads |
| RHEL 10 | Full 2030, Maintenance 31 May 2035 | Subscription | Rebuild | x86-64-v3 | New builds with a long horizon |
| AlmaLinux 9 | 2032 | Free | almalinux-deploy lists Stream 9 (with -d) | Same as RHEL 9 | Fastest like-for-like move |
| AlmaLinux 10 | 2035 (release notes) | Free | Rebuild | v3, plus a separate v2 build | EL10 on older hardware |
| Rocky Linux 9 | 31 May 2032 | Free | migrate2rocky9 (guide lists Stream 9) | x86-64-v2 | Teams already standardised on Rocky |
| Oracle Linux 9 | Premier June 2032, Extended June 2035 | Free to use; paid support tiers | Rebuild | Same as RHEL 9 | Oracle-certified stacks |
Decision table
| Pick this | If |
|---|---|
| AlmaLinux 9 | You need Stream 9 servers off an unsupported OS quickly, with a documented conversion path |
| RHEL 9 | An ISV certifies only on RHEL, or you need a vendor support contract and SLA |
| RHEL 10 or an EL10 rebuild | You are rebuilding anyway, your CPUs support x86-64-v3 and you want updates past 2032 |
| CentOS Stream 10 | You test against what RHEL will ship next and accept a 2030 end date |
| Rocky Linux 9 | Your other fleets already run Rocky and your tooling assumes it |
| Oracle Linux 9 | You run Oracle software or want the June 2035 Extended Support date |
| UBI 9 images | You need a redistributable RHEL-based container base that follows the RHEL 9 lifecycle |
Worked example: support runway from 31 May 2027
Months of updates gained by moving, counted from 31 May 2027:
| Target | End date | Months of runway | Further OS migrations before mid-2032 |
|---|---|---|---|
| CentOS Stream 10 | 31 May 2030 | 36 | 1 (in 2030) |
| AlmaLinux 9, Rocky 9, RHEL 9 | 31 May 2032 (AlmaLinux: 2032) | 60 | 0 |
| Oracle Linux 9 (Premier) | June 2032 | about 61 | 0 |
| RHEL 10 (Maintenance) | 31 May 2035 | 96 | 0 |
| RHEL 9 with add-on | 31 May 2036 | 108 | 0 |
Take a hypothetical engineering organisation with 30 CI runners, 8 container base images and 5 long-lived build servers on Stream 9: 30 + 8 + 5 = 43 systems. Moving everything to Stream 10 means 43 migrations in 2027 and 43 more in 2030, so 43 + 43 = 86 by mid-2032. Instead, move the 13 images and servers to a 9.x rebuild, keep 10 runners on Stream 10 for next-RHEL jobs and put the other 20 on a 9.x image. The 2030 repeat drops to the 10 Stream runners: 43 + 10 = 53. That is the case against choosing Stream 10 by default.
CI and container base-image plan
Most Stream 9 exposure sits in build infrastructure rather than production servers, and it is easy to miss because a base image rarely has a named owner.
Step 1: find every Stream 9 reference
Search repositories, CI configuration, Packer templates and Vagrantfiles for the names the CentOS Project publishes: the quay.io/centos/centos:stream9 container image, the centos/stream9 Vagrant box and cloud images under cloud.centos.org/centos/9-stream.
# Run from a directory containing your checked-out repositories
grep -rIn --include='*Dockerfile*' --include='Containerfile*' \
--include='*.yml' --include='*.yaml' --include='*.pkr.hcl' \
--include='Vagrantfile' -E 'stream9|9-stream|centos-stream-9' .
# On a running host or runner
grep -E '^(NAME|VERSION_ID)=' /etc/os-release
# A Stream 9 host prints NAME="CentOS Stream" and VERSION_ID="9"
Those values come from the Stream 9 release package. Add the check to your configuration-management facts so the count reaches dashboards.
Step 2: choose replacement base images
We checked these images against Red Hat's container data and the CentOS download page.
| Need | Replacement image | Lifecycle |
|---|---|---|
| Redistributable RHEL-based base, supportable on RHEL or OpenShift | registry.access.redhat.com/ubi9/ubi (UBI 9) | Follows RHEL 9 |
| Free community base with 2032 updates | almalinux:9 or rockylinux/rockylinux:9 | 2032 |
| Preview of the next RHEL minor | quay.io/centos/centos:stream10 | 31 May 2030 |
| Oracle-aligned base | oraclelinux:9 | Premier June 2032 |
For Rocky, use the rockylinux/rockylinux namespace. Its 9 tag was last rebuilt on 12 June 2026, while the Docker Official Images rockylinux:9 tag has not changed since 30 May 2024. Either way, keep a package update step in your build.
Before you standardise on UBI, note what Red Hat's FAQ says. UBI images and their package repositories are free to use and redistribute under the UBI EULA, with no subscription. Adding non-UBI RHEL packages needs a subscription and makes the image non-redistributable. Full support applies only on RHEL or OpenShift, and EPEL works only partly on UBI because many EPEL packages depend on full RHEL content.
Step 3: make the base image a build argument
# Containerfile
ARG BASE_IMAGE=registry.access.redhat.com/ubi9/ubi
FROM ${BASE_IMAGE}
RUN dnf -y update && dnf clean all
Run the pipeline as a matrix over two values of BASE_IMAGE during the transition, such as UBI 9 and Stream 10, and drop the old one once tests pass. Pin by digest in production builds and rebuild on a schedule so security fixes reach your images.
Step 4: expect package-level differences on EL10
If you jump to Stream 10 or RHEL 10, check three things that commonly break builds. The default Python moves from 3.9 to 3.12, Redis is replaced by Valkey, and module streams are gone, so scripts that enable streams with dnf module need rewriting. On x86 runners, also confirm the virtual CPU exposes x86-64-v3; a conservative hypervisor CPU model can hide the required instructions even on new hardware.
Step 5: plan for the repositories going away
As of 7 November 2026 we found no Stream 9 archive plan on the CentOS blog. If the project follows the Stream 8 precedent, packages will move to vault.centos.org and receive no further updates, and the old mirror paths will stop serving them. Any build that runs dnf install against Stream 9 mirrors will then fail or pull frozen, unpatched packages.
Migration checklist
- November to December 2026: inventory Stream 9 hosts, images, runners and Vagrant boxes; record each owner and purpose.
- January 2027: choose a target per class (images, runners, servers); test x86-64-v3 support anywhere EL10 is an option.
- February 2027: build replacement images and run CI matrices against both old and new bases.
- March 2027: convert or rebuild long-lived servers. Run almalinux-deploy with the downgrade flag only after a tested backup or snapshot, from a console or a tmux session.
- April 2027: switch default images, retire Stream 9 runner pools, and update Packer and Vagrant templates.
- May 2027: freeze remaining exceptions with named owners and a removal date.
- After 31 May 2027: block
stream9image references in admission policy or CI linting so old references do not creep back.
India and compliance note
AlmaLinux, Rocky Linux and Oracle Linux charge no licence fees, so for Indian startups the main cost here is engineering time. Compliance matters more. Customer security questionnaires and ISO 27001 or SOC 2 audits commonly ask whether every operating system is within vendor support, and an end-of-life Stream 9 image in a production pipeline is an easy finding. Keep a dated OS inventory, as you would for Windows Server 2016's end of support; it is cheaper than explaining an exception to a customer's vendor-risk team in June 2027.
How eCorpIT can help
eCorpIT is a Gurugram-based technology organisation, founded in 2021, assessed at CMMI Level 5 and MSME certified, with senior-led engineering teams working across AWS, Microsoft and Google platforms. Our data centre and cloud networking team plans and runs Linux end-of-life migrations, from inventory of hosts, runners and images to EL10 CPU checks, base-image pipelines and staged cut-overs with rollback. Talk to us at /contact-us/.
Last updated: 7 November 2026.