OpenShift Support Matrix and Migration Strategy¶
Requires: Kubernetes or OpenShift cluster
Date: April 21, 2026 (updated, original November 8, 2025) Status: Active
Executive Summary¶
Based on the official Red Hat OpenShift lifecycle data (updated April 2026, OCP 4.21 is now GA):
🎯 CERTIFIED SUPPORT WINDOW (ADR-056): OCP 4.20 / 4.21 / 4.22. OCP 4.18 dropped (maintenance ended 2026-08-25). OCP 4.19 best-effort.
Current OpenShift Landscape (April 2026)¶
Active Versions¶
| Version | Status | GA Date | Full Support Ends | Maintenance Ends | EUS Term 1 Ends | EUS Term 2 Ends |
|---|---|---|---|---|---|---|
| 4.21 | ✅ Full Support | Apr 2026 | GA of 4.22 + 3mo | ~Oct 2027 | N/A | N/A |
| 4.20 | ✅ Full Support | Oct 21, 2025 | GA of 4.21 + 3mo | Apr 21, 2027 | Oct 21, 2027 | Oct 21, 2028 |
| 4.19 | ⚠️ Maintenance | Jun 17, 2025 | Jan 21, 2026 | Dec 17, 2026 | N/A | N/A |
| 4.18 | ⚠️ Maintenance / EUS | Feb 25, 2025 | Sep 17, 2025 | Aug 25, 2026 | Feb 25, 2027 | Feb 25, 2028 |
| 4.17 | ❌ End of Life | Oct 1, 2024 | May 25, 2025 | Apr 1, 2026 | N/A | N/A |
Key Observations¶
- 4.21 is the LATEST (released April 2026, GA)
- 4.18 is in Maintenance/EUS Support. Operator support will be dropped when 4.22 ships
- 4.20 is an EUS release (even-numbered = Extended Update Support)
- 4.18 is an EUS release (even-numbered = Extended Update Support)
- Rolling 3-version active window: 4.19 / 4.20 / 4.21
Kubernetes Version Mapping¶
Based on research and OpenShift release patterns:
| OpenShift | Kubernetes | Go Version | k8s.io Version | Status |
|---|---|---|---|---|
| 4.18 | 1.31 | 1.21+ | v0.31.x | ✅ Maintenance |
| 4.19 | 1.32 | 1.23+ | v0.32.x | ✅ Full Support |
| 4.20 | 1.33 | 1.24+ | v0.33.x | ✅ Full Support |
| 4.21 | 1.34 | 1.24+ | v0.34.x | ✅ GA (April 2026) |
| 4.22 | 1.35 | 1.24+ | v0.35.x | 🔄 Planned (EUS) |
Extended Update Support (EUS) Strategy¶
What is EUS?¶
- EUS releases: All even-numbered releases (4.16, 4.18, 4.20, 4.22...)
- Standard support: 18 months (6 months Full + 12 months Maintenance)
- EUS Term 1: Additional 6 months (optional, included with Premium subscriptions)
- EUS Term 2: Additional 12 months (optional add-on)
- Total EUS lifecycle: Up to 36 months (3 years)
EUS Benefits¶
- Longer support window: 24-36 months vs 18 months
- Easier upgrades: EUS-to-EUS upgrade paths (4.18 → 4.20 → 4.22)
- Stable production: Fewer forced upgrades
- Worker node flexibility: Streamlined worker node upgrades
🎯 STRATEGIC OPTIONS ANALYSIS¶
Option 1: Target 4.18 (EUS) - CONSERVATIVE ⚠️¶
Approach: - Develop on OpenShift 4.18 - Use k8s.io v0.31.x - Support 4.18, 4.19, 4.20
Pros:
✅ Widest compatibility (3 versions)
✅ EUS release with long support (until Feb 2028 with EUS Term 2)
✅ Proven stable platform
Cons:
❌ Already in Maintenance Support (Full Support ended Sep 2025)
❌ Using older Kubernetes 1.31 APIs
❌ Missing latest OpenShift features
❌ Will need upgrade soon to stay current
Timeline: - Nov 2025: Initial development on 4.18 - Apr 2026: 4.21 GA. 4.18 now clearly dated; rolling window shifts to 4.19/4.20/4.21 - Aug 2026: 4.18 Maintenance Support ends - Feb 2027: 4.18 EUS Term 1 ends (if purchased) - Feb 2028: 4.18 EUS Term 2 ends (if purchased)
Option 2: Target 4.20 (EUS) - RECOMMENDED ✅¶
Approach: - Develop on OpenShift 4.20 (current latest) - Use k8s.io v0.33.x - Support 4.20, 4.21 (when released) - Provide backward compatibility guidance for 4.18/4.19
Pros:
✅ Current latest release (Oct 2025)
✅ Full Support until ~Jul 2026 (4.21 GA Apr 2026 + 3 months)
✅ EUS release with long support (until Oct 2028 with EUS Term 2)
✅ Latest Kubernetes 1.33 APIs
✅ Latest OpenShift features
✅ Forward compatible with 4.21 (now GA)
✅ EUS-to-EUS upgrade path (4.20 → 4.22 → 4.24)
Cons:
⚠️ May not work on 4.18/4.19 without modifications
⚠️ Requires k8s.io v0.33.x (need to verify operator-sdk compatibility)
⚠️ Newer = less battle-tested (but only 18 days old)
Timeline: - Oct 2025: Develop on 4.20 - Apr 2026: 4.21 GA. 4.20 compatibility confirmed - Apr 2027: 4.20 Maintenance Support ends - Oct 2027: 4.20 EUS Term 1 ends - Oct 2028: 4.20 EUS Term 2 ends
Option 3: Target 4.19 - MIDDLE GROUND ⚖️¶
Approach: - Develop on OpenShift 4.19 - Use k8s.io v0.32.x - Support 4.19, 4.20, 4.21
Pros:
✅ Full Support until Jan 2026
✅ Kubernetes 1.32 APIs
✅ Forward compatible with 4.20 and 4.21
✅ More battle-tested than 4.20 (5 months old)
Cons:
❌ NOT an EUS release (odd-numbered)
❌ Shorter support window (18 months total)
❌ Maintenance Support ends Dec 2026 (13 months from now)
❌ Not the latest
❌ Will need upgrade to 4.20 or 4.21 soon
Timeline: - Jun 2025: Develop on 4.19 - Jan 2026: Full Support ends - Apr 2026: 4.21 GA released - Dec 2026: 4.19 Maintenance Support ends (FORCED UPGRADE)
📊 Comparison Matrix¶
| Criteria | 4.18 (EUS) | 4.19 | 4.20 (EUS) |
|---|---|---|---|
| Current Status | ⚠️ Maintenance | ✅ Full Support | ✅ Full Support |
| Kubernetes | 1.31 | 1.32 | 1.33 |
| k8s.io Version | v0.31.x | v0.32.x | v0.33.x |
| EUS Release | ✅ Yes | ❌ No | ✅ Yes |
| Max Support | 36 months | 18 months | 36 months |
| Support Ends | Feb 2028 | Dec 2026 | Oct 2028 |
| Latest Features | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Stability | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| Future-Proof | ⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ |
| Upgrade Path | 4.20→4.22 | 4.20→4.21 | 4.22→4.24 |
🎯 UPDATED RECOMMENDATION (April 2026)¶
Active Support Window: OCP 4.19 / 4.20 / 4.21¶
Primary Target: OpenShift 4.20 (Kubernetes 1.33, k8s.io v0.33.x), EUS, long support
Full Support: OpenShift 4.21 (Kubernetes 1.34, k8s.io v0.34.x), newest GA
Maintenance Support: OpenShift 4.19, active but entering end-of-life window
Dropped: 4.18 removed from active CI; maintained via EUS track only for existing users
Rationale¶
- 4.21 is now GA (released April 2026). Rolling window shifts to 4.19/4.20/4.21
- EUS Benefits: 4.20 has long support (up to Oct 2028 with EUS Term 2)
- OCP-stream versioning: v1.0.8 → OCP 4.19+, v1.0.9 → OCP 4.20+, v1.0.10 → OCP 4.22+
- EUS Upgrade Path: Clean EUS-to-EUS upgrades (4.20 → 4.22 → 4.24)
Implementation Strategy (Current)¶
Phase 1: Infrastructure (Apr 2026) - ✅ Standardize IMAGE_TAG_BASE to quay.io/takinosh/ - ✅ Upgrade GO_VERSION to 1.24 across all CI - ✅ Add release-4.21 to bundle-validation.yaml triggers
Phase 2: Feature Development (Apr - Jun 2026) - Implement issues #7 (ADR-021), #8 (ADR-022), #9 (ADR-030) - Generate bundle for v1.0.8 (OCP 4.19 stream) - Submit v1.0.7 OperatorHub PR first
Phase 3: OCP 4.21 Track (Jun - Sep 2026) - Create release-4.21 branch - Validate scorecard on OCP 4.21 - Release v1.0.10 on OCP 4.21 stream - Plan EUS-to-EUS upgrade (4.20 → 4.22) in 2027
Multi-Version Support Strategy¶
Operator Support Matrix¶
# Recommended in operator metadata
apiVersion: operators.coreos.com/v1alpha1
kind: ClusterServiceVersion
metadata:
annotations:
# Declare supported OpenShift versions
com.redhat.openshift.versions: "v4.19-v4.21"
spec:
minKubeVersion: 1.32.0 # Kubernetes 1.32 (OpenShift 4.19)
Version Detection in Code¶
// pkg/platform/detector.go
func (d *Detector) GetRecommendedBuildStrategy(ctx context.Context) (string, error) {
info, err := d.GetOpenShiftInfo(ctx)
if err != nil {
return "", err
}
// Detect OpenShift version
version, err := d.GetOpenShiftVersion(ctx)
if err != nil {
return "s2i", nil // Default to S2I
}
// Recommend strategy based on version
switch {
case version >= "4.20":
// 4.20+ has latest Tekton
return "tekton", nil
case version >= "4.18":
// 4.18-4.19 use S2I
return "s2i", nil
default:
return "s2i", nil
}
}
Dependency Resolution Plan¶
Step 1: Research Compatible Versions¶
# Find OpenShift API commit for 4.20 (Oct 2025)
# Look for commits around Oct 21, 2025 that use k8s.io v0.33.x
git clone https://github.com/openshift/api
cd api
git log --since="2025-10-01" --until="2025-11-01" --oneline
# Find commit with k8s.io v0.33.x in go.mod
Step 2: Find Tekton Version¶
# Find Tekton Pipeline version compatible with k8s.io v0.33.x
# Check Tekton releases from Oct-Nov 2025
Step 3: Update go.mod¶
// go.mod
module github.com/tosin2013/jupyter-notebook-validator-operator
go 1.21
require (
// Kubernetes 1.33 (OpenShift 4.20)
k8s.io/api v0.33.0
k8s.io/apimachinery v0.33.0
k8s.io/client-go v0.33.0
// OpenShift API (compatible with k8s 1.33 / OpenShift 4.20)
github.com/openshift/api v0.0.0-<commit-hash> // Oct 2025 commit
// Tekton Pipeline (compatible with k8s 1.33)
github.com/tektoncd/pipeline v<version>
)
Next Steps¶
- ✅ Immediate: Research OpenShift API and Tekton versions for k8s.io v0.33.x
- ✅ This Week: Update go.mod with compatible versions
- ✅ This Week: Build and test pkg/build/ strategies
- ✅ Next Week: Deploy to OpenShift 4.20 cluster for integration testing
- ✅ Dec 2025: Test on OpenShift 4.19 for backward compatibility
- ✅ Feb 2026: Test on OpenShift 4.21 when released
OLM v1 Status¶
OLM v1 (Operator Lifecycle Manager v1) is GA since OCP 4.20. This operator continues to use OLM Classic for distribution via OperatorHub.io and community-operators-prod. See OLM Strategy for the detailed rationale.
| OCP | OLM v1 Status | This operator |
|---|---|---|
| 4.18 | Tech Preview | OLM Classic only |
| 4.19 | Tech Preview | OLM Classic only |
| 4.20 | GA | OLM Classic (OperatorHub) |
| 4.21 | GA | OLM Classic (OperatorHub) |
| 4.22 | GA (current EUS) | OLM Classic (OperatorHub) |
The registry+v1 bundle format is compatible with both OLM Classic and OLM v1.
References¶
- OpenShift Life Cycle: https://access.redhat.com/support/policy/updates/openshift
- OpenShift Product Life Cycles: https://access.redhat.com/product-life-cycles?product=Red%20Hat%20OpenShift%20Container%20Platform
- Kubernetes Version Skew: https://kubernetes.io/releases/version-skew-policy/
- Operator SDK: https://sdk.operatorframework.io/
Conclusion¶
Target OpenShift 4.20 (EUS) is the strategic choice that balances: - ✅ Current technology (latest GA release) - ✅ Long-term support (EUS with 36-month lifecycle) - ✅ Latest features (Kubernetes 1.33, OpenShift 4.20 capabilities) - ✅ Future-proof (forward compatible with 4.21, EUS upgrade path to 4.22) - ✅ Market timing (will be standard by production release)
This positions your operator for success through 2028 with minimal forced upgrades.