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"
},