diff --git a/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-TechPreviewNoUpgrade.crd.yaml b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-TechPreviewNoUpgrade.crd.yaml
index d384f214f9a..09109065e6f 100644
--- a/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-TechPreviewNoUpgrade.crd.yaml
+++ b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-TechPreviewNoUpgrade.crd.yaml
@@ -2066,6 +2066,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 a1777c7e325..d09df875eb3 100644
--- a/features.md
+++ b/features.md
@@ -19,7 +19,6 @@
| ClusterUpdatePreflight| | | Enabled | Enabled | | | | |
| ConfidentialCluster| | | Enabled | Enabled | | | | |
| Example2| | | Enabled | Enabled | | | | |
-| GCPSovereignCloudInstall| | | Enabled | Enabled | | | | |
| MachineAPIMigrationVSphere| | | Enabled | Enabled | | | | |
| NetworkConnect| | | Enabled | Enabled | | | | |
| NewOLMBoxCutterRuntime| | | | Enabled | | | | Enabled |
@@ -63,6 +62,7 @@
| GCPCustomAPIEndpoints| | | Enabled | Enabled | | | Enabled | Enabled |
| GCPCustomAPIEndpointsInstall| | | Enabled | Enabled | | | Enabled | Enabled |
| GCPDualStackInstall| | | Enabled | Enabled | | | Enabled | Enabled |
+| GCPSovereignCloudInstall| | | Enabled | Enabled | | | Enabled | Enabled |
| GatewayAPIManagementMode| | | Enabled | Enabled | | | Enabled | Enabled |
| HyperShiftOnlyDynamicResourceAllocation| Enabled | | Enabled | | Enabled | | Enabled | |
| ImageModeStatusReporting| | | Enabled | Enabled | | | Enabled | Enabled |
diff --git a/features/features.go b/features/features.go
index 428d48e1ab8..016d69adbf1 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(inDevPreviewNoUpgrade()).
+ enable(inTechPreviewNoUpgrade(), inDevPreviewNoUpgrade()).
mustRegister()
FeatureCBORServingAndStorage = newFeatureGate("CBORServingAndStorage").
diff --git a/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-TechPreviewNoUpgrade.crd.yaml b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-TechPreviewNoUpgrade.crd.yaml
index 52d8b4b22bf..4acc52773a8 100644
--- a/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-TechPreviewNoUpgrade.crd.yaml
+++ b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-TechPreviewNoUpgrade.crd.yaml
@@ -2368,6 +2368,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-TechPreviewNoUpgrade.crd.yaml b/payload-manifests/crds/0000_10_config-operator_01_infrastructures-TechPreviewNoUpgrade.crd.yaml
index d384f214f9a..09109065e6f 100644
--- a/payload-manifests/crds/0000_10_config-operator_01_infrastructures-TechPreviewNoUpgrade.crd.yaml
+++ b/payload-manifests/crds/0000_10_config-operator_01_infrastructures-TechPreviewNoUpgrade.crd.yaml
@@ -2066,6 +2066,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-TechPreviewNoUpgrade.crd.yaml b/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-TechPreviewNoUpgrade.crd.yaml
index 52d8b4b22bf..4acc52773a8 100644
--- a/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-TechPreviewNoUpgrade.crd.yaml
+++ b/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-TechPreviewNoUpgrade.crd.yaml
@@ -2368,6 +2368,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-TechPreviewNoUpgrade.yaml b/payload-manifests/featuregates/featureGate-4-10-Hypershift-TechPreviewNoUpgrade.yaml
index de7954d1d43..5b83c15085a 100644
--- a/payload-manifests/featuregates/featureGate-4-10-Hypershift-TechPreviewNoUpgrade.yaml
+++ b/payload-manifests/featuregates/featureGate-4-10-Hypershift-TechPreviewNoUpgrade.yaml
@@ -49,9 +49,6 @@
{
"name": "Example2"
},
- {
- "name": "GCPSovereignCloudInstall"
- },
{
"name": "KarpenterOperator"
},
@@ -252,6 +249,9 @@
{
"name": "GCPDualStackInstall"
},
+ {
+ "name": "GCPSovereignCloudInstall"
+ },
{
"name": "GatewayAPIManagementMode"
},
diff --git a/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-TechPreviewNoUpgrade.yaml b/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-TechPreviewNoUpgrade.yaml
index 7e40f034e57..18e0323c0f2 100644
--- a/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-TechPreviewNoUpgrade.yaml
+++ b/payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-TechPreviewNoUpgrade.yaml
@@ -43,9 +43,6 @@
{
"name": "Example2"
},
- {
- "name": "GCPSovereignCloudInstall"
- },
{
"name": "HyperShiftOnlyDynamicResourceAllocation"
},
@@ -231,6 +228,9 @@
{
"name": "GCPDualStackInstall"
},
+ {
+ "name": "GCPSovereignCloudInstall"
+ },
{
"name": "GatewayAPIManagementMode"
},