From c286b1199c76c5dc23ac3dabe880ff4454db1514 Mon Sep 17 00:00:00 2001 From: Zack Zlotnik Date: Mon, 2 Mar 2026 13:44:16 -0500 Subject: [PATCH] allow OSStream in OKD --- features.md | 2 +- features/features.go | 2 +- ...-config_01_machineconfigpools-OKD.crd.yaml | 53 +++++++++++++++++++ ..._machine-config_01_osimagestreams.crd.yaml | 2 +- ...-config_01_machineconfigpools-OKD.crd.yaml | 53 +++++++++++++++++++ ..._machine-config_01_osimagestreams.crd.yaml | 2 +- .../featureGate-4-10-Hypershift-OKD.yaml | 6 +-- .../featureGate-4-10-SelfManagedHA-OKD.yaml | 6 +-- 8 files changed, 116 insertions(+), 10 deletions(-) diff --git a/features.md b/features.md index 45074e64976..aa07b32cb00 100644 --- a/features.md +++ b/features.md @@ -80,7 +80,6 @@ | NewOLMOwnSingleNamespace| | Enabled | | Enabled | | Enabled | | Enabled | | NewOLMWebhookProviderOpenshiftServiceCA| | Enabled | | Enabled | | Enabled | | Enabled | | NutanixMultiSubnets| | | Enabled | Enabled | | | Enabled | Enabled | -| OSStreams| | | Enabled | Enabled | | | Enabled | Enabled | | OVNObservability| | | Enabled | Enabled | | | Enabled | Enabled | | OnPremDNSRecords| | | Enabled | Enabled | | | Enabled | Enabled | | SELinuxMount| | | Enabled | Enabled | | | Enabled | Enabled | @@ -89,6 +88,7 @@ | VSphereHostVMGroupZonal| | | Enabled | Enabled | | | Enabled | Enabled | | VSphereMixedNodeEnv| | | Enabled | Enabled | | | Enabled | Enabled | | VolumeGroupSnapshot| | | Enabled | Enabled | | | Enabled | Enabled | +| OSStreams| | | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | | AzureWorkloadIdentity| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | | BuildCSIVolumes| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | | ConsolePluginContentSecurityPolicy| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | diff --git a/features/features.go b/features/features.go index 96152dba36e..38628a03db5 100644 --- a/features/features.go +++ b/features/features.go @@ -983,7 +983,7 @@ var ( contactPerson("pabrodri"). productScope(ocpSpecific). enhancementPR("https://github.com/openshift/enhancements/pull/1874"). - enable(inTechPreviewNoUpgrade(), inDevPreviewNoUpgrade()). + enable(inTechPreviewNoUpgrade(), inDevPreviewNoUpgrade(), inOKD()). mustRegister() FeatureGateCRDCompatibilityRequirementOperator = newFeatureGate("CRDCompatibilityRequirementOperator"). diff --git a/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_machineconfigpools-OKD.crd.yaml b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_machineconfigpools-OKD.crd.yaml index 748c9ffea78..acecd5ee123 100644 --- a/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_machineconfigpools-OKD.crd.yaml +++ b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_machineconfigpools-OKD.crd.yaml @@ -293,6 +293,36 @@ spec: type: object type: object x-kubernetes-map-type: atomic + osImageStream: + description: |- + osImageStream specifies an OS stream to be used for the pool. + + This field can be optionally set to a known OSImageStream name to change the + OS and Extension images with a well-known, tested, release-provided set of images. + This enables a streamlined way of switching the pool's node OS to a different version + than the cluster default, such as transitioning to a major RHEL version. + + When set, the referenced stream overrides the cluster-wide OS + images for the pool with the OS and Extensions associated to stream. + When omitted, the pool uses the cluster-wide default OS images. + properties: + name: + description: |- + name is a required reference to an OSImageStream to be used for the pool. + + It must be a valid RFC 1123 subdomain between 1 and 253 characters in length, + consisting of lowercase alphanumeric characters, hyphens ('-'), and periods ('.'). + maxLength: 253 + minLength: 1 + type: string + x-kubernetes-validations: + - message: a RFC 1123 subdomain must consist of lower case alphanumeric + characters, '-' or '.', and must start and end with an alphanumeric + character. + rule: '!format.dns1123Subdomain().validate(self).hasValue()' + required: + - name + type: object paused: description: |- paused specifies whether or not changes to this machine config pool should be stopped. @@ -514,6 +544,29 @@ spec: by the controller. format: int64 type: integer + osImageStream: + description: |- + osImageStream specifies the last updated OSImageStream for the pool. + + When omitted, the pool is using the cluster-wide default OS images. + properties: + name: + description: |- + name is a required reference to an OSImageStream to be used for the pool. + + It must be a valid RFC 1123 subdomain between 1 and 253 characters in length, + consisting of lowercase alphanumeric characters, hyphens ('-'), and periods ('.'). + maxLength: 253 + minLength: 1 + type: string + x-kubernetes-validations: + - message: a RFC 1123 subdomain must consist of lower case alphanumeric + characters, '-' or '.', and must start and end with an alphanumeric + character. + rule: '!format.dns1123Subdomain().validate(self).hasValue()' + required: + - name + type: object poolSynchronizersStatus: description: poolSynchronizersStatus is the status of the machines managed by the pool synchronizers. diff --git a/machineconfiguration/v1alpha1/zz_generated.crd-manifests/0000_80_machine-config_01_osimagestreams.crd.yaml b/machineconfiguration/v1alpha1/zz_generated.crd-manifests/0000_80_machine-config_01_osimagestreams.crd.yaml index 68257363c3d..f629c57c407 100644 --- a/machineconfiguration/v1alpha1/zz_generated.crd-manifests/0000_80_machine-config_01_osimagestreams.crd.yaml +++ b/machineconfiguration/v1alpha1/zz_generated.crd-manifests/0000_80_machine-config_01_osimagestreams.crd.yaml @@ -6,7 +6,7 @@ metadata: api.openshift.io/merged-by-featuregates: "true" include.release.openshift.io/ibm-cloud-managed: "true" include.release.openshift.io/self-managed-high-availability: "true" - release.openshift.io/feature-set: CustomNoUpgrade,DevPreviewNoUpgrade,TechPreviewNoUpgrade + release.openshift.io/feature-set: CustomNoUpgrade,DevPreviewNoUpgrade,OKD,TechPreviewNoUpgrade labels: openshift.io/operator-managed: "" name: osimagestreams.machineconfiguration.openshift.io diff --git a/payload-manifests/crds/0000_80_machine-config_01_machineconfigpools-OKD.crd.yaml b/payload-manifests/crds/0000_80_machine-config_01_machineconfigpools-OKD.crd.yaml index 748c9ffea78..acecd5ee123 100644 --- a/payload-manifests/crds/0000_80_machine-config_01_machineconfigpools-OKD.crd.yaml +++ b/payload-manifests/crds/0000_80_machine-config_01_machineconfigpools-OKD.crd.yaml @@ -293,6 +293,36 @@ spec: type: object type: object x-kubernetes-map-type: atomic + osImageStream: + description: |- + osImageStream specifies an OS stream to be used for the pool. + + This field can be optionally set to a known OSImageStream name to change the + OS and Extension images with a well-known, tested, release-provided set of images. + This enables a streamlined way of switching the pool's node OS to a different version + than the cluster default, such as transitioning to a major RHEL version. + + When set, the referenced stream overrides the cluster-wide OS + images for the pool with the OS and Extensions associated to stream. + When omitted, the pool uses the cluster-wide default OS images. + properties: + name: + description: |- + name is a required reference to an OSImageStream to be used for the pool. + + It must be a valid RFC 1123 subdomain between 1 and 253 characters in length, + consisting of lowercase alphanumeric characters, hyphens ('-'), and periods ('.'). + maxLength: 253 + minLength: 1 + type: string + x-kubernetes-validations: + - message: a RFC 1123 subdomain must consist of lower case alphanumeric + characters, '-' or '.', and must start and end with an alphanumeric + character. + rule: '!format.dns1123Subdomain().validate(self).hasValue()' + required: + - name + type: object paused: description: |- paused specifies whether or not changes to this machine config pool should be stopped. @@ -514,6 +544,29 @@ spec: by the controller. format: int64 type: integer + osImageStream: + description: |- + osImageStream specifies the last updated OSImageStream for the pool. + + When omitted, the pool is using the cluster-wide default OS images. + properties: + name: + description: |- + name is a required reference to an OSImageStream to be used for the pool. + + It must be a valid RFC 1123 subdomain between 1 and 253 characters in length, + consisting of lowercase alphanumeric characters, hyphens ('-'), and periods ('.'). + maxLength: 253 + minLength: 1 + type: string + x-kubernetes-validations: + - message: a RFC 1123 subdomain must consist of lower case alphanumeric + characters, '-' or '.', and must start and end with an alphanumeric + character. + rule: '!format.dns1123Subdomain().validate(self).hasValue()' + required: + - name + type: object poolSynchronizersStatus: description: poolSynchronizersStatus is the status of the machines managed by the pool synchronizers. diff --git a/payload-manifests/crds/0000_80_machine-config_01_osimagestreams.crd.yaml b/payload-manifests/crds/0000_80_machine-config_01_osimagestreams.crd.yaml index 68257363c3d..f629c57c407 100644 --- a/payload-manifests/crds/0000_80_machine-config_01_osimagestreams.crd.yaml +++ b/payload-manifests/crds/0000_80_machine-config_01_osimagestreams.crd.yaml @@ -6,7 +6,7 @@ metadata: api.openshift.io/merged-by-featuregates: "true" include.release.openshift.io/ibm-cloud-managed: "true" include.release.openshift.io/self-managed-high-availability: "true" - release.openshift.io/feature-set: CustomNoUpgrade,DevPreviewNoUpgrade,TechPreviewNoUpgrade + release.openshift.io/feature-set: CustomNoUpgrade,DevPreviewNoUpgrade,OKD,TechPreviewNoUpgrade labels: openshift.io/operator-managed: "" name: osimagestreams.machineconfiguration.openshift.io diff --git a/payload-manifests/featuregates/featureGate-4-10-Hypershift-OKD.yaml b/payload-manifests/featuregates/featureGate-4-10-Hypershift-OKD.yaml index 5c40f5ada36..bf08e6641a1 100644 --- a/payload-manifests/featuregates/featureGate-4-10-Hypershift-OKD.yaml +++ b/payload-manifests/featuregates/featureGate-4-10-Hypershift-OKD.yaml @@ -247,9 +247,6 @@ { "name": "NutanixMultiSubnets" }, - { - "name": "OSStreams" - }, { "name": "OVNObservability" }, @@ -351,6 +348,9 @@ { "name": "MutableCSINodeAllocatableCount" }, + { + "name": "OSStreams" + }, { "name": "OpenShiftPodSecurityAdmission" }, diff --git a/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml b/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml index cab8d0b57be..860973845ea 100644 --- a/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml +++ b/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml @@ -241,9 +241,6 @@ { "name": "NutanixMultiSubnets" }, - { - "name": "OSStreams" - }, { "name": "OVNObservability" }, @@ -351,6 +348,9 @@ { "name": "NewOLMWebhookProviderOpenshiftServiceCA" }, + { + "name": "OSStreams" + }, { "name": "OpenShiftPodSecurityAdmission" },