diff --git a/features.md b/features.md index a334f3209d5..cc9ae130edf 100644 --- a/features.md +++ b/features.md @@ -69,7 +69,6 @@ | HyperShiftOnlyDynamicResourceAllocation| Enabled | | Enabled | | Enabled | | Enabled | | | ImageModeStatusReporting| | | Enabled | Enabled | | | Enabled | Enabled | | IngressComponentRouteLabels| | | Enabled | Enabled | | | Enabled | Enabled | -| IngressControllerMultipleHAProxyVersions| | | Enabled | Enabled | | | Enabled | Enabled | | IrreconcilableMachineConfig| | | Enabled | Enabled | | | Enabled | Enabled | | KMSEncryption| | | Enabled | Enabled | | | Enabled | Enabled | | MachineAPIMigration| | | Enabled | Enabled | | | Enabled | Enabled | @@ -108,6 +107,7 @@ | GatewayAPIWithoutOLM| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | | ImageStreamImportMode| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | | IngressControllerDynamicConfigurationManager| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | +| IngressControllerMultipleHAProxyVersions| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | | InsightsConfig| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | | InsightsOnDemandDataGather| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | | KMSv1| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | diff --git a/features/features.go b/features/features.go index 9b2d7b272d1..2c31a79a5af 100644 --- a/features/features.go +++ b/features/features.go @@ -679,7 +679,7 @@ var ( contactPerson("miciah"). productScope(ocpSpecific). enhancementPR("https://github.com/openshift/enhancements/pull/1965"). - enable(inDevPreviewNoUpgrade(), inTechPreviewNoUpgrade()). + enable(inDefault(), inOKD(), inDevPreviewNoUpgrade(), inTechPreviewNoUpgrade()). mustRegister() FeatureGateMinimumKubeletVersion = newFeatureGate("MinimumKubeletVersion"). diff --git a/operator/v1/zz_generated.crd-manifests/0000_50_ingress_00_ingresscontrollers-Default.crd.yaml b/operator/v1/zz_generated.crd-manifests/0000_50_ingress_00_ingresscontrollers-Default.crd.yaml index 42328359543..85ff60dbf83 100644 --- a/operator/v1/zz_generated.crd-manifests/0000_50_ingress_00_ingresscontrollers-Default.crd.yaml +++ b/operator/v1/zz_generated.crd-manifests/0000_50_ingress_00_ingresscontrollers-Default.crd.yaml @@ -924,6 +924,32 @@ spec: required: - type type: object + haproxyVersion: + description: |- + haproxyVersion specifies the HAProxy version to use for this + IngressController. + + OpenShift 5.0 introduces HAProxy 3.2 as its default version and supports + HAProxy 2.8 from OpenShift 4.22 for migration purposes. When an OpenShift + release introduces a new default HAProxy version, that HAProxy version + becomes available as a pinnable value in subsequent OpenShift releases, + providing a smooth migration path for administrators who want to defer + HAProxy upgrades. + + Valid values for OpenShift 5.0: + - Unset (default): Uses HAProxy 3.2 (the default for OpenShift 5.0) + - "3.2": Explicitly pins HAProxy 3.2 for preservation during cluster + upgrades to future OpenShift releases + - "2.8": Uses HAProxy 2.8 from OpenShift 4.22 (migration support, will + be dropped in the next OpenShift release) + + If a specific HAProxy version is set and would become unsupported in a + target cluster upgrade, a preflight check will block the cluster upgrade + until this field is updated to unset or a supported version. + enum: + - "2.8" + - "3.2" + type: string httpCompression: description: |- httpCompression defines a policy for HTTP traffic compression. @@ -2561,6 +2587,20 @@ spec: domain: description: domain is the actual domain in use. type: string + effectiveHAProxyVersion: + description: |- + effectiveHAProxyVersion reports the HAProxy version currently in use by + this IngressController. This reflects the resolved value of the + spec.haproxyVersion field. When omitted, the effective value has not yet + been resolved by the operator or the feature is not enabled for this cluster. + + Examples for OpenShift 5.0: + - "3.2": Using HAProxy 3.2 + - "2.8": Using HAProxy 2.8 + enum: + - "2.8" + - "3.2" + type: string endpointPublishingStrategy: description: endpointPublishingStrategy is the actual strategy in use. diff --git a/operator/v1/zz_generated.crd-manifests/0000_50_ingress_00_ingresscontrollers-OKD.crd.yaml b/operator/v1/zz_generated.crd-manifests/0000_50_ingress_00_ingresscontrollers-OKD.crd.yaml index 90b250d4a66..8220b5b91e4 100644 --- a/operator/v1/zz_generated.crd-manifests/0000_50_ingress_00_ingresscontrollers-OKD.crd.yaml +++ b/operator/v1/zz_generated.crd-manifests/0000_50_ingress_00_ingresscontrollers-OKD.crd.yaml @@ -924,6 +924,32 @@ spec: required: - type type: object + haproxyVersion: + description: |- + haproxyVersion specifies the HAProxy version to use for this + IngressController. + + OpenShift 5.0 introduces HAProxy 3.2 as its default version and supports + HAProxy 2.8 from OpenShift 4.22 for migration purposes. When an OpenShift + release introduces a new default HAProxy version, that HAProxy version + becomes available as a pinnable value in subsequent OpenShift releases, + providing a smooth migration path for administrators who want to defer + HAProxy upgrades. + + Valid values for OpenShift 5.0: + - Unset (default): Uses HAProxy 3.2 (the default for OpenShift 5.0) + - "3.2": Explicitly pins HAProxy 3.2 for preservation during cluster + upgrades to future OpenShift releases + - "2.8": Uses HAProxy 2.8 from OpenShift 4.22 (migration support, will + be dropped in the next OpenShift release) + + If a specific HAProxy version is set and would become unsupported in a + target cluster upgrade, a preflight check will block the cluster upgrade + until this field is updated to unset or a supported version. + enum: + - "2.8" + - "3.2" + type: string httpCompression: description: |- httpCompression defines a policy for HTTP traffic compression. @@ -2561,6 +2587,20 @@ spec: domain: description: domain is the actual domain in use. type: string + effectiveHAProxyVersion: + description: |- + effectiveHAProxyVersion reports the HAProxy version currently in use by + this IngressController. This reflects the resolved value of the + spec.haproxyVersion field. When omitted, the effective value has not yet + been resolved by the operator or the feature is not enabled for this cluster. + + Examples for OpenShift 5.0: + - "3.2": Using HAProxy 3.2 + - "2.8": Using HAProxy 2.8 + enum: + - "2.8" + - "3.2" + type: string endpointPublishingStrategy: description: endpointPublishingStrategy is the actual strategy in use. diff --git a/payload-manifests/featuregates/featureGate-4-10-Hypershift-Default.yaml b/payload-manifests/featuregates/featureGate-4-10-Hypershift-Default.yaml index ec8522bd04e..ef6936dbd87 100644 --- a/payload-manifests/featuregates/featureGate-4-10-Hypershift-Default.yaml +++ b/payload-manifests/featuregates/featureGate-4-10-Hypershift-Default.yaml @@ -161,9 +161,6 @@ { "name": "IngressComponentRouteLabels" }, - { - "name": "IngressControllerMultipleHAProxyVersions" - }, { "name": "IrreconcilableMachineConfig" }, @@ -340,6 +337,9 @@ { "name": "IngressControllerDynamicConfigurationManager" }, + { + "name": "IngressControllerMultipleHAProxyVersions" + }, { "name": "InsightsConfig" }, diff --git a/payload-manifests/featuregates/featureGate-4-10-Hypershift-OKD.yaml b/payload-manifests/featuregates/featureGate-4-10-Hypershift-OKD.yaml index 70c900d6eeb..39861c608ff 100644 --- a/payload-manifests/featuregates/featureGate-4-10-Hypershift-OKD.yaml +++ b/payload-manifests/featuregates/featureGate-4-10-Hypershift-OKD.yaml @@ -163,9 +163,6 @@ { "name": "IngressComponentRouteLabels" }, - { - "name": "IngressControllerMultipleHAProxyVersions" - }, { "name": "IrreconcilableMachineConfig" }, @@ -342,6 +339,9 @@ { "name": "IngressControllerDynamicConfigurationManager" }, + { + "name": "IngressControllerMultipleHAProxyVersions" + }, { "name": "InsightsConfig" }, diff --git a/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-Default.yaml b/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-Default.yaml index 4016cb15783..c9bf9008953 100644 --- a/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-Default.yaml +++ b/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-Default.yaml @@ -164,9 +164,6 @@ { "name": "IngressComponentRouteLabels" }, - { - "name": "IngressControllerMultipleHAProxyVersions" - }, { "name": "IrreconcilableMachineConfig" }, @@ -331,6 +328,9 @@ { "name": "IngressControllerDynamicConfigurationManager" }, + { + "name": "IngressControllerMultipleHAProxyVersions" + }, { "name": "InsightsConfig" }, diff --git a/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml b/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml index 94c9ac3c3ac..629b480ddfa 100644 --- a/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml +++ b/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml @@ -166,9 +166,6 @@ { "name": "IngressComponentRouteLabels" }, - { - "name": "IngressControllerMultipleHAProxyVersions" - }, { "name": "IrreconcilableMachineConfig" }, @@ -333,6 +330,9 @@ { "name": "IngressControllerDynamicConfigurationManager" }, + { + "name": "IngressControllerMultipleHAProxyVersions" + }, { "name": "InsightsConfig" },