diff --git a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/VSphereHostVMGroupZonal.yaml b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/VSphereHostVMGroupZonal.yaml
index 84802167879..7a053e2a5a4 100644
--- a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/VSphereHostVMGroupZonal.yaml
+++ b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/VSphereHostVMGroupZonal.yaml
@@ -869,7 +869,11 @@ spec:
vcenters:
description: vcenters holds the connection details for services
to communicate with vCenter. Currently, only a single vCenter
- is supported. ---
+ is supported, but in tech preview 3 vCenters are supported.
+ Once the cluster has been installed, you are unable to change
+ the current number of defined vCenters except in the case
+ where the cluster has been upgraded from a version of OpenShift
+ where the vsphere platform spec was not present. ---
items:
description: VSpherePlatformVCenterSpec stores the vCenter
connection fields. This is used by the vSphere CCM.
@@ -906,13 +910,25 @@ spec:
minItems: 0
type: array
x-kubernetes-list-type: atomic
+ x-kubernetes-validations:
+ - message: vcenters cannot be added or removed once set
+ rule: 'size(self) != size(oldSelf) ? size(oldSelf) == 0
+ && size(self) < 2 : true'
type: object
x-kubernetes-validations:
- message: apiServerInternalIPs list is required once set
rule: '!has(oldSelf.apiServerInternalIPs) || has(self.apiServerInternalIPs)'
- message: ingressIPs list is required once set
rule: '!has(oldSelf.ingressIPs) || has(self.ingressIPs)'
+ - message: vcenters count can only be one when performing day
+ 2 config
+ rule: '!has(oldSelf.vcenters) && has(self.vcenters) ? size(self.vcenters)
+ < 2 : true'
type: object
+ x-kubernetes-validations:
+ - message: vsphere can only have 1 vCenter when performing day 2 config
+ rule: '!has(oldSelf.vsphere) && has(self.vsphere) ? size(self.vsphere.vcenters)
+ < 2 : true'
type: object
status:
description: status holds observed values from the cluster. They may not
diff --git a/features.md b/features.md
index b195385bf8e..7a55d9c3081 100644
--- a/features.md
+++ b/features.md
@@ -47,6 +47,7 @@
| UpgradeStatus| | | Enabled | Enabled | Enabled | Enabled |
| UserNamespacesPodSecurityStandards| | | Enabled | Enabled | Enabled | Enabled |
| UserNamespacesSupport| | | Enabled | Enabled | Enabled | Enabled |
+| VSphereHostVMGroupZonal| | | Enabled | Enabled | Enabled | Enabled |
| VSphereMultiVCenters| | | Enabled | Enabled | Enabled | Enabled |
| VolumeGroupSnapshot| | | Enabled | Enabled | Enabled | Enabled |
| ExternalOIDC| Enabled | | Enabled | Enabled | Enabled | Enabled |
diff --git a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/VSphereHostVMGroupZonal.yaml b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/VSphereHostVMGroupZonal.yaml
index 974fd8ef755..da129048ede 100644
--- a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/VSphereHostVMGroupZonal.yaml
+++ b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/VSphereHostVMGroupZonal.yaml
@@ -1170,7 +1170,13 @@ spec:
vcenters:
description: vcenters holds the connection details
for services to communicate with vCenter. Currently,
- only a single vCenter is supported. ---
+ only a single vCenter is supported, but in tech
+ preview 3 vCenters are supported. Once the cluster
+ has been installed, you are unable to change the
+ current number of defined vCenters except in the
+ case where the cluster has been upgraded from a
+ version of OpenShift where the vsphere platform
+ spec was not present. ---
items:
description: VSpherePlatformVCenterSpec stores the
vCenter connection fields. This is used by the
@@ -1210,6 +1216,11 @@ spec:
minItems: 0
type: array
x-kubernetes-list-type: atomic
+ x-kubernetes-validations:
+ - message: vcenters cannot be added or removed once
+ set
+ rule: 'size(self) != size(oldSelf) ? size(oldSelf)
+ == 0 && size(self) < 2 : true'
type: object
x-kubernetes-validations:
- message: apiServerInternalIPs list is required once
@@ -1217,7 +1228,16 @@ spec:
rule: '!has(oldSelf.apiServerInternalIPs) || has(self.apiServerInternalIPs)'
- message: ingressIPs list is required once set
rule: '!has(oldSelf.ingressIPs) || has(self.ingressIPs)'
+ - message: vcenters count can only be one when performing
+ day 2 config
+ rule: '!has(oldSelf.vcenters) && has(self.vcenters)
+ ? size(self.vcenters) < 2 : true'
type: object
+ x-kubernetes-validations:
+ - message: vsphere can only have 1 vCenter when performing
+ day 2 config
+ rule: '!has(oldSelf.vsphere) && has(self.vsphere) ? size(self.vsphere.vcenters)
+ < 2 : true'
type: object
status:
description: status holds observed values from the cluster. They
diff --git a/payload-manifests/featuregates/featureGate-Hypershift-Default.yaml b/payload-manifests/featuregates/featureGate-Hypershift-Default.yaml
index ddb9e2659d4..56c2591dcd2 100644
--- a/payload-manifests/featuregates/featureGate-Hypershift-Default.yaml
+++ b/payload-manifests/featuregates/featureGate-Hypershift-Default.yaml
@@ -154,6 +154,9 @@
{
"name": "UserNamespacesSupport"
},
+ {
+ "name": "VSphereHostVMGroupZonal"
+ },
{
"name": "VSphereMultiVCenters"
},
diff --git a/payload-manifests/featuregates/featureGate-SelfManagedHA-Default.yaml b/payload-manifests/featuregates/featureGate-SelfManagedHA-Default.yaml
index 42277a3bc6f..e81d1b5745b 100644
--- a/payload-manifests/featuregates/featureGate-SelfManagedHA-Default.yaml
+++ b/payload-manifests/featuregates/featureGate-SelfManagedHA-Default.yaml
@@ -157,6 +157,9 @@
{
"name": "UserNamespacesSupport"
},
+ {
+ "name": "VSphereHostVMGroupZonal"
+ },
{
"name": "VSphereMultiVCenters"
},