From 9e0b71aead57114453152db0f5354c50ed990a25 Mon Sep 17 00:00:00 2001 From: Sandhya Dasu Date: Wed, 18 Feb 2026 16:41:07 -0500 Subject: [PATCH] Add CloudDNSIPs to CloudLoadBalancerConfig CloudDNSIPs hold the upstream DNS server IPs. These will be used to configure the in-cluster CoreDNS instance when DNSType is set to ClusterHostedDNS. --- config/v1/types_infrastructure.go | 14 ++ ...1_infrastructures-CustomNoUpgrade.crd.yaml | 66 +++++ ...erator_01_infrastructures-Default.crd.yaml | 22 ++ ...frastructures-DevPreviewNoUpgrade.crd.yaml | 66 +++++ ...g-operator_01_infrastructures-OKD.crd.yaml | 22 ++ ...rastructures-TechPreviewNoUpgrade.crd.yaml | 66 +++++ config/v1/zz_generated.deepcopy.go | 5 + .../AWSClusterHostedDNSInstall.yaml | 22 ++ .../AzureClusterHostedDNSInstall.yaml | 22 ++ .../GCPClusterHostedDNSInstall.yaml | 22 ++ .../v1/zz_generated.swagger_doc_generated.go | 1 + ...controllerconfigs-CustomNoUpgrade.crd.yaml | 66 +++++ ...nfig_01_controllerconfigs-Default.crd.yaml | 22 ++ ...rollerconfigs-DevPreviewNoUpgrade.crd.yaml | 66 +++++ ...e-config_01_controllerconfigs-OKD.crd.yaml | 22 ++ ...ollerconfigs-TechPreviewNoUpgrade.crd.yaml | 66 +++++ .../AWSClusterHostedDNSInstall.yaml | 22 ++ .../AzureClusterHostedDNSInstall.yaml | 22 ++ .../GCPClusterHostedDNSInstall.yaml | 22 ++ .../generated_openapi/zz_generated.openapi.go | 21 ++ openapi/openapi.json | 225 ++++++++++-------- ...1_infrastructures-CustomNoUpgrade.crd.yaml | 66 +++++ ...erator_01_infrastructures-Default.crd.yaml | 22 ++ ...frastructures-DevPreviewNoUpgrade.crd.yaml | 66 +++++ ...g-operator_01_infrastructures-OKD.crd.yaml | 22 ++ ...rastructures-TechPreviewNoUpgrade.crd.yaml | 66 +++++ ...controllerconfigs-CustomNoUpgrade.crd.yaml | 66 +++++ ...nfig_01_controllerconfigs-Default.crd.yaml | 22 ++ ...rollerconfigs-DevPreviewNoUpgrade.crd.yaml | 66 +++++ ...e-config_01_controllerconfigs-OKD.crd.yaml | 22 ++ ...ollerconfigs-TechPreviewNoUpgrade.crd.yaml | 66 +++++ 31 files changed, 1271 insertions(+), 95 deletions(-) diff --git a/config/v1/types_infrastructure.go b/config/v1/types_infrastructure.go index 369ba1e7a00..6da112b4fda 100644 --- a/config/v1/types_infrastructure.go +++ b/config/v1/types_infrastructure.go @@ -870,6 +870,7 @@ type GCPResourceTag struct { // Load Balancer configuration needs to be provided so that the DNS solution hosted // within the cluster can be configured with those values. // +kubebuilder:validation:XValidation:rule="has(self.dnsType) && self.dnsType != 'ClusterHosted' ? !has(self.clusterHosted) : true",message="clusterHosted is permitted only when dnsType is ClusterHosted" +// TODO: Is it useful to have a kubebuilder validation for CloudDnsIPs too? // +union type CloudLoadBalancerConfig struct { // dnsType indicates the type of DNS solution in use within the cluster. Its default value of @@ -897,6 +898,19 @@ type CloudLoadBalancerConfig struct { // +optional // +unionMember,optional ClusterHosted *CloudLoadBalancerIPs `json:"clusterHosted,omitempty"` + + // cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + // These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + // For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + // This field is only valid when dnsType is set to ClusterHosted. + // When dnsType is not ClusterHosted, this field must not be set. + // Entries in cloudDnsIPs must be unique. + // A maximum of 16 IP addresses are permitted. + // +kubebuilder:validation:Format=ip + // +listType=set + // +kubebuilder:validation:MaxItems=16 + // +optional + CloudDnsIPs []IP `json:"cloudDnsIPs,omitempty"` } // CloudLoadBalancerIPs contains the Load Balancer IPs for the cloud's API, diff --git a/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-CustomNoUpgrade.crd.yaml b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-CustomNoUpgrade.crd.yaml index 9086d4a5720..41f5429fd2e 100644 --- a/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-CustomNoUpgrade.crd.yaml +++ b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-CustomNoUpgrade.crd.yaml @@ -1262,6 +1262,28 @@ spec: ingress load balancer. nullable: true properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load @@ -1467,6 +1489,28 @@ spec: must be provided for the API and internal API load balancers as well as the ingress load balancer. properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load @@ -1844,6 +1888,28 @@ spec: ingress load balancer. nullable: true properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load 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 803c48a1e28..52963a0201f 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 @@ -1506,6 +1506,28 @@ spec: ingress load balancer. nullable: true properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load diff --git a/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-DevPreviewNoUpgrade.crd.yaml b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-DevPreviewNoUpgrade.crd.yaml index de1a68c90a5..e4d7b81ab03 100644 --- a/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-DevPreviewNoUpgrade.crd.yaml +++ b/config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-DevPreviewNoUpgrade.crd.yaml @@ -1262,6 +1262,28 @@ spec: ingress load balancer. nullable: true properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load @@ -1467,6 +1489,28 @@ spec: must be provided for the API and internal API load balancers as well as the ingress load balancer. properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load @@ -1844,6 +1888,28 @@ spec: ingress load balancer. nullable: true properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load 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 245bc3ea638..c1640476db6 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 @@ -1506,6 +1506,28 @@ spec: ingress load balancer. nullable: true properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load 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 c45b7d6e83a..087362324c3 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 @@ -1262,6 +1262,28 @@ spec: ingress load balancer. nullable: true properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load @@ -1467,6 +1489,28 @@ spec: must be provided for the API and internal API load balancers as well as the ingress load balancer. properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load @@ -1844,6 +1888,28 @@ spec: ingress load balancer. nullable: true properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load diff --git a/config/v1/zz_generated.deepcopy.go b/config/v1/zz_generated.deepcopy.go index 30b85b78e96..955203dfc24 100644 --- a/config/v1/zz_generated.deepcopy.go +++ b/config/v1/zz_generated.deepcopy.go @@ -980,6 +980,11 @@ func (in *CloudLoadBalancerConfig) DeepCopyInto(out *CloudLoadBalancerConfig) { *out = new(CloudLoadBalancerIPs) (*in).DeepCopyInto(*out) } + if in.CloudDnsIPs != nil { + in, out := &in.CloudDnsIPs, &out.CloudDnsIPs + *out = make([]IP, len(*in)) + copy(*out, *in) + } return } diff --git a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/AWSClusterHostedDNSInstall.yaml b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/AWSClusterHostedDNSInstall.yaml index 355975c0330..85973200e1c 100644 --- a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/AWSClusterHostedDNSInstall.yaml +++ b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/AWSClusterHostedDNSInstall.yaml @@ -1165,6 +1165,28 @@ spec: ingress load balancer. nullable: true properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load diff --git a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/AzureClusterHostedDNSInstall.yaml b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/AzureClusterHostedDNSInstall.yaml index 8604ac29fac..2f90692e762 100644 --- a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/AzureClusterHostedDNSInstall.yaml +++ b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/AzureClusterHostedDNSInstall.yaml @@ -1251,6 +1251,28 @@ spec: must be provided for the API and internal API load balancers as well as the ingress load balancer. properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load diff --git a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/GCPClusterHostedDNSInstall.yaml b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/GCPClusterHostedDNSInstall.yaml index 950fdcabc63..491bc55e489 100644 --- a/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/GCPClusterHostedDNSInstall.yaml +++ b/config/v1/zz_generated.featuregated-crd-manifests/infrastructures.config.openshift.io/GCPClusterHostedDNSInstall.yaml @@ -1487,6 +1487,28 @@ spec: ingress load balancer. nullable: true properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load diff --git a/config/v1/zz_generated.swagger_doc_generated.go b/config/v1/zz_generated.swagger_doc_generated.go index 69fb37c5233..06d3495edc5 100644 --- a/config/v1/zz_generated.swagger_doc_generated.go +++ b/config/v1/zz_generated.swagger_doc_generated.go @@ -1584,6 +1584,7 @@ var map_CloudLoadBalancerConfig = map[string]string{ "": "CloudLoadBalancerConfig contains an union discriminator indicating the type of DNS solution in use within the cluster. When the DNSType is `ClusterHosted`, the cloud's Load Balancer configuration needs to be provided so that the DNS solution hosted within the cluster can be configured with those values.", "dnsType": "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.", "clusterHosted": "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.", + "cloudDnsIPs": "cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). This field is only valid when dnsType is set to ClusterHosted. When dnsType is not ClusterHosted, this field must not be set. Entries in cloudDnsIPs must be unique. A maximum of 16 IP addresses are permitted.", } func (CloudLoadBalancerConfig) SwaggerDoc() map[string]string { diff --git a/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-CustomNoUpgrade.crd.yaml b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-CustomNoUpgrade.crd.yaml index 24a77a81b54..fa35c092930 100644 --- a/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-CustomNoUpgrade.crd.yaml +++ b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-CustomNoUpgrade.crd.yaml @@ -1548,6 +1548,28 @@ spec: ingress load balancer. nullable: true properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load @@ -1754,6 +1776,28 @@ spec: must be provided for the API and internal API load balancers as well as the ingress load balancer. properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load @@ -2135,6 +2179,28 @@ spec: ingress load balancer. nullable: true properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load 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 a921ed5d346..585dc3f5dfb 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 @@ -1792,6 +1792,28 @@ spec: ingress load balancer. nullable: true properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load diff --git a/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-DevPreviewNoUpgrade.crd.yaml b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-DevPreviewNoUpgrade.crd.yaml index a8e3fcd21d6..8e4387eb59c 100644 --- a/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-DevPreviewNoUpgrade.crd.yaml +++ b/machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-DevPreviewNoUpgrade.crd.yaml @@ -1548,6 +1548,28 @@ spec: ingress load balancer. nullable: true properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load @@ -1754,6 +1776,28 @@ spec: must be provided for the API and internal API load balancers as well as the ingress load balancer. properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load @@ -2135,6 +2179,28 @@ spec: ingress load balancer. nullable: true properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load 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 678e5a4202f..87166a83249 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 @@ -1792,6 +1792,28 @@ spec: ingress load balancer. nullable: true properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load 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 52f75fc841f..00a697fdf42 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 @@ -1548,6 +1548,28 @@ spec: ingress load balancer. nullable: true properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load @@ -1754,6 +1776,28 @@ spec: must be provided for the API and internal API load balancers as well as the ingress load balancer. properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load @@ -2135,6 +2179,28 @@ spec: ingress load balancer. nullable: true properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load diff --git a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/AWSClusterHostedDNSInstall.yaml b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/AWSClusterHostedDNSInstall.yaml index d1ea29f18cb..0089c51a014 100644 --- a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/AWSClusterHostedDNSInstall.yaml +++ b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/AWSClusterHostedDNSInstall.yaml @@ -1459,6 +1459,28 @@ spec: ingress load balancer. nullable: true properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load diff --git a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/AzureClusterHostedDNSInstall.yaml b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/AzureClusterHostedDNSInstall.yaml index d7f4bc5505e..43a44b42913 100644 --- a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/AzureClusterHostedDNSInstall.yaml +++ b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/AzureClusterHostedDNSInstall.yaml @@ -1546,6 +1546,28 @@ spec: must be provided for the API and internal API load balancers as well as the ingress load balancer. properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load diff --git a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/GCPClusterHostedDNSInstall.yaml b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/GCPClusterHostedDNSInstall.yaml index b7aefb54f4d..6e6c9fae0d1 100644 --- a/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/GCPClusterHostedDNSInstall.yaml +++ b/machineconfiguration/v1/zz_generated.featuregated-crd-manifests/controllerconfigs.machineconfiguration.openshift.io/GCPClusterHostedDNSInstall.yaml @@ -1785,6 +1785,28 @@ spec: ingress load balancer. nullable: true properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load diff --git a/openapi/generated_openapi/zz_generated.openapi.go b/openapi/generated_openapi/zz_generated.openapi.go index 2c217f1303e..c3a90148269 100644 --- a/openapi/generated_openapi/zz_generated.openapi.go +++ b/openapi/generated_openapi/zz_generated.openapi.go @@ -10744,6 +10744,26 @@ func schema_openshift_api_config_v1_CloudLoadBalancerConfig(ref common.Reference Ref: ref("github.com/openshift/api/config/v1.CloudLoadBalancerIPs"), }, }, + "cloudDnsIPs": { + VendorExtensible: spec.VendorExtensible{ + Extensions: spec.Extensions{ + "x-kubernetes-list-type": "set", + }, + }, + SchemaProps: spec.SchemaProps{ + Description: "cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). This field is only valid when dnsType is set to ClusterHosted. When dnsType is not ClusterHosted, this field must not be set. Entries in cloudDnsIPs must be unique. A maximum of 16 IP addresses are permitted.", + Type: []string{"array"}, + Items: &spec.SchemaOrArray{ + Schema: &spec.Schema{ + SchemaProps: spec.SchemaProps{ + Default: "", + Type: []string{"string"}, + Format: "", + }, + }, + }, + }, + }, }, }, VendorExtensible: spec.VendorExtensible{ @@ -10752,6 +10772,7 @@ func schema_openshift_api_config_v1_CloudLoadBalancerConfig(ref common.Reference map[string]interface{}{ "discriminator": "dnsType", "fields-to-discriminateBy": map[string]interface{}{ + "cloudDnsIPs": "CloudDnsIPs", "clusterHosted": "ClusterHosted", }, }, diff --git a/openapi/openapi.json b/openapi/openapi.json index fff430807d8..303db13bde7 100644 --- a/openapi/openapi.json +++ b/openapi/openapi.json @@ -5353,6 +5353,15 @@ "description": "CloudLoadBalancerConfig contains an union discriminator indicating the type of DNS solution in use within the cluster. When the DNSType is `ClusterHosted`, the cloud's Load Balancer configuration needs to be provided so that the DNS solution hosted within the cluster can be configured with those values.", "type": "object", "properties": { + "cloudDnsIPs": { + "description": "cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). This field is only valid when dnsType is set to ClusterHosted. When dnsType is not ClusterHosted, this field must not be set. Entries in cloudDnsIPs must be unique. A maximum of 16 IP addresses are permitted.", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "set" + }, "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.", "$ref": "#/definitions/com.github.openshift.api.config.v1.CloudLoadBalancerIPs" @@ -5367,6 +5376,7 @@ { "discriminator": "dnsType", "fields-to-discriminateBy": { + "cloudDnsIPs": "CloudDnsIPs", "clusterHosted": "ClusterHosted" } } @@ -6339,7 +6349,7 @@ ], "properties": { "ciphers": { - "description": "ciphers is used to specify the cipher algorithms that are negotiated during the TLS handshake. Operators may remove entries their operands do not support. For example, to use DES-CBC3-SHA (yaml):\n\n ciphers:\n - DES-CBC3-SHA", + "description": "ciphers is used to specify the cipher algorithms that are negotiated during the TLS handshake. Operators may remove entries that their operands do not support. For example, to use only ECDHE-RSA-AES128-GCM-SHA256 (yaml):\n\n ciphers:\n - ECDHE-RSA-AES128-GCM-SHA256\n\nTLS 1.3 cipher suites (e.g. TLS_AES_128_GCM_SHA256) are not configurable and are always enabled when TLS 1.3 is negotiated.", "type": "array", "items": { "type": "string", @@ -11311,7 +11321,7 @@ ], "properties": { "ciphers": { - "description": "ciphers is used to specify the cipher algorithms that are negotiated during the TLS handshake. Operators may remove entries their operands do not support. For example, to use DES-CBC3-SHA (yaml):\n\n ciphers:\n - DES-CBC3-SHA", + "description": "ciphers is used to specify the cipher algorithms that are negotiated during the TLS handshake. Operators may remove entries that their operands do not support. For example, to use only ECDHE-RSA-AES128-GCM-SHA256 (yaml):\n\n ciphers:\n - ECDHE-RSA-AES128-GCM-SHA256\n\nTLS 1.3 cipher suites (e.g. TLS_AES_128_GCM_SHA256) are not configurable and are always enabled when TLS 1.3 is negotiated.", "type": "array", "items": { "type": "string", @@ -11335,7 +11345,7 @@ "$ref": "#/definitions/com.github.openshift.api.config.v1.CustomTLSProfile" }, "intermediate": { - "description": "intermediate is a TLS profile for use when you do not need compatibility with legacy clients and want to remain highly secure while being compatible with most clients currently in use.\n\nThe cipher list includes TLS 1.3 ciphers for forward compatibility, followed by the \"intermediate\" profile ciphers.\n\nThis profile is equivalent to a Custom profile specified as:\n minTLSVersion: VersionTLS12\n ciphers:\n - TLS_AES_128_GCM_SHA256\n - TLS_AES_256_GCM_SHA384\n - TLS_CHACHA20_POLY1305_SHA256\n - ECDHE-ECDSA-AES128-GCM-SHA256\n - ECDHE-RSA-AES128-GCM-SHA256\n - ECDHE-ECDSA-AES256-GCM-SHA384\n - ECDHE-RSA-AES256-GCM-SHA384\n - ECDHE-ECDSA-CHACHA20-POLY1305\n - ECDHE-RSA-CHACHA20-POLY1305\n - DHE-RSA-AES128-GCM-SHA256\n - DHE-RSA-AES256-GCM-SHA384", + "description": "intermediate is a TLS profile for use when you do not need compatibility with legacy clients and want to remain highly secure while being compatible with most clients currently in use.\n\nThis profile is equivalent to a Custom profile specified as:\n minTLSVersion: VersionTLS12\n ciphers:\n - TLS_AES_128_GCM_SHA256\n - TLS_AES_256_GCM_SHA384\n - TLS_CHACHA20_POLY1305_SHA256\n - ECDHE-ECDSA-AES128-GCM-SHA256\n - ECDHE-RSA-AES128-GCM-SHA256\n - ECDHE-ECDSA-AES256-GCM-SHA384\n - ECDHE-RSA-AES256-GCM-SHA384\n - ECDHE-ECDSA-CHACHA20-POLY1305\n - ECDHE-RSA-CHACHA20-POLY1305", "$ref": "#/definitions/com.github.openshift.api.config.v1.IntermediateTLSProfile" }, "modern": { @@ -11343,11 +11353,11 @@ "$ref": "#/definitions/com.github.openshift.api.config.v1.ModernTLSProfile" }, "old": { - "description": "old is a TLS profile for use when services need to be accessed by very old clients or libraries and should be used only as a last resort.\n\nThe cipher list includes TLS 1.3 ciphers for forward compatibility, followed by the \"old\" profile ciphers.\n\nThis profile is equivalent to a Custom profile specified as:\n minTLSVersion: VersionTLS10\n ciphers:\n - TLS_AES_128_GCM_SHA256\n - TLS_AES_256_GCM_SHA384\n - TLS_CHACHA20_POLY1305_SHA256\n - ECDHE-ECDSA-AES128-GCM-SHA256\n - ECDHE-RSA-AES128-GCM-SHA256\n - ECDHE-ECDSA-AES256-GCM-SHA384\n - ECDHE-RSA-AES256-GCM-SHA384\n - ECDHE-ECDSA-CHACHA20-POLY1305\n - ECDHE-RSA-CHACHA20-POLY1305\n - DHE-RSA-AES128-GCM-SHA256\n - DHE-RSA-AES256-GCM-SHA384\n - DHE-RSA-CHACHA20-POLY1305\n - ECDHE-ECDSA-AES128-SHA256\n - ECDHE-RSA-AES128-SHA256\n - ECDHE-ECDSA-AES128-SHA\n - ECDHE-RSA-AES128-SHA\n - ECDHE-ECDSA-AES256-SHA384\n - ECDHE-RSA-AES256-SHA384\n - ECDHE-ECDSA-AES256-SHA\n - ECDHE-RSA-AES256-SHA\n - DHE-RSA-AES128-SHA256\n - DHE-RSA-AES256-SHA256\n - AES128-GCM-SHA256\n - AES256-GCM-SHA384\n - AES128-SHA256\n - AES256-SHA256\n - AES128-SHA\n - AES256-SHA\n - DES-CBC3-SHA", + "description": "old is a TLS profile for use when services need to be accessed by very old clients or libraries and should be used only as a last resort.\n\nThis profile is equivalent to a Custom profile specified as:\n minTLSVersion: VersionTLS10\n ciphers:\n - TLS_AES_128_GCM_SHA256\n - TLS_AES_256_GCM_SHA384\n - TLS_CHACHA20_POLY1305_SHA256\n - ECDHE-ECDSA-AES128-GCM-SHA256\n - ECDHE-RSA-AES128-GCM-SHA256\n - ECDHE-ECDSA-AES256-GCM-SHA384\n - ECDHE-RSA-AES256-GCM-SHA384\n - ECDHE-ECDSA-CHACHA20-POLY1305\n - ECDHE-RSA-CHACHA20-POLY1305\n - ECDHE-ECDSA-AES128-SHA256\n - ECDHE-RSA-AES128-SHA256\n - ECDHE-ECDSA-AES128-SHA\n - ECDHE-RSA-AES128-SHA\n - ECDHE-ECDSA-AES256-SHA\n - ECDHE-RSA-AES256-SHA\n - AES128-GCM-SHA256\n - AES256-GCM-SHA384\n - AES128-SHA256\n - AES128-SHA\n - AES256-SHA\n - DES-CBC3-SHA", "$ref": "#/definitions/com.github.openshift.api.config.v1.OldTLSProfile" }, "type": { - "description": "type is one of Old, Intermediate, Modern or Custom. Custom provides the ability to specify individual TLS security profile parameters.\n\nThe profiles are currently based on version 5.0 of the Mozilla Server Side TLS configuration guidelines (released 2019-06-28) with TLS 1.3 ciphers added for forward compatibility. See: https://ssl-config.mozilla.org/guidelines/5.0.json\n\nThe profiles are intent based, so they may change over time as new ciphers are developed and existing ciphers are found to be insecure. Depending on precisely which ciphers are available to a process, the list may be reduced.", + "description": "type is one of Old, Intermediate, Modern or Custom. Custom provides the ability to specify individual TLS security profile parameters.\n\nThe profiles are based on version 5.7 of the Mozilla Server Side TLS configuration guidelines. The cipher lists consist of the configuration's \"ciphersuites\" followed by the Go-specific \"ciphers\" from the guidelines. See: https://ssl-config.mozilla.org/guidelines/5.7.json\n\nThe profiles are intent based, so they may change over time as new ciphers are developed and existing ciphers are found to be insecure. Depending on precisely which ciphers are available to a process, the list may be reduced.", "type": "string", "default": "" } @@ -35897,7 +35907,6 @@ }, "spec": { "description": "spec is the specification of the desired behavior of the capi-operator.", - "default": {}, "$ref": "#/definitions/com.github.openshift.api.operator.v1alpha1.ClusterAPISpec" }, "status": { @@ -35907,6 +35916,96 @@ } } }, + "com.github.openshift.api.operator.v1alpha1.ClusterAPIInstallerComponent": { + "description": "ClusterAPIInstallerComponent defines a component which will be installed by this revision.", + "type": "object", + "required": [ + "type" + ], + "properties": { + "image": { + "description": "image defines an image source for a component. The image must contain a /capi-operator-installer directory containing the component manifests.", + "default": {}, + "$ref": "#/definitions/com.github.openshift.api.operator.v1alpha1.ClusterAPIInstallerComponentImage" + }, + "type": { + "description": "type is the source type of the component. The only valid value is Image. When set to Image, the image field must be set and will define an image source for the component.\n\nPossible enum values:\n - `\"Image\"` is an image source for a component.", + "type": "string", + "enum": [ + "Image" + ] + } + }, + "x-kubernetes-unions": [ + { + "discriminator": "type", + "fields-to-discriminateBy": { + "image": "Image" + } + } + ] + }, + "com.github.openshift.api.operator.v1alpha1.ClusterAPIInstallerComponentImage": { + "description": "ClusterAPIInstallerComponentImage defines an image source for a component.", + "type": "object", + "required": [ + "ref", + "profile" + ], + "properties": { + "profile": { + "description": "profile is the name of a profile to use from the image.\n\nA profile name may be up to 255 characters long. It must consist of alphanumeric characters, '-', or '_'.", + "type": "string" + }, + "ref": { + "description": "ref is an image reference to the image containing the component manifests. The reference must be a valid image digest reference in the format host[:port][/namespace]/name@sha256:. The digest must be 64 characters long, and consist only of lowercase hexadecimal characters, a-f and 0-9. The length of the field must be between 1 to 447 characters.", + "type": "string" + } + } + }, + "com.github.openshift.api.operator.v1alpha1.ClusterAPIInstallerRevision": { + "type": "object", + "required": [ + "name", + "revision", + "contentID", + "components" + ], + "properties": { + "components": { + "description": "components is list of components which will be installed by this revision. Components will be installed in the order they are listed.\n\nThe maximum number of components is 32.", + "type": "array", + "items": { + "default": {}, + "$ref": "#/definitions/com.github.openshift.api.operator.v1alpha1.ClusterAPIInstallerComponent" + }, + "x-kubernetes-list-type": "atomic" + }, + "contentID": { + "description": "contentID uniquely identifies the content of this revision. The contentID must be between 1 and 255 characters long.", + "type": "string" + }, + "name": { + "description": "name is the name of a revision.", + "type": "string" + }, + "revision": { + "description": "revision is a monotonically increasing number that is assigned to a revision.", + "type": "integer", + "format": "int64" + }, + "unmanagedCustomResourceDefinitions": { + "description": "unmanagedCustomResourceDefinitions is a list of the names of ClusterResourceDefinition (CRD) objects which are included in this revision, but which should not be installed or updated. If not set, all CRDs in the revision will be managed by the CAPI operator.", + "type": "array", + "items": { + "type": "string", + "default": "" + }, + "x-kubernetes-list-type": "atomic" + } + }, + "x-kubernetes-map-type": "atomic" + }, "com.github.openshift.api.operator.v1alpha1.ClusterAPIList": { "description": "ClusterAPIList contains a list of ClusterAPI configurations\n\nCompatibility level 4: No compatibility is provided, the API can change at any point for any reason. These capabilities should not be used by applications needing long term support.", "type": "object", @@ -35939,11 +36038,11 @@ } }, "com.github.openshift.api.operator.v1alpha1.ClusterAPISpec": { - "description": "ClusterAPISpec defines the desired configuration of the capi-operator.", + "description": "ClusterAPISpec defines the desired configuration of the capi-operator. The spec is required but we deliberately allow it to be empty.", "type": "object", "properties": { "unmanagedCustomResourceDefinitions": { - "description": "unmanagedCustomResourceDefinitions is a list of ClusterResourceDefinition (CRD) names that should not be managed by the capi-operator installer controller. This allows external actors to own specific CRDs while capi-operator manages others.\n\nEach CRD name must be a valid DNS-1123 subdomain consisting of lowercase alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character, with a maximum length of 253 characters. Example: \"clusters.cluster.x-k8s.io\"\n\nItems cannot be removed from this list once added.\n\nThe maximum number of unmanagedCustomResourceDefinitions is 128.", + "description": "unmanagedCustomResourceDefinitions is a list of ClusterResourceDefinition (CRD) names that should not be managed by the capi-operator installer controller. This allows external actors to own specific CRDs while capi-operator manages others.\n\nEach CRD name must be a valid DNS-1123 subdomain consisting of lowercase alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character, with a maximum length of 253 characters. CRD names must contain at least two '.' characters. Example: \"clusters.cluster.x-k8s.io\"\n\nItems cannot be removed from this list once added.\n\nThe maximum number of unmanagedCustomResourceDefinitions is 128.", "type": "array", "items": { "type": "string", @@ -35956,22 +36055,25 @@ "com.github.openshift.api.operator.v1alpha1.ClusterAPIStatus": { "description": "ClusterAPIStatus describes the current state of the capi-operator.", "type": "object", + "required": [ + "desiredRevision", + "revisions" + ], "properties": { - "activeConfigMaps": { - "description": "activeConfigMaps is a list of ConfigMap names that the installer controller has successfully reconciled. This represents the currently deployed CAPI provider components.\n\nEach ConfigMap name must be a valid DNS-1123 label consisting of lowercase alphanumeric characters or hyphens, starting and ending with an alphanumeric character, with a maximum length of 63 characters.\n\nThis field is owned by the installer controller and is updated atomically after a successful reconciliation.\n\nThe maximum number of activeConfigMaps is 128.", - "type": "array", - "items": { - "type": "string", - "default": "" - }, - "x-kubernetes-list-type": "atomic" + "currentRevision": { + "description": "currentRevision is the name of the most recently fully applied revision. It is written by the installer controller. If it is absent, it indicates that no revision has been fully applied yet. If set, currentRevision must correspond to an entry in the revisions list.", + "type": "string" + }, + "desiredRevision": { + "description": "desiredRevision is the name of the desired revision. It is written by the revision controller. It must be set to the name of the entry in the revisions list with the highest revision number.", + "type": "string" }, - "targetConfigMaps": { - "description": "targetConfigMaps is a list of ConfigMap names that the staging controller has validated and approved for reconciliation. The installer controller will reconcile these ConfigMaps.\n\nEach ConfigMap name must be a valid DNS-1123 label consisting of lowercase alphanumeric characters or hyphens, starting and ending with an alphanumeric character, with a maximum length of 63 characters.\n\nThis field is owned by the staging controller and is updated atomically to a consistent set of transport ConfigMaps that have passed validation checks.\n\nThe maximum number of targetConfigMaps is 128.", + "revisions": { + "description": "revisions is a list of all currently active revisions. A revision is active until the installer controller updates currentRevision to a later revision. It is written by the revision controller.\n\nThe maximum number of revisions is 16. All revisions must have a unique name. All revisions must have a unique revision number. When adding a revision, the revision number must be greater than the highest revision number in the list. Revisions are immutable, although they can be deleted.", "type": "array", "items": { - "type": "string", - "default": "" + "default": {}, + "$ref": "#/definitions/com.github.openshift.api.operator.v1alpha1.ClusterAPIInstallerRevision" }, "x-kubernetes-list-type": "atomic" } @@ -37023,7 +37125,8 @@ "items": { "default": {}, "$ref": "#/definitions/com.github.openshift.api.operatoringress.v1.DNSRecord" - } + }, + "x-kubernetes-list-type": "atomic" }, "kind": { "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", @@ -37074,7 +37177,8 @@ "items": { "type": "string", "default": "" - } + }, + "x-kubernetes-list-type": "atomic" } } }, @@ -37093,7 +37197,8 @@ "items": { "default": {}, "$ref": "#/definitions/com.github.openshift.api.operatoringress.v1.DNSZoneStatus" - } + }, + "x-kubernetes-list-type": "atomic" } } }, @@ -37137,7 +37242,8 @@ "items": { "default": {}, "$ref": "#/definitions/com.github.openshift.api.operatoringress.v1.DNSZoneCondition" - } + }, + "x-kubernetes-list-type": "atomic" }, "dnsZone": { "description": "dnsZone is the zone where the record is published.", @@ -52174,77 +52280,6 @@ "description": "IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.", "type": "string", "format": "int-or-string" - }, - "io.k8s.apimachinery.pkg.version.Info": { - "description": "Info contains versioning information. how we'll want to distribute that information.", - "type": "object", - "required": [ - "major", - "minor", - "gitVersion", - "gitCommit", - "gitTreeState", - "buildDate", - "goVersion", - "compiler", - "platform" - ], - "properties": { - "buildDate": { - "type": "string", - "default": "" - }, - "compiler": { - "type": "string", - "default": "" - }, - "emulationMajor": { - "description": "EmulationMajor is the major version of the emulation version", - "type": "string" - }, - "emulationMinor": { - "description": "EmulationMinor is the minor version of the emulation version", - "type": "string" - }, - "gitCommit": { - "type": "string", - "default": "" - }, - "gitTreeState": { - "type": "string", - "default": "" - }, - "gitVersion": { - "type": "string", - "default": "" - }, - "goVersion": { - "type": "string", - "default": "" - }, - "major": { - "description": "Major is the major version of the binary version", - "type": "string", - "default": "" - }, - "minCompatibilityMajor": { - "description": "MinCompatibilityMajor is the major version of the minimum compatibility version", - "type": "string" - }, - "minCompatibilityMinor": { - "description": "MinCompatibilityMinor is the minor version of the minimum compatibility version", - "type": "string" - }, - "minor": { - "description": "Minor is the minor version of the binary version", - "type": "string", - "default": "" - }, - "platform": { - "type": "string", - "default": "" - } - } } } } diff --git a/payload-manifests/crds/0000_10_config-operator_01_infrastructures-CustomNoUpgrade.crd.yaml b/payload-manifests/crds/0000_10_config-operator_01_infrastructures-CustomNoUpgrade.crd.yaml index 9086d4a5720..41f5429fd2e 100644 --- a/payload-manifests/crds/0000_10_config-operator_01_infrastructures-CustomNoUpgrade.crd.yaml +++ b/payload-manifests/crds/0000_10_config-operator_01_infrastructures-CustomNoUpgrade.crd.yaml @@ -1262,6 +1262,28 @@ spec: ingress load balancer. nullable: true properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load @@ -1467,6 +1489,28 @@ spec: must be provided for the API and internal API load balancers as well as the ingress load balancer. properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load @@ -1844,6 +1888,28 @@ spec: ingress load balancer. nullable: true properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load 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 803c48a1e28..52963a0201f 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 @@ -1506,6 +1506,28 @@ spec: ingress load balancer. nullable: true properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load diff --git a/payload-manifests/crds/0000_10_config-operator_01_infrastructures-DevPreviewNoUpgrade.crd.yaml b/payload-manifests/crds/0000_10_config-operator_01_infrastructures-DevPreviewNoUpgrade.crd.yaml index de1a68c90a5..e4d7b81ab03 100644 --- a/payload-manifests/crds/0000_10_config-operator_01_infrastructures-DevPreviewNoUpgrade.crd.yaml +++ b/payload-manifests/crds/0000_10_config-operator_01_infrastructures-DevPreviewNoUpgrade.crd.yaml @@ -1262,6 +1262,28 @@ spec: ingress load balancer. nullable: true properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load @@ -1467,6 +1489,28 @@ spec: must be provided for the API and internal API load balancers as well as the ingress load balancer. properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load @@ -1844,6 +1888,28 @@ spec: ingress load balancer. nullable: true properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load 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 245bc3ea638..c1640476db6 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 @@ -1506,6 +1506,28 @@ spec: ingress load balancer. nullable: true properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load 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 c45b7d6e83a..087362324c3 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 @@ -1262,6 +1262,28 @@ spec: ingress load balancer. nullable: true properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load @@ -1467,6 +1489,28 @@ spec: must be provided for the API and internal API load balancers as well as the ingress load balancer. properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load @@ -1844,6 +1888,28 @@ spec: ingress load balancer. nullable: true properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load diff --git a/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-CustomNoUpgrade.crd.yaml b/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-CustomNoUpgrade.crd.yaml index 24a77a81b54..fa35c092930 100644 --- a/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-CustomNoUpgrade.crd.yaml +++ b/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-CustomNoUpgrade.crd.yaml @@ -1548,6 +1548,28 @@ spec: ingress load balancer. nullable: true properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load @@ -1754,6 +1776,28 @@ spec: must be provided for the API and internal API load balancers as well as the ingress load balancer. properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load @@ -2135,6 +2179,28 @@ spec: ingress load balancer. nullable: true properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load 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 a921ed5d346..585dc3f5dfb 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 @@ -1792,6 +1792,28 @@ spec: ingress load balancer. nullable: true properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load diff --git a/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-DevPreviewNoUpgrade.crd.yaml b/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-DevPreviewNoUpgrade.crd.yaml index a8e3fcd21d6..8e4387eb59c 100644 --- a/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-DevPreviewNoUpgrade.crd.yaml +++ b/payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-DevPreviewNoUpgrade.crd.yaml @@ -1548,6 +1548,28 @@ spec: ingress load balancer. nullable: true properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load @@ -1754,6 +1776,28 @@ spec: must be provided for the API and internal API load balancers as well as the ingress load balancer. properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load @@ -2135,6 +2179,28 @@ spec: ingress load balancer. nullable: true properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load 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 678e5a4202f..87166a83249 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 @@ -1792,6 +1792,28 @@ spec: ingress load balancer. nullable: true properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load 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 52f75fc841f..00a697fdf42 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 @@ -1548,6 +1548,28 @@ spec: ingress load balancer. nullable: true properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load @@ -1754,6 +1776,28 @@ spec: must be provided for the API and internal API load balancers as well as the ingress load balancer. properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load @@ -2135,6 +2179,28 @@ spec: ingress load balancer. nullable: true properties: + cloudDnsIPs: + description: |- + cloudDnsIPs holds the IP addresses of the cloud platform DNS servers. + These DNS server IP addresses are used when the cluster DNS type is ClusterHosted. + For AWS, the DNS IPs are typically the VPC's CIDR base address plus 2 (e.g., 10.0.0.2 for VPC 10.0.0.0/16). + This field is only valid when dnsType is set to ClusterHosted. + When dnsType is not ClusterHosted, this field must not be set. + Entries in cloudDnsIPs 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 clusterHosted: description: |- clusterHosted holds the IP addresses of API, API-Int and Ingress Load