From b02757d9023b78460bbae7809b1b598a5704aedf Mon Sep 17 00:00:00 2001 From: Patrick Dillon Date: Thu, 10 Sep 2026 15:29:36 -0400 Subject: [PATCH] Promote GCD to GA in 4.22 Promotes GCD feature gate to GA in 4.22. --- ...erator_01_infrastructures-Default.crd.yaml | 22 +++++++++++++++++++ ...g-operator_01_infrastructures-OKD.crd.yaml | 22 +++++++++++++++++++ features.md | 2 +- features/features.go | 2 +- ...nfig_01_controllerconfigs-Default.crd.yaml | 22 +++++++++++++++++++ ...e-config_01_controllerconfigs-OKD.crd.yaml | 22 +++++++++++++++++++ ...erator_01_infrastructures-Default.crd.yaml | 22 +++++++++++++++++++ ...g-operator_01_infrastructures-OKD.crd.yaml | 22 +++++++++++++++++++ ...nfig_01_controllerconfigs-Default.crd.yaml | 22 +++++++++++++++++++ ...e-config_01_controllerconfigs-OKD.crd.yaml | 22 +++++++++++++++++++ .../featureGate-4-10-Hypershift-Default.yaml | 6 ++--- .../featureGate-4-10-Hypershift-OKD.yaml | 6 ++--- ...eatureGate-4-10-SelfManagedHA-Default.yaml | 6 ++--- .../featureGate-4-10-SelfManagedHA-OKD.yaml | 6 ++--- 14 files changed, 190 insertions(+), 14 deletions(-) diff --git a/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Default.crd.yaml b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Default.crd.yaml index 8d94616b357..88bade26819 100644 --- a/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Default.crd.yaml +++ b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Default.crd.yaml @@ -1822,6 +1822,28 @@ spec: - message: resourceTags are immutable and may only be configured during installation rule: self.all(x, x in oldSelf) && oldSelf.all(x, x in self) + universeDomain: + description: |- + universeDomain is the GCP universe domain for the cluster, detected from + the installer credentials. Components with their own GCP credentials should + read the universe domain from those credentials, as they are the authoritative + source. This field is provided for components that do not have GCP credentials + and for general observability. + + When omitted, standard public GCP (googleapis.com) is assumed. + + universeDomain is an optional field that, when specified, must be non-empty and at most + 253 characters. It must be a valid DNS subdomain: containing only lowercase alphanumeric + characters, '-' or '.', and starting and ending with an alphanumeric character. + maxLength: 253 + minLength: 1 + type: string + x-kubernetes-validations: + - message: 'universeDomain must be a valid DNS subdomain: + contain no more than 253 characters, contain only lowercase + alphanumeric characters, ''-'' or ''.'', and start and + end with an alphanumeric character' + rule: '!format.dns1123Subdomain().validate(self).hasValue()' type: object x-kubernetes-validations: - message: resourceLabels may only be configured during installation diff --git a/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-OKD.crd.yaml b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-OKD.crd.yaml index b107d7e44ca..42d9db10bdf 100644 --- a/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-OKD.crd.yaml +++ b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-OKD.crd.yaml @@ -1822,6 +1822,28 @@ spec: - message: resourceTags are immutable and may only be configured during installation rule: self.all(x, x in oldSelf) && oldSelf.all(x, x in self) + universeDomain: + description: |- + universeDomain is the GCP universe domain for the cluster, detected from + the installer credentials. Components with their own GCP credentials should + read the universe domain from those credentials, as they are the authoritative + source. This field is provided for components that do not have GCP credentials + and for general observability. + + When omitted, standard public GCP (googleapis.com) is assumed. + + universeDomain is an optional field that, when specified, must be non-empty and at most + 253 characters. It must be a valid DNS subdomain: containing only lowercase alphanumeric + characters, '-' or '.', and starting and ending with an alphanumeric character. + maxLength: 253 + minLength: 1 + type: string + x-kubernetes-validations: + - message: 'universeDomain must be a valid DNS subdomain: + contain no more than 253 characters, contain only lowercase + alphanumeric characters, ''-'' or ''.'', and start and + end with an alphanumeric character' + rule: '!format.dns1123Subdomain().validate(self).hasValue()' type: object x-kubernetes-validations: - message: resourceLabels may only be configured during installation diff --git a/features.md b/features.md index aa5874e0383..17d1c18ec30 100644 --- a/features.md +++ b/features.md @@ -60,7 +60,6 @@ | GCPCustomAPIEndpoints| | | Enabled | Enabled | | | Enabled | Enabled | | GCPCustomAPIEndpointsInstall| | | Enabled | Enabled | | | Enabled | Enabled | | GCPDualStackInstall| | | Enabled | Enabled | | | Enabled | Enabled | -| GCPSovereignCloudInstall| | | Enabled | Enabled | | | Enabled | Enabled | | HyperShiftOnlyDynamicResourceAllocation| Enabled | | Enabled | | Enabled | | Enabled | | | ImageModeStatusReporting| | | Enabled | Enabled | | | Enabled | Enabled | | IngressControllerDynamicConfigurationManager| | | Enabled | Enabled | | | Enabled | Enabled | @@ -99,6 +98,7 @@ | EventTTL| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | | ExternalOIDC| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | | ExternalOIDCWithUIDAndExtraClaimMappings| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | +| GCPSovereignCloudInstall| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | | GatewayAPIWithoutOLM| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | | ImageStreamImportMode| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | | InsightsConfig| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | Enabled | diff --git a/features/features.go b/features/features.go index a36283627ff..2d375091816 100644 --- a/features/features.go +++ b/features/features.go @@ -877,7 +877,7 @@ var ( contactPerson("barbacbd"). productScope(ocpSpecific). enhancementPR("https://github.com/openshift/enhancements/pull/1977"). - enable(inTechPreviewNoUpgrade(), inDevPreviewNoUpgrade()). + enable(inDefault(), inOKD(), inTechPreviewNoUpgrade(), inDevPreviewNoUpgrade()). mustRegister() FeatureCBORServingAndStorage = newFeatureGate("CBORServingAndStorage"). diff --git a/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Default.crd.yaml b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Default.crd.yaml index df2f24ce080..4855747f7bd 100644 --- a/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Default.crd.yaml +++ b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Default.crd.yaml @@ -2121,6 +2121,28 @@ spec: be configured during installation rule: self.all(x, x in oldSelf) && oldSelf.all(x, x in self) + universeDomain: + description: |- + universeDomain is the GCP universe domain for the cluster, detected from + the installer credentials. Components with their own GCP credentials should + read the universe domain from those credentials, as they are the authoritative + source. This field is provided for components that do not have GCP credentials + and for general observability. + + When omitted, standard public GCP (googleapis.com) is assumed. + + universeDomain is an optional field that, when specified, must be non-empty and at most + 253 characters. It must be a valid DNS subdomain: containing only lowercase alphanumeric + characters, '-' or '.', and starting and ending with an alphanumeric character. + maxLength: 253 + minLength: 1 + type: string + x-kubernetes-validations: + - message: 'universeDomain must be a valid DNS subdomain: + contain no more than 253 characters, contain only + lowercase alphanumeric characters, ''-'' or ''.'', + and start and end with an alphanumeric character' + rule: '!format.dns1123Subdomain().validate(self).hasValue()' type: object x-kubernetes-validations: - message: resourceLabels may only be configured during diff --git a/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-OKD.crd.yaml b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-OKD.crd.yaml index e4bef30eb6d..c85cbe2c743 100644 --- a/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-OKD.crd.yaml +++ b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-OKD.crd.yaml @@ -2121,6 +2121,28 @@ spec: be configured during installation rule: self.all(x, x in oldSelf) && oldSelf.all(x, x in self) + universeDomain: + description: |- + universeDomain is the GCP universe domain for the cluster, detected from + the installer credentials. Components with their own GCP credentials should + read the universe domain from those credentials, as they are the authoritative + source. This field is provided for components that do not have GCP credentials + and for general observability. + + When omitted, standard public GCP (googleapis.com) is assumed. + + universeDomain is an optional field that, when specified, must be non-empty and at most + 253 characters. It must be a valid DNS subdomain: containing only lowercase alphanumeric + characters, '-' or '.', and starting and ending with an alphanumeric character. + maxLength: 253 + minLength: 1 + type: string + x-kubernetes-validations: + - message: 'universeDomain must be a valid DNS subdomain: + contain no more than 253 characters, contain only + lowercase alphanumeric characters, ''-'' or ''.'', + and start and end with an alphanumeric character' + rule: '!format.dns1123Subdomain().validate(self).hasValue()' type: object x-kubernetes-validations: - message: resourceLabels may only be configured during diff --git a/payload-manifests/crds/0000_10_config-operator_01_infrastructures-Default.crd.yaml b/payload-manifests/crds/0000_10_config-operator_01_infrastructures-Default.crd.yaml index 8d94616b357..88bade26819 100644 --- a/payload-manifests/crds/0000_10_config-operator_01_infrastructures-Default.crd.yaml +++ b/payload-manifests/crds/0000_10_config-operator_01_infrastructures-Default.crd.yaml @@ -1822,6 +1822,28 @@ spec: - message: resourceTags are immutable and may only be configured during installation rule: self.all(x, x in oldSelf) && oldSelf.all(x, x in self) + universeDomain: + description: |- + universeDomain is the GCP universe domain for the cluster, detected from + the installer credentials. Components with their own GCP credentials should + read the universe domain from those credentials, as they are the authoritative + source. This field is provided for components that do not have GCP credentials + and for general observability. + + When omitted, standard public GCP (googleapis.com) is assumed. + + universeDomain is an optional field that, when specified, must be non-empty and at most + 253 characters. It must be a valid DNS subdomain: containing only lowercase alphanumeric + characters, '-' or '.', and starting and ending with an alphanumeric character. + maxLength: 253 + minLength: 1 + type: string + x-kubernetes-validations: + - message: 'universeDomain must be a valid DNS subdomain: + contain no more than 253 characters, contain only lowercase + alphanumeric characters, ''-'' or ''.'', and start and + end with an alphanumeric character' + rule: '!format.dns1123Subdomain().validate(self).hasValue()' type: object x-kubernetes-validations: - message: resourceLabels may only be configured during installation diff --git a/payload-manifests/crds/0000_10_config-operator_01_infrastructures-OKD.crd.yaml b/payload-manifests/crds/0000_10_config-operator_01_infrastructures-OKD.crd.yaml index b107d7e44ca..42d9db10bdf 100644 --- a/payload-manifests/crds/0000_10_config-operator_01_infrastructures-OKD.crd.yaml +++ b/payload-manifests/crds/0000_10_config-operator_01_infrastructures-OKD.crd.yaml @@ -1822,6 +1822,28 @@ spec: - message: resourceTags are immutable and may only be configured during installation rule: self.all(x, x in oldSelf) && oldSelf.all(x, x in self) + universeDomain: + description: |- + universeDomain is the GCP universe domain for the cluster, detected from + the installer credentials. Components with their own GCP credentials should + read the universe domain from those credentials, as they are the authoritative + source. This field is provided for components that do not have GCP credentials + and for general observability. + + When omitted, standard public GCP (googleapis.com) is assumed. + + universeDomain is an optional field that, when specified, must be non-empty and at most + 253 characters. It must be a valid DNS subdomain: containing only lowercase alphanumeric + characters, '-' or '.', and starting and ending with an alphanumeric character. + maxLength: 253 + minLength: 1 + type: string + x-kubernetes-validations: + - message: 'universeDomain must be a valid DNS subdomain: + contain no more than 253 characters, contain only lowercase + alphanumeric characters, ''-'' or ''.'', and start and + end with an alphanumeric character' + rule: '!format.dns1123Subdomain().validate(self).hasValue()' type: object x-kubernetes-validations: - message: resourceLabels may only be configured during installation diff --git a/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Default.crd.yaml b/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Default.crd.yaml index df2f24ce080..4855747f7bd 100644 --- a/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Default.crd.yaml +++ b/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Default.crd.yaml @@ -2121,6 +2121,28 @@ spec: be configured during installation rule: self.all(x, x in oldSelf) && oldSelf.all(x, x in self) + universeDomain: + description: |- + universeDomain is the GCP universe domain for the cluster, detected from + the installer credentials. Components with their own GCP credentials should + read the universe domain from those credentials, as they are the authoritative + source. This field is provided for components that do not have GCP credentials + and for general observability. + + When omitted, standard public GCP (googleapis.com) is assumed. + + universeDomain is an optional field that, when specified, must be non-empty and at most + 253 characters. It must be a valid DNS subdomain: containing only lowercase alphanumeric + characters, '-' or '.', and starting and ending with an alphanumeric character. + maxLength: 253 + minLength: 1 + type: string + x-kubernetes-validations: + - message: 'universeDomain must be a valid DNS subdomain: + contain no more than 253 characters, contain only + lowercase alphanumeric characters, ''-'' or ''.'', + and start and end with an alphanumeric character' + rule: '!format.dns1123Subdomain().validate(self).hasValue()' type: object x-kubernetes-validations: - message: resourceLabels may only be configured during diff --git a/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-OKD.crd.yaml b/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-OKD.crd.yaml index e4bef30eb6d..c85cbe2c743 100644 --- a/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-OKD.crd.yaml +++ b/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-OKD.crd.yaml @@ -2121,6 +2121,28 @@ spec: be configured during installation rule: self.all(x, x in oldSelf) && oldSelf.all(x, x in self) + universeDomain: + description: |- + universeDomain is the GCP universe domain for the cluster, detected from + the installer credentials. Components with their own GCP credentials should + read the universe domain from those credentials, as they are the authoritative + source. This field is provided for components that do not have GCP credentials + and for general observability. + + When omitted, standard public GCP (googleapis.com) is assumed. + + universeDomain is an optional field that, when specified, must be non-empty and at most + 253 characters. It must be a valid DNS subdomain: containing only lowercase alphanumeric + characters, '-' or '.', and starting and ending with an alphanumeric character. + maxLength: 253 + minLength: 1 + type: string + x-kubernetes-validations: + - message: 'universeDomain must be a valid DNS subdomain: + contain no more than 253 characters, contain only + lowercase alphanumeric characters, ''-'' or ''.'', + and start and end with an alphanumeric character' + rule: '!format.dns1123Subdomain().validate(self).hasValue()' type: object x-kubernetes-validations: - message: resourceLabels may only be configured during diff --git a/payload-manifests/featuregates/featureGate-4-10-Hypershift-Default.yaml b/payload-manifests/featuregates/featureGate-4-10-Hypershift-Default.yaml index 53b8b4eab0c..dedef132724 100644 --- a/payload-manifests/featuregates/featureGate-4-10-Hypershift-Default.yaml +++ b/payload-manifests/featuregates/featureGate-4-10-Hypershift-Default.yaml @@ -158,9 +158,6 @@ { "name": "GCPDualStackInstall" }, - { - "name": "GCPSovereignCloudInstall" - }, { "name": "ImageModeStatusReporting" }, @@ -310,6 +307,9 @@ { "name": "ExternalOIDCWithUIDAndExtraClaimMappings" }, + { + "name": "GCPSovereignCloudInstall" + }, { "name": "GatewayAPIWithoutOLM" }, diff --git a/payload-manifests/featuregates/featureGate-4-10-Hypershift-OKD.yaml b/payload-manifests/featuregates/featureGate-4-10-Hypershift-OKD.yaml index ba7d6fc95e1..d89d7f997d1 100644 --- a/payload-manifests/featuregates/featureGate-4-10-Hypershift-OKD.yaml +++ b/payload-manifests/featuregates/featureGate-4-10-Hypershift-OKD.yaml @@ -160,9 +160,6 @@ { "name": "GCPDualStackInstall" }, - { - "name": "GCPSovereignCloudInstall" - }, { "name": "ImageModeStatusReporting" }, @@ -312,6 +309,9 @@ { "name": "ExternalOIDCWithUIDAndExtraClaimMappings" }, + { + "name": "GCPSovereignCloudInstall" + }, { "name": "GatewayAPIWithoutOLM" }, diff --git a/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-Default.yaml b/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-Default.yaml index 5e6934a97fe..e5a6abedfa1 100644 --- a/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-Default.yaml +++ b/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-Default.yaml @@ -155,9 +155,6 @@ { "name": "GCPDualStackInstall" }, - { - "name": "GCPSovereignCloudInstall" - }, { "name": "HyperShiftOnlyDynamicResourceAllocation" }, @@ -304,6 +301,9 @@ { "name": "ExternalOIDCWithUIDAndExtraClaimMappings" }, + { + "name": "GCPSovereignCloudInstall" + }, { "name": "GatewayAPIWithoutOLM" }, diff --git a/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml b/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml index c7454dca8ec..25ca535435c 100644 --- a/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml +++ b/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml @@ -157,9 +157,6 @@ { "name": "GCPDualStackInstall" }, - { - "name": "GCPSovereignCloudInstall" - }, { "name": "HyperShiftOnlyDynamicResourceAllocation" }, @@ -306,6 +303,9 @@ { "name": "ExternalOIDCWithUIDAndExtraClaimMappings" }, + { + "name": "GCPSovereignCloudInstall" + }, { "name": "GatewayAPIWithoutOLM" },