diff --git a/config/v1/tests/infrastructures.config.openshift.io/AAA_ungated.yaml b/config/v1/tests/infrastructures.config.openshift.io/AAA_ungated.yaml index eb854751251..920dc138518 100644 --- a/config/v1/tests/infrastructures.config.openshift.io/AAA_ungated.yaml +++ b/config/v1/tests/infrastructures.config.openshift.io/AAA_ungated.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 # Hack because controller-gen complains if w name: "Infrastructure" crdName: infrastructures.config.openshift.io featureGates: -- -AWSClusterHostedDNS +- -AWSClusterHostedDNSInstall tests: onCreate: - name: Should be able to create a minimal Infrastructure diff --git a/config/v1/tests/infrastructures.config.openshift.io/AWSClusterHostedDNS.yaml b/config/v1/tests/infrastructures.config.openshift.io/AWSClusterHostedDNS.yaml index a04df42ca67..c46440165e5 100644 --- a/config/v1/tests/infrastructures.config.openshift.io/AWSClusterHostedDNS.yaml +++ b/config/v1/tests/infrastructures.config.openshift.io/AWSClusterHostedDNS.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 # Hack because controller-gen complains if w name: "Infrastructure" crdName: infrastructures.config.openshift.io featureGates: -- AWSClusterHostedDNS +- AWSClusterHostedDNSInstall tests: onCreate: - name: Should be able to create a minimal Infrastructure diff --git a/config/v1/tests/infrastructures.config.openshift.io/GCPClusterHostedDNS.yaml b/config/v1/tests/infrastructures.config.openshift.io/GCPClusterHostedDNS.yaml index 88363db5fc1..0397f0b0c92 100644 --- a/config/v1/tests/infrastructures.config.openshift.io/GCPClusterHostedDNS.yaml +++ b/config/v1/tests/infrastructures.config.openshift.io/GCPClusterHostedDNS.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 # Hack because controller-gen complains if w name: "Infrastructure" crdName: infrastructures.config.openshift.io featureGates: -- GCPClusterHostedDNS +- GCPClusterHostedDNSInstall tests: onCreate: - name: Should be able to create a minimal Infrastructure diff --git a/config/v1/tests/infrastructures.config.openshift.io/GCPCustomAPIEndpoints.yaml b/config/v1/tests/infrastructures.config.openshift.io/GCPCustomAPIEndpoints.yaml index fe0ffb50e11..151b7c91727 100644 --- a/config/v1/tests/infrastructures.config.openshift.io/GCPCustomAPIEndpoints.yaml +++ b/config/v1/tests/infrastructures.config.openshift.io/GCPCustomAPIEndpoints.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 # Hack because controller-gen complains if w name: "Infrastructure" crdName: infrastructures.config.openshift.io featureGates: -- GCPCustomAPIEndpoints +- GCPCustomAPIEndpointsInstall tests: onCreate: - name: Should be able to create a minimal Infrastructure diff --git a/config/v1/types_infrastructure.go b/config/v1/types_infrastructure.go index 1fc06418c74..1b3432cbc28 100644 --- a/config/v1/types_infrastructure.go +++ b/config/v1/types_infrastructure.go @@ -532,7 +532,7 @@ type AWSPlatformStatus struct { // // +default={"dnsType": "PlatformDefault"} // +kubebuilder:default={"dnsType": "PlatformDefault"} - // +openshift:enable:FeatureGate=AWSClusterHostedDNS + // +openshift:enable:FeatureGate=AWSClusterHostedDNSInstall // +optional // +nullable CloudLoadBalancerConfig *CloudLoadBalancerConfig `json:"cloudLoadBalancerConfig,omitempty"` @@ -745,7 +745,7 @@ type GCPPlatformStatus struct { // // +default={"dnsType": "PlatformDefault"} // +kubebuilder:default={"dnsType": "PlatformDefault"} - // +openshift:enable:FeatureGate=GCPClusterHostedDNS + // +openshift:enable:FeatureGate=GCPClusterHostedDNSInstall // +optional // +nullable CloudLoadBalancerConfig *CloudLoadBalancerConfig `json:"cloudLoadBalancerConfig,omitempty"` @@ -760,7 +760,7 @@ type GCPPlatformStatus struct { // +kubebuilder:validation:MaxItems=8 // +kubebuilder:validation:XValidation:rule="self.all(x, self.exists_one(y, x.name == y.name))",message="only 1 endpoint override is permitted per GCP service name" // +optional - // +openshift:enable:FeatureGate=GCPCustomAPIEndpoints + // +openshift:enable:FeatureGate=GCPCustomAPIEndpointsInstall ServiceEndpoints []GCPServiceEndpoint `json:"serviceEndpoints,omitempty"` } diff --git a/config/v1/zz_generated.featuregated-crd-manifests.yaml b/config/v1/zz_generated.featuregated-crd-manifests.yaml index 91881630b89..1fee444a07d 100644 --- a/config/v1/zz_generated.featuregated-crd-manifests.yaml +++ b/config/v1/zz_generated.featuregated-crd-manifests.yaml @@ -361,11 +361,11 @@ infrastructures.config.openshift.io: Capability: "" Category: "" FeatureGates: - - AWSClusterHostedDNS + - AWSClusterHostedDNSInstall - DualReplica - DyanmicServiceEndpointIBMCloud - - GCPClusterHostedDNS - - GCPCustomAPIEndpoints + - GCPClusterHostedDNSInstall + - GCPCustomAPIEndpointsInstall - HighlyAvailableArbiter - HighlyAvailableArbiter+DualReplica - NutanixMultiSubnets diff --git a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/AWSClusterHostedDNS.yaml b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/AWSClusterHostedDNSInstall.yaml similarity index 99% rename from config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/AWSClusterHostedDNS.yaml rename to config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/AWSClusterHostedDNSInstall.yaml index 3ea039e8267..b938cccbb4d 100644 --- a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/AWSClusterHostedDNS.yaml +++ b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/AWSClusterHostedDNSInstall.yaml @@ -6,7 +6,7 @@ metadata: api.openshift.io/filename-cvo-runlevel: "0000_10" api.openshift.io/filename-operator: config-operator api.openshift.io/filename-ordering: "01" - feature-gate.release.openshift.io/AWSClusterHostedDNS: "true" + feature-gate.release.openshift.io/AWSClusterHostedDNSInstall: "true" release.openshift.io/bootstrap-required: "true" name: infrastructures.config.openshift.io spec: diff --git a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/GCPClusterHostedDNS.yaml b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/GCPClusterHostedDNSInstall.yaml similarity index 99% rename from config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/GCPClusterHostedDNS.yaml rename to config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/GCPClusterHostedDNSInstall.yaml index 8fd02ad4b85..e681bf61ed1 100644 --- a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/GCPClusterHostedDNS.yaml +++ b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/GCPClusterHostedDNSInstall.yaml @@ -6,7 +6,7 @@ metadata: api.openshift.io/filename-cvo-runlevel: "0000_10" api.openshift.io/filename-operator: config-operator api.openshift.io/filename-ordering: "01" - feature-gate.release.openshift.io/GCPClusterHostedDNS: "true" + feature-gate.release.openshift.io/GCPClusterHostedDNSInstall: "true" release.openshift.io/bootstrap-required: "true" name: infrastructures.config.openshift.io spec: diff --git a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/GCPCustomAPIEndpoints.yaml b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/GCPCustomAPIEndpointsInstall.yaml similarity index 99% rename from config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/GCPCustomAPIEndpoints.yaml rename to config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/GCPCustomAPIEndpointsInstall.yaml index 67bb8c317ea..beb440bc7ad 100644 --- a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/GCPCustomAPIEndpoints.yaml +++ b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/GCPCustomAPIEndpointsInstall.yaml @@ -6,7 +6,7 @@ metadata: api.openshift.io/filename-cvo-runlevel: "0000_10" api.openshift.io/filename-operator: config-operator api.openshift.io/filename-ordering: "01" - feature-gate.release.openshift.io/GCPCustomAPIEndpoints: "true" + feature-gate.release.openshift.io/GCPCustomAPIEndpointsInstall: "true" release.openshift.io/bootstrap-required: "true" name: infrastructures.config.openshift.io spec: diff --git a/features.md b/features.md index 927568c8582..5900b4b0e07 100644 --- a/features.md +++ b/features.md @@ -18,7 +18,7 @@ | SELinuxMount| | | Enabled | Enabled | | | | VSphereMixedNodeEnv| | | Enabled | Enabled | | | | NewOLM| | Enabled | | Enabled | | Enabled | -| AWSClusterHostedDNS| | | Enabled | Enabled | Enabled | Enabled | +| AWSClusterHostedDNSInstall| | | Enabled | Enabled | Enabled | Enabled | | AWSDedicatedHosts| | | Enabled | Enabled | Enabled | Enabled | | AWSServiceLBNetworkSecurityGroup| | | Enabled | Enabled | Enabled | Enabled | | AutomatedEtcdBackup| | | Enabled | Enabled | Enabled | Enabled | @@ -34,8 +34,8 @@ | EtcdBackendQuota| | | Enabled | Enabled | Enabled | Enabled | | Example| | | Enabled | Enabled | Enabled | Enabled | | ExternalOIDCWithUIDAndExtraClaimMappings| | | Enabled | Enabled | Enabled | Enabled | -| GCPClusterHostedDNS| | | Enabled | Enabled | Enabled | Enabled | -| GCPCustomAPIEndpoints| | | Enabled | Enabled | Enabled | Enabled | +| GCPClusterHostedDNSInstall| | | Enabled | Enabled | Enabled | Enabled | +| GCPCustomAPIEndpointsInstall| | | Enabled | Enabled | Enabled | Enabled | | HighlyAvailableArbiter| | | Enabled | Enabled | Enabled | Enabled | | ImageModeStatusReporting| | | Enabled | Enabled | Enabled | Enabled | | ImageStreamImportMode| | | Enabled | Enabled | Enabled | Enabled | diff --git a/features/features.go b/features/features.go index bf9a1c93e7d..5324a3d1ab3 100644 --- a/features/features.go +++ b/features/features.go @@ -320,21 +320,21 @@ var ( enhancementPR(legacyFeatureGateWithoutEnhancement). mustRegister() - FeatureGateGCPClusterHostedDNS = newFeatureGate("GCPClusterHostedDNS"). - reportProblemsToJiraComponent("Installer"). - contactPerson("barbacbd"). - productScope(ocpSpecific). - enhancementPR(legacyFeatureGateWithoutEnhancement). - enableIn(configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade). - mustRegister() + FeatureGateGCPClusterHostedDNSInstall = newFeatureGate("GCPClusterHostedDNSInstall"). + reportProblemsToJiraComponent("Installer"). + contactPerson("barbacbd"). + productScope(ocpSpecific). + enhancementPR(legacyFeatureGateWithoutEnhancement). + enableIn(configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade). + mustRegister() - FeatureGateAWSClusterHostedDNS = newFeatureGate("AWSClusterHostedDNS"). - reportProblemsToJiraComponent("Installer"). - contactPerson("barbacbd"). - productScope(ocpSpecific). - enhancementPR(legacyFeatureGateWithoutEnhancement). - enableIn(configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade). - mustRegister() + FeatureGateAWSClusterHostedDNSInstall = newFeatureGate("AWSClusterHostedDNSInstall"). + reportProblemsToJiraComponent("Installer"). + contactPerson("barbacbd"). + productScope(ocpSpecific). + enhancementPR(legacyFeatureGateWithoutEnhancement). + enableIn(configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade). + mustRegister() FeatureGateMixedCPUsAllocation = newFeatureGate("MixedCPUsAllocation"). reportProblemsToJiraComponent("NodeTuningOperator"). @@ -703,7 +703,7 @@ var ( enableIn(configv1.DevPreviewNoUpgrade). mustRegister() - FeatureGateGCPCustomAPIEndpoints = newFeatureGate("GCPCustomAPIEndpoints"). + FeatureGateGCPCustomAPIEndpointsInstall = newFeatureGate("GCPCustomAPIEndpointsInstall"). reportProblemsToJiraComponent("Installer"). contactPerson("barbacbd"). productScope(ocpSpecific). diff --git a/features/legacyfeaturegates.go b/features/legacyfeaturegates.go index ae3f1ecf0f7..17bff98ab43 100644 --- a/features/legacyfeaturegates.go +++ b/features/legacyfeaturegates.go @@ -3,7 +3,7 @@ package features import "k8s.io/apimachinery/pkg/util/sets" var legacyFeatureGates = sets.New( - "AWSClusterHostedDNS", + "AWSClusterHostedDNSInstall", // never add to this list, if you think you have an exception ask @deads2k "AWSEFSDriverVolumeMetrics", // never add to this list, if you think you have an exception ask @deads2k @@ -37,7 +37,7 @@ var legacyFeatureGates = sets.New( // never add to this list, if you think you have an exception ask @deads2k "Example2", // never add to this list, if you think you have an exception ask @deads2k - "GCPClusterHostedDNS", + "GCPClusterHostedDNSInstall", // never add to this list, if you think you have an exception ask @deads2k "GatewayAPI", // never add to this list, if you think you have an exception ask @deads2k diff --git a/machineconfiguration/v1/tests/controllerconfigs.machineconfiguration.openshift.io/AWSClusterHostedDNS.yaml b/machineconfiguration/v1/tests/controllerconfigs.machineconfiguration.openshift.io/AWSClusterHostedDNS.yaml index 3efcd09d1e2..c09aa020e28 100644 --- a/machineconfiguration/v1/tests/controllerconfigs.machineconfiguration.openshift.io/AWSClusterHostedDNS.yaml +++ b/machineconfiguration/v1/tests/controllerconfigs.machineconfiguration.openshift.io/AWSClusterHostedDNS.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 # Hack because controller-gen complains if w name: "Shamefully missing" crdName: controllerconfigs.machineconfiguration.openshift.io featureGates: -- AWSClusterHostedDNS +- AWSClusterHostedDNSInstall tests: onCreate: - name: Should be able to create a minimal ControllerConfig diff --git a/machineconfiguration/v1/tests/controllerconfigs.machineconfiguration.openshift.io/GCPClusterHostedDNS.yaml b/machineconfiguration/v1/tests/controllerconfigs.machineconfiguration.openshift.io/GCPClusterHostedDNS.yaml index cfb7b0a089c..22e7cb3c179 100644 --- a/machineconfiguration/v1/tests/controllerconfigs.machineconfiguration.openshift.io/GCPClusterHostedDNS.yaml +++ b/machineconfiguration/v1/tests/controllerconfigs.machineconfiguration.openshift.io/GCPClusterHostedDNS.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 # Hack because controller-gen complains if w name: "Shamefully missing" crdName: controllerconfigs.machineconfiguration.openshift.io featureGates: -- GCPClusterHostedDNS +- GCPClusterHostedDNSInstall tests: onCreate: - name: Should be able to create a minimal ControllerConfig diff --git a/machineconfiguration/v1/tests/controllerconfigs.machineconfiguration.openshift.io/GCPCustomAPIEndpoints.yaml b/machineconfiguration/v1/tests/controllerconfigs.machineconfiguration.openshift.io/GCPCustomAPIEndpoints.yaml index dde3168248b..91d64a8f606 100644 --- a/machineconfiguration/v1/tests/controllerconfigs.machineconfiguration.openshift.io/GCPCustomAPIEndpoints.yaml +++ b/machineconfiguration/v1/tests/controllerconfigs.machineconfiguration.openshift.io/GCPCustomAPIEndpoints.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 # Hack because controller-gen complains if w name: "ControllerConfig" crdName: controllerconfigs.machineconfiguration.openshift.io featureGates: -- GCPCustomAPIEndpoints +- GCPCustomAPIEndpointsInstall tests: onCreate: - name: Should be able to create a minimal ControllerConfig diff --git a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests.yaml b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests.yaml index c290c60eba5..af3322dad3f 100644 --- a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests.yaml +++ b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests.yaml @@ -28,11 +28,11 @@ controllerconfigs.machineconfiguration.openshift.io: Capability: "" Category: "" FeatureGates: - - AWSClusterHostedDNS + - AWSClusterHostedDNSInstall - DualReplica - DyanmicServiceEndpointIBMCloud - - GCPClusterHostedDNS - - GCPCustomAPIEndpoints + - GCPClusterHostedDNSInstall + - GCPCustomAPIEndpointsInstall - HighlyAvailableArbiter - HighlyAvailableArbiter+DualReplica - NutanixMultiSubnets diff --git a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/GCPClusterHostedDNS.yaml b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/AWSClusterHostedDNSInstall.yaml similarity index 99% rename from machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/GCPClusterHostedDNS.yaml rename to machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/AWSClusterHostedDNSInstall.yaml index 99536ebc072..36b57b52a32 100644 --- a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/GCPClusterHostedDNS.yaml +++ b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/AWSClusterHostedDNSInstall.yaml @@ -6,7 +6,7 @@ metadata: api.openshift.io/filename-cvo-runlevel: "0000_80" api.openshift.io/filename-operator: machine-config api.openshift.io/filename-ordering: "01" - feature-gate.release.openshift.io/GCPClusterHostedDNS: "true" + feature-gate.release.openshift.io/AWSClusterHostedDNSInstall: "true" labels: openshift.io/operator-managed: "" name: controllerconfigs.machineconfiguration.openshift.io @@ -1446,6 +1446,110 @@ spec: description: aws contains settings specific to the Amazon Web Services infrastructure provider. properties: + cloudLoadBalancerConfig: + default: + dnsType: PlatformDefault + description: |- + cloudLoadBalancerConfig holds configuration related to DNS and cloud + load balancers. It allows configuration of in-cluster DNS as an alternative + to the platform default DNS implementation. + When using the ClusterHosted DNS type, Load Balancer IP addresses + must be provided for the API and internal API load balancers as well as the + ingress load balancer. + nullable: true + properties: + clusterHosted: + description: |- + clusterHosted holds the IP addresses of API, API-Int and Ingress Load + Balancers on Cloud Platforms. The DNS solution hosted within the cluster + use these IP addresses to provide resolution for API, API-Int and Ingress + services. + properties: + apiIntLoadBalancerIPs: + description: |- + apiIntLoadBalancerIPs holds Load Balancer IPs for the internal API service. + These Load Balancer IP addresses can be IPv4 and/or IPv6 addresses. + Entries in the apiIntLoadBalancerIPs must be unique. + A maximum of 16 IP addresses are permitted. + format: ip + items: + description: IP is an IP address (for example, + "10.0.0.0" or "fd00::"). + maxLength: 39 + minLength: 1 + type: string + x-kubernetes-validations: + - message: value must be a valid IP address + rule: isIP(self) + maxItems: 16 + type: array + x-kubernetes-list-type: set + apiLoadBalancerIPs: + description: |- + apiLoadBalancerIPs holds Load Balancer IPs for the API service. + These Load Balancer IP addresses can be IPv4 and/or IPv6 addresses. + Could be empty for private clusters. + Entries in the apiLoadBalancerIPs must be unique. + A maximum of 16 IP addresses are permitted. + format: ip + items: + description: IP is an IP address (for example, + "10.0.0.0" or "fd00::"). + maxLength: 39 + minLength: 1 + type: string + x-kubernetes-validations: + - message: value must be a valid IP address + rule: isIP(self) + maxItems: 16 + type: array + x-kubernetes-list-type: set + ingressLoadBalancerIPs: + description: |- + ingressLoadBalancerIPs holds IPs for Ingress Load Balancers. + These Load Balancer IP addresses can be IPv4 and/or IPv6 addresses. + Entries in the ingressLoadBalancerIPs must be unique. + A maximum of 16 IP addresses are permitted. + format: ip + items: + description: IP is an IP address (for example, + "10.0.0.0" or "fd00::"). + maxLength: 39 + minLength: 1 + type: string + x-kubernetes-validations: + - message: value must be a valid IP address + rule: isIP(self) + maxItems: 16 + type: array + x-kubernetes-list-type: set + type: object + dnsType: + default: PlatformDefault + description: |- + dnsType indicates the type of DNS solution in use within the cluster. Its default value of + `PlatformDefault` indicates that the cluster's DNS is the default provided by the cloud platform. + It can be set to `ClusterHosted` to bypass the configuration of the cloud default DNS. In this mode, + the cluster needs to provide a self-hosted DNS solution for the cluster's installation to succeed. + The cluster's use of the cloud's Load Balancers is unaffected by this setting. + The value is immutable after it has been set at install time. + Currently, there is no way for the customer to add additional DNS entries into the cluster hosted DNS. + Enabling this functionality allows the user to start their own DNS solution outside the cluster after + installation is complete. The customer would be responsible for configuring this custom DNS solution, + and it can be run in addition to the in-cluster DNS solution. + enum: + - ClusterHosted + - PlatformDefault + type: string + x-kubernetes-validations: + - message: dnsType is immutable + rule: oldSelf == '' || self == oldSelf + type: object + x-kubernetes-validations: + - message: clusterHosted is permitted only when dnsType + is ClusterHosted + rule: 'has(self.dnsType) && self.dnsType != ''ClusterHosted'' + ? !has(self.clusterHosted) : true' region: description: region holds the default AWS region for new AWS resources created by the cluster. @@ -1772,110 +1876,6 @@ spec: description: gcp contains settings specific to the Google Cloud Platform infrastructure provider. properties: - cloudLoadBalancerConfig: - default: - dnsType: PlatformDefault - description: |- - cloudLoadBalancerConfig holds configuration related to DNS and cloud - load balancers. It allows configuration of in-cluster DNS as an alternative - to the platform default DNS implementation. - When using the ClusterHosted DNS type, Load Balancer IP addresses - must be provided for the API and internal API load balancers as well as the - ingress load balancer. - nullable: true - properties: - clusterHosted: - description: |- - clusterHosted holds the IP addresses of API, API-Int and Ingress Load - Balancers on Cloud Platforms. The DNS solution hosted within the cluster - use these IP addresses to provide resolution for API, API-Int and Ingress - services. - properties: - apiIntLoadBalancerIPs: - description: |- - apiIntLoadBalancerIPs holds Load Balancer IPs for the internal API service. - These Load Balancer IP addresses can be IPv4 and/or IPv6 addresses. - Entries in the apiIntLoadBalancerIPs must be unique. - A maximum of 16 IP addresses are permitted. - format: ip - items: - description: IP is an IP address (for example, - "10.0.0.0" or "fd00::"). - maxLength: 39 - minLength: 1 - type: string - x-kubernetes-validations: - - message: value must be a valid IP address - rule: isIP(self) - maxItems: 16 - type: array - x-kubernetes-list-type: set - apiLoadBalancerIPs: - description: |- - apiLoadBalancerIPs holds Load Balancer IPs for the API service. - These Load Balancer IP addresses can be IPv4 and/or IPv6 addresses. - Could be empty for private clusters. - Entries in the apiLoadBalancerIPs must be unique. - A maximum of 16 IP addresses are permitted. - format: ip - items: - description: IP is an IP address (for example, - "10.0.0.0" or "fd00::"). - maxLength: 39 - minLength: 1 - type: string - x-kubernetes-validations: - - message: value must be a valid IP address - rule: isIP(self) - maxItems: 16 - type: array - x-kubernetes-list-type: set - ingressLoadBalancerIPs: - description: |- - ingressLoadBalancerIPs holds IPs for Ingress Load Balancers. - These Load Balancer IP addresses can be IPv4 and/or IPv6 addresses. - Entries in the ingressLoadBalancerIPs must be unique. - A maximum of 16 IP addresses are permitted. - format: ip - items: - description: IP is an IP address (for example, - "10.0.0.0" or "fd00::"). - maxLength: 39 - minLength: 1 - type: string - x-kubernetes-validations: - - message: value must be a valid IP address - rule: isIP(self) - maxItems: 16 - type: array - x-kubernetes-list-type: set - type: object - dnsType: - default: PlatformDefault - description: |- - dnsType indicates the type of DNS solution in use within the cluster. Its default value of - `PlatformDefault` indicates that the cluster's DNS is the default provided by the cloud platform. - It can be set to `ClusterHosted` to bypass the configuration of the cloud default DNS. In this mode, - the cluster needs to provide a self-hosted DNS solution for the cluster's installation to succeed. - The cluster's use of the cloud's Load Balancers is unaffected by this setting. - The value is immutable after it has been set at install time. - Currently, there is no way for the customer to add additional DNS entries into the cluster hosted DNS. - Enabling this functionality allows the user to start their own DNS solution outside the cluster after - installation is complete. The customer would be responsible for configuring this custom DNS solution, - and it can be run in addition to the in-cluster DNS solution. - enum: - - ClusterHosted - - PlatformDefault - type: string - x-kubernetes-validations: - - message: dnsType is immutable - rule: oldSelf == '' || self == oldSelf - type: object - x-kubernetes-validations: - - message: clusterHosted is permitted only when dnsType - is ClusterHosted - rule: 'has(self.dnsType) && self.dnsType != ''ClusterHosted'' - ? !has(self.clusterHosted) : true' projectID: description: resourceGroupName is the Project ID for new GCP resources created for the cluster. diff --git a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/AWSClusterHostedDNS.yaml b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/GCPClusterHostedDNSInstall.yaml similarity index 99% rename from machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/AWSClusterHostedDNS.yaml rename to machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/GCPClusterHostedDNSInstall.yaml index 17e904a9d67..cc4a3498ffa 100644 --- a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/AWSClusterHostedDNS.yaml +++ b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/GCPClusterHostedDNSInstall.yaml @@ -6,7 +6,7 @@ metadata: api.openshift.io/filename-cvo-runlevel: "0000_80" api.openshift.io/filename-operator: machine-config api.openshift.io/filename-ordering: "01" - feature-gate.release.openshift.io/AWSClusterHostedDNS: "true" + feature-gate.release.openshift.io/GCPClusterHostedDNSInstall: "true" labels: openshift.io/operator-managed: "" name: controllerconfigs.machineconfiguration.openshift.io @@ -1446,110 +1446,6 @@ spec: description: aws contains settings specific to the Amazon Web Services infrastructure provider. properties: - cloudLoadBalancerConfig: - default: - dnsType: PlatformDefault - description: |- - cloudLoadBalancerConfig holds configuration related to DNS and cloud - load balancers. It allows configuration of in-cluster DNS as an alternative - to the platform default DNS implementation. - When using the ClusterHosted DNS type, Load Balancer IP addresses - must be provided for the API and internal API load balancers as well as the - ingress load balancer. - nullable: true - properties: - clusterHosted: - description: |- - clusterHosted holds the IP addresses of API, API-Int and Ingress Load - Balancers on Cloud Platforms. The DNS solution hosted within the cluster - use these IP addresses to provide resolution for API, API-Int and Ingress - services. - properties: - apiIntLoadBalancerIPs: - description: |- - apiIntLoadBalancerIPs holds Load Balancer IPs for the internal API service. - These Load Balancer IP addresses can be IPv4 and/or IPv6 addresses. - Entries in the apiIntLoadBalancerIPs must be unique. - A maximum of 16 IP addresses are permitted. - format: ip - items: - description: IP is an IP address (for example, - "10.0.0.0" or "fd00::"). - maxLength: 39 - minLength: 1 - type: string - x-kubernetes-validations: - - message: value must be a valid IP address - rule: isIP(self) - maxItems: 16 - type: array - x-kubernetes-list-type: set - apiLoadBalancerIPs: - description: |- - apiLoadBalancerIPs holds Load Balancer IPs for the API service. - These Load Balancer IP addresses can be IPv4 and/or IPv6 addresses. - Could be empty for private clusters. - Entries in the apiLoadBalancerIPs must be unique. - A maximum of 16 IP addresses are permitted. - format: ip - items: - description: IP is an IP address (for example, - "10.0.0.0" or "fd00::"). - maxLength: 39 - minLength: 1 - type: string - x-kubernetes-validations: - - message: value must be a valid IP address - rule: isIP(self) - maxItems: 16 - type: array - x-kubernetes-list-type: set - ingressLoadBalancerIPs: - description: |- - ingressLoadBalancerIPs holds IPs for Ingress Load Balancers. - These Load Balancer IP addresses can be IPv4 and/or IPv6 addresses. - Entries in the ingressLoadBalancerIPs must be unique. - A maximum of 16 IP addresses are permitted. - format: ip - items: - description: IP is an IP address (for example, - "10.0.0.0" or "fd00::"). - maxLength: 39 - minLength: 1 - type: string - x-kubernetes-validations: - - message: value must be a valid IP address - rule: isIP(self) - maxItems: 16 - type: array - x-kubernetes-list-type: set - type: object - dnsType: - default: PlatformDefault - description: |- - dnsType indicates the type of DNS solution in use within the cluster. Its default value of - `PlatformDefault` indicates that the cluster's DNS is the default provided by the cloud platform. - It can be set to `ClusterHosted` to bypass the configuration of the cloud default DNS. In this mode, - the cluster needs to provide a self-hosted DNS solution for the cluster's installation to succeed. - The cluster's use of the cloud's Load Balancers is unaffected by this setting. - The value is immutable after it has been set at install time. - Currently, there is no way for the customer to add additional DNS entries into the cluster hosted DNS. - Enabling this functionality allows the user to start their own DNS solution outside the cluster after - installation is complete. The customer would be responsible for configuring this custom DNS solution, - and it can be run in addition to the in-cluster DNS solution. - enum: - - ClusterHosted - - PlatformDefault - type: string - x-kubernetes-validations: - - message: dnsType is immutable - rule: oldSelf == '' || self == oldSelf - type: object - x-kubernetes-validations: - - message: clusterHosted is permitted only when dnsType - is ClusterHosted - rule: 'has(self.dnsType) && self.dnsType != ''ClusterHosted'' - ? !has(self.clusterHosted) : true' region: description: region holds the default AWS region for new AWS resources created by the cluster. @@ -1876,6 +1772,110 @@ spec: description: gcp contains settings specific to the Google Cloud Platform infrastructure provider. properties: + cloudLoadBalancerConfig: + default: + dnsType: PlatformDefault + description: |- + cloudLoadBalancerConfig holds configuration related to DNS and cloud + load balancers. It allows configuration of in-cluster DNS as an alternative + to the platform default DNS implementation. + When using the ClusterHosted DNS type, Load Balancer IP addresses + must be provided for the API and internal API load balancers as well as the + ingress load balancer. + nullable: true + properties: + clusterHosted: + description: |- + clusterHosted holds the IP addresses of API, API-Int and Ingress Load + Balancers on Cloud Platforms. The DNS solution hosted within the cluster + use these IP addresses to provide resolution for API, API-Int and Ingress + services. + properties: + apiIntLoadBalancerIPs: + description: |- + apiIntLoadBalancerIPs holds Load Balancer IPs for the internal API service. + These Load Balancer IP addresses can be IPv4 and/or IPv6 addresses. + Entries in the apiIntLoadBalancerIPs must be unique. + A maximum of 16 IP addresses are permitted. + format: ip + items: + description: IP is an IP address (for example, + "10.0.0.0" or "fd00::"). + maxLength: 39 + minLength: 1 + type: string + x-kubernetes-validations: + - message: value must be a valid IP address + rule: isIP(self) + maxItems: 16 + type: array + x-kubernetes-list-type: set + apiLoadBalancerIPs: + description: |- + apiLoadBalancerIPs holds Load Balancer IPs for the API service. + These Load Balancer IP addresses can be IPv4 and/or IPv6 addresses. + Could be empty for private clusters. + Entries in the apiLoadBalancerIPs must be unique. + A maximum of 16 IP addresses are permitted. + format: ip + items: + description: IP is an IP address (for example, + "10.0.0.0" or "fd00::"). + maxLength: 39 + minLength: 1 + type: string + x-kubernetes-validations: + - message: value must be a valid IP address + rule: isIP(self) + maxItems: 16 + type: array + x-kubernetes-list-type: set + ingressLoadBalancerIPs: + description: |- + ingressLoadBalancerIPs holds IPs for Ingress Load Balancers. + These Load Balancer IP addresses can be IPv4 and/or IPv6 addresses. + Entries in the ingressLoadBalancerIPs must be unique. + A maximum of 16 IP addresses are permitted. + format: ip + items: + description: IP is an IP address (for example, + "10.0.0.0" or "fd00::"). + maxLength: 39 + minLength: 1 + type: string + x-kubernetes-validations: + - message: value must be a valid IP address + rule: isIP(self) + maxItems: 16 + type: array + x-kubernetes-list-type: set + type: object + dnsType: + default: PlatformDefault + description: |- + dnsType indicates the type of DNS solution in use within the cluster. Its default value of + `PlatformDefault` indicates that the cluster's DNS is the default provided by the cloud platform. + It can be set to `ClusterHosted` to bypass the configuration of the cloud default DNS. In this mode, + the cluster needs to provide a self-hosted DNS solution for the cluster's installation to succeed. + The cluster's use of the cloud's Load Balancers is unaffected by this setting. + The value is immutable after it has been set at install time. + Currently, there is no way for the customer to add additional DNS entries into the cluster hosted DNS. + Enabling this functionality allows the user to start their own DNS solution outside the cluster after + installation is complete. The customer would be responsible for configuring this custom DNS solution, + and it can be run in addition to the in-cluster DNS solution. + enum: + - ClusterHosted + - PlatformDefault + type: string + x-kubernetes-validations: + - message: dnsType is immutable + rule: oldSelf == '' || self == oldSelf + type: object + x-kubernetes-validations: + - message: clusterHosted is permitted only when dnsType + is ClusterHosted + rule: 'has(self.dnsType) && self.dnsType != ''ClusterHosted'' + ? !has(self.clusterHosted) : true' projectID: description: resourceGroupName is the Project ID for new GCP resources created for the cluster. diff --git a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/GCPCustomAPIEndpoints.yaml b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/GCPCustomAPIEndpointsInstall.yaml similarity index 99% rename from machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/GCPCustomAPIEndpoints.yaml rename to machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/GCPCustomAPIEndpointsInstall.yaml index f7d09fbeaa4..fbfdffa1900 100644 --- a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/GCPCustomAPIEndpoints.yaml +++ b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/GCPCustomAPIEndpointsInstall.yaml @@ -6,7 +6,7 @@ metadata: api.openshift.io/filename-cvo-runlevel: "0000_80" api.openshift.io/filename-operator: machine-config api.openshift.io/filename-ordering: "01" - feature-gate.release.openshift.io/GCPCustomAPIEndpoints: "true" + feature-gate.release.openshift.io/GCPCustomAPIEndpointsInstall: "true" labels: openshift.io/operator-managed: "" name: controllerconfigs.machineconfiguration.openshift.io diff --git a/payload-command/render/legacyfeaturegates.go b/payload-command/render/legacyfeaturegates.go index 7131a1b0828..98027694f12 100644 --- a/payload-command/render/legacyfeaturegates.go +++ b/payload-command/render/legacyfeaturegates.go @@ -5,7 +5,7 @@ import "k8s.io/apimachinery/pkg/util/sets" // never add to this list, if you think you have an exception ask @deadsk var legacyFeatureGates = sets.New( // never add to this list, if you think you have an exception ask @deads2k - "AWSClusterHostedDNS", + "AWSClusterHostedDNSInstall", // never add to this list, if you think you have an exception ask @deads2k "AWSEFSDriverVolumeMetrics", // never add to this list, if you think you have an exception ask @deads2k @@ -39,7 +39,7 @@ var legacyFeatureGates = sets.New( // never add to this list, if you think you have an exception ask @deads2k "Example2", // never add to this list, if you think you have an exception ask @deads2k - "GCPClusterHostedDNS", + "GCPClusterHostedDNSInstall", // never add to this list, if you think you have an exception ask @deads2k "GatewayAPI", // never add to this list, if you think you have an exception ask @deads2k diff --git a/payload-manifests/featuregates/featureGate-Hypershift-Default.yaml b/payload-manifests/featuregates/featureGate-Hypershift-Default.yaml index 8969d342c19..2f719cb9779 100644 --- a/payload-manifests/featuregates/featureGate-Hypershift-Default.yaml +++ b/payload-manifests/featuregates/featureGate-Hypershift-Default.yaml @@ -14,7 +14,7 @@ { "disabled": [ { - "name": "AWSClusterHostedDNS" + "name": "AWSClusterHostedDNSInstall" }, { "name": "AWSDedicatedHosts" @@ -80,10 +80,10 @@ "name": "ExternalSnapshotMetadata" }, { - "name": "GCPClusterHostedDNS" + "name": "GCPClusterHostedDNSInstall" }, { - "name": "GCPCustomAPIEndpoints" + "name": "GCPCustomAPIEndpointsInstall" }, { "name": "HighlyAvailableArbiter" diff --git a/payload-manifests/featuregates/featureGate-Hypershift-DevPreviewNoUpgrade.yaml b/payload-manifests/featuregates/featureGate-Hypershift-DevPreviewNoUpgrade.yaml index cb857b180b5..5f8f9ee1573 100644 --- a/payload-manifests/featuregates/featureGate-Hypershift-DevPreviewNoUpgrade.yaml +++ b/payload-manifests/featuregates/featureGate-Hypershift-DevPreviewNoUpgrade.yaml @@ -54,7 +54,7 @@ ], "enabled": [ { - "name": "AWSClusterHostedDNS" + "name": "AWSClusterHostedDNSInstall" }, { "name": "AWSDedicatedHosts" @@ -141,10 +141,10 @@ "name": "ExternalSnapshotMetadata" }, { - "name": "GCPClusterHostedDNS" + "name": "GCPClusterHostedDNSInstall" }, { - "name": "GCPCustomAPIEndpoints" + "name": "GCPCustomAPIEndpointsInstall" }, { "name": "GatewayAPI" diff --git a/payload-manifests/featuregates/featureGate-Hypershift-TechPreviewNoUpgrade.yaml b/payload-manifests/featuregates/featureGate-Hypershift-TechPreviewNoUpgrade.yaml index ef16bcf613d..cb76d1a66c4 100644 --- a/payload-manifests/featuregates/featureGate-Hypershift-TechPreviewNoUpgrade.yaml +++ b/payload-manifests/featuregates/featureGate-Hypershift-TechPreviewNoUpgrade.yaml @@ -72,7 +72,7 @@ ], "enabled": [ { - "name": "AWSClusterHostedDNS" + "name": "AWSClusterHostedDNSInstall" }, { "name": "AWSDedicatedHosts" @@ -147,10 +147,10 @@ "name": "ExternalOIDCWithUIDAndExtraClaimMappings" }, { - "name": "GCPClusterHostedDNS" + "name": "GCPClusterHostedDNSInstall" }, { - "name": "GCPCustomAPIEndpoints" + "name": "GCPCustomAPIEndpointsInstall" }, { "name": "GatewayAPI" diff --git a/payload-manifests/featuregates/featureGate-SelfManagedHA-Default.yaml b/payload-manifests/featuregates/featureGate-SelfManagedHA-Default.yaml index 88809a001f7..71580a8944b 100644 --- a/payload-manifests/featuregates/featureGate-SelfManagedHA-Default.yaml +++ b/payload-manifests/featuregates/featureGate-SelfManagedHA-Default.yaml @@ -14,7 +14,7 @@ { "disabled": [ { - "name": "AWSClusterHostedDNS" + "name": "AWSClusterHostedDNSInstall" }, { "name": "AWSDedicatedHosts" @@ -83,10 +83,10 @@ "name": "ExternalSnapshotMetadata" }, { - "name": "GCPClusterHostedDNS" + "name": "GCPClusterHostedDNSInstall" }, { - "name": "GCPCustomAPIEndpoints" + "name": "GCPCustomAPIEndpointsInstall" }, { "name": "HighlyAvailableArbiter" diff --git a/payload-manifests/featuregates/featureGate-SelfManagedHA-DevPreviewNoUpgrade.yaml b/payload-manifests/featuregates/featureGate-SelfManagedHA-DevPreviewNoUpgrade.yaml index 8adaed2b3f0..28dfd5e2b62 100644 --- a/payload-manifests/featuregates/featureGate-SelfManagedHA-DevPreviewNoUpgrade.yaml +++ b/payload-manifests/featuregates/featureGate-SelfManagedHA-DevPreviewNoUpgrade.yaml @@ -36,7 +36,7 @@ ], "enabled": [ { - "name": "AWSClusterHostedDNS" + "name": "AWSClusterHostedDNSInstall" }, { "name": "AWSDedicatedHosts" @@ -123,10 +123,10 @@ "name": "ExternalSnapshotMetadata" }, { - "name": "GCPClusterHostedDNS" + "name": "GCPClusterHostedDNSInstall" }, { - "name": "GCPCustomAPIEndpoints" + "name": "GCPCustomAPIEndpointsInstall" }, { "name": "GatewayAPI" diff --git a/payload-manifests/featuregates/featureGate-SelfManagedHA-TechPreviewNoUpgrade.yaml b/payload-manifests/featuregates/featureGate-SelfManagedHA-TechPreviewNoUpgrade.yaml index fcbf593c5ea..2318eb644dd 100644 --- a/payload-manifests/featuregates/featureGate-SelfManagedHA-TechPreviewNoUpgrade.yaml +++ b/payload-manifests/featuregates/featureGate-SelfManagedHA-TechPreviewNoUpgrade.yaml @@ -57,7 +57,7 @@ ], "enabled": [ { - "name": "AWSClusterHostedDNS" + "name": "AWSClusterHostedDNSInstall" }, { "name": "AWSDedicatedHosts" @@ -132,10 +132,10 @@ "name": "ExternalOIDCWithUIDAndExtraClaimMappings" }, { - "name": "GCPClusterHostedDNS" + "name": "GCPClusterHostedDNSInstall" }, { - "name": "GCPCustomAPIEndpoints" + "name": "GCPCustomAPIEndpointsInstall" }, { "name": "GatewayAPI"