Text file
src/github.com/openshift/api/config/v1/0000_10_config-operator_01_infrastructure-TechPreviewNoUpgrade.crd.yaml
1apiVersion: apiextensions.k8s.io/v1
2kind: CustomResourceDefinition
3metadata:
4 annotations:
5 api-approved.openshift.io: https://github.com/openshift/api/pull/470
6 include.release.openshift.io/ibm-cloud-managed: "true"
7 include.release.openshift.io/self-managed-high-availability: "true"
8 include.release.openshift.io/single-node-developer: "true"
9 release.openshift.io/feature-set: TechPreviewNoUpgrade
10 name: infrastructures.config.openshift.io
11spec:
12 group: config.openshift.io
13 names:
14 kind: Infrastructure
15 listKind: InfrastructureList
16 plural: infrastructures
17 singular: infrastructure
18 scope: Cluster
19 versions:
20 - name: v1
21 schema:
22 openAPIV3Schema:
23 description: "Infrastructure holds cluster-wide information about Infrastructure. The canonical name is `cluster` \n Compatibility level 1: Stable within a major release for a minimum of 12 months or 3 minor releases (whichever is longer)."
24 properties:
25 apiVersion:
26 description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
27 type: string
28 kind:
29 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'
30 type: string
31 metadata:
32 type: object
33 spec:
34 description: spec holds user settable values for configuration
35 properties:
36 cloudConfig:
37 description: "cloudConfig is a reference to a ConfigMap containing the cloud provider configuration file. This configuration file is used to configure the Kubernetes cloud provider integration when using the built-in cloud provider integration or the external cloud controller manager. The namespace for this config map is openshift-config. \n cloudConfig should only be consumed by the kube_cloud_config controller. The controller is responsible for using the user configuration in the spec for various platforms and combining that with the user provided ConfigMap in this field to create a stitched kube cloud config. The controller generates a ConfigMap `kube-cloud-config` in `openshift-config-managed` namespace with the kube cloud config is stored in `cloud.conf` key. All the clients are expected to use the generated ConfigMap only."
38 properties:
39 key:
40 description: Key allows pointing to a specific key/value inside of the configmap. This is useful for logical file references.
41 type: string
42 name:
43 type: string
44 type: object
45 platformSpec:
46 description: platformSpec holds desired information specific to the underlying infrastructure provider.
47 properties:
48 alibabaCloud:
49 description: AlibabaCloud contains settings specific to the Alibaba Cloud infrastructure provider.
50 type: object
51 aws:
52 description: AWS contains settings specific to the Amazon Web Services infrastructure provider.
53 properties:
54 serviceEndpoints:
55 description: serviceEndpoints list contains custom endpoints which will override default service endpoint of AWS Services. There must be only one ServiceEndpoint for a service.
56 items:
57 description: AWSServiceEndpoint store the configuration of a custom url to override existing defaults of AWS Services.
58 properties:
59 name:
60 description: name is the name of the AWS service. The list of all the service names can be found at https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html This must be provided and cannot be empty.
61 pattern: ^[a-z0-9-]+$
62 type: string
63 url:
64 description: url is fully qualified URI with scheme https, that overrides the default generated endpoint for a client. This must be provided and cannot be empty.
65 pattern: ^https://
66 type: string
67 type: object
68 type: array
69 type: object
70 azure:
71 description: Azure contains settings specific to the Azure infrastructure provider.
72 type: object
73 baremetal:
74 description: BareMetal contains settings specific to the BareMetal platform.
75 type: object
76 equinixMetal:
77 description: EquinixMetal contains settings specific to the Equinix Metal infrastructure provider.
78 type: object
79 external:
80 description: ExternalPlatformType represents generic infrastructure provider. Platform-specific components should be supplemented separately.
81 properties:
82 platformName:
83 default: Unknown
84 description: PlatformName holds the arbitrary string representing the infrastructure provider name, expected to be set at the installation time. This field is solely for informational and reporting purposes and is not expected to be used for decision-making.
85 type: string
86 x-kubernetes-validations:
87 - message: platform name cannot be changed once set
88 rule: oldSelf == 'Unknown' || self == oldSelf
89 type: object
90 gcp:
91 description: GCP contains settings specific to the Google Cloud Platform infrastructure provider.
92 type: object
93 ibmcloud:
94 description: IBMCloud contains settings specific to the IBMCloud infrastructure provider.
95 type: object
96 kubevirt:
97 description: Kubevirt contains settings specific to the kubevirt infrastructure provider.
98 type: object
99 nutanix:
100 description: Nutanix contains settings specific to the Nutanix infrastructure provider.
101 properties:
102 prismCentral:
103 description: prismCentral holds the endpoint address and port to access the Nutanix Prism Central. When a cluster-wide proxy is installed, by default, this endpoint will be accessed via the proxy. Should you wish for communication with this endpoint not to be proxied, please add the endpoint to the proxy spec.noProxy list.
104 properties:
105 address:
106 description: address is the endpoint address (DNS name or IP address) of the Nutanix Prism Central or Element (cluster)
107 maxLength: 256
108 type: string
109 port:
110 description: port is the port number to access the Nutanix Prism Central or Element (cluster)
111 format: int32
112 maximum: 65535
113 minimum: 1
114 type: integer
115 required:
116 - address
117 - port
118 type: object
119 prismElements:
120 description: prismElements holds one or more endpoint address and port data to access the Nutanix Prism Elements (clusters) of the Nutanix Prism Central. Currently we only support one Prism Element (cluster) for an OpenShift cluster, where all the Nutanix resources (VMs, subnets, volumes, etc.) used in the OpenShift cluster are located. In the future, we may support Nutanix resources (VMs, etc.) spread over multiple Prism Elements (clusters) of the Prism Central.
121 items:
122 description: NutanixPrismElementEndpoint holds the name and endpoint data for a Prism Element (cluster)
123 properties:
124 endpoint:
125 description: endpoint holds the endpoint address and port data of the Prism Element (cluster). When a cluster-wide proxy is installed, by default, this endpoint will be accessed via the proxy. Should you wish for communication with this endpoint not to be proxied, please add the endpoint to the proxy spec.noProxy list.
126 properties:
127 address:
128 description: address is the endpoint address (DNS name or IP address) of the Nutanix Prism Central or Element (cluster)
129 maxLength: 256
130 type: string
131 port:
132 description: port is the port number to access the Nutanix Prism Central or Element (cluster)
133 format: int32
134 maximum: 65535
135 minimum: 1
136 type: integer
137 required:
138 - address
139 - port
140 type: object
141 name:
142 description: name is the name of the Prism Element (cluster). This value will correspond with the cluster field configured on other resources (eg Machines, PVCs, etc).
143 maxLength: 256
144 type: string
145 required:
146 - endpoint
147 - name
148 type: object
149 type: array
150 x-kubernetes-list-map-keys:
151 - name
152 x-kubernetes-list-type: map
153 required:
154 - prismCentral
155 - prismElements
156 type: object
157 openstack:
158 description: OpenStack contains settings specific to the OpenStack infrastructure provider.
159 type: object
160 ovirt:
161 description: Ovirt contains settings specific to the oVirt infrastructure provider.
162 type: object
163 powervs:
164 description: PowerVS contains settings specific to the IBM Power Systems Virtual Servers infrastructure provider.
165 properties:
166 serviceEndpoints:
167 description: serviceEndpoints is a list of custom endpoints which will override the default service endpoints of a Power VS service.
168 items:
169 description: PowervsServiceEndpoint stores the configuration of a custom url to override existing defaults of PowerVS Services.
170 properties:
171 name:
172 description: name is the name of the Power VS service. Few of the services are IAM - https://cloud.ibm.com/apidocs/iam-identity-token-api ResourceController - https://cloud.ibm.com/apidocs/resource-controller/resource-controller Power Cloud - https://cloud.ibm.com/apidocs/power-cloud
173 pattern: ^[a-z0-9-]+$
174 type: string
175 url:
176 description: url is fully qualified URI with scheme https, that overrides the default generated endpoint for a client. This must be provided and cannot be empty.
177 format: uri
178 pattern: ^https://
179 type: string
180 required:
181 - name
182 - url
183 type: object
184 type: array
185 x-kubernetes-list-map-keys:
186 - name
187 x-kubernetes-list-type: map
188 type: object
189 type:
190 description: type is the underlying infrastructure provider for the cluster. This value controls whether infrastructure automation such as service load balancers, dynamic volume provisioning, machine creation and deletion, and other integrations are enabled. If None, no infrastructure automation is enabled. Allowed values are "AWS", "Azure", "BareMetal", "GCP", "Libvirt", "OpenStack", "VSphere", "oVirt", "KubeVirt", "EquinixMetal", "PowerVS", "AlibabaCloud", "Nutanix" and "None". Individual components may not support all platforms, and must handle unrecognized platforms as None if they do not support that platform.
191 enum:
192 - ""
193 - AWS
194 - Azure
195 - BareMetal
196 - GCP
197 - Libvirt
198 - OpenStack
199 - None
200 - VSphere
201 - oVirt
202 - IBMCloud
203 - KubeVirt
204 - EquinixMetal
205 - PowerVS
206 - AlibabaCloud
207 - Nutanix
208 - External
209 type: string
210 vsphere:
211 description: VSphere contains settings specific to the VSphere infrastructure provider.
212 properties:
213 failureDomains:
214 description: failureDomains contains the definition of region, zone and the vCenter topology. If this is omitted failure domains (regions and zones) will not be used.
215 items:
216 description: VSpherePlatformFailureDomainSpec holds the region and zone failure domain and the vCenter topology of that failure domain.
217 properties:
218 name:
219 description: name defines the arbitrary but unique name of a failure domain.
220 maxLength: 256
221 minLength: 1
222 type: string
223 region:
224 description: region defines the name of a region tag that will be attached to a vCenter datacenter. The tag category in vCenter must be named openshift-region.
225 maxLength: 80
226 minLength: 1
227 type: string
228 server:
229 anyOf:
230 - format: ipv4
231 - format: ipv6
232 - format: hostname
233 description: server is the fully-qualified domain name or the IP address of the vCenter server. ---
234 maxLength: 255
235 minLength: 1
236 type: string
237 topology:
238 description: Topology describes a given failure domain using vSphere constructs
239 properties:
240 computeCluster:
241 description: computeCluster the absolute path of the vCenter cluster in which virtual machine will be located. The absolute path is of the form /<datacenter>/host/<cluster>. The maximum length of the path is 2048 characters.
242 maxLength: 2048
243 pattern: ^/.*?/host/.*?
244 type: string
245 datacenter:
246 description: datacenter is the name of vCenter datacenter in which virtual machines will be located. The maximum length of the datacenter name is 80 characters.
247 maxLength: 80
248 type: string
249 datastore:
250 description: datastore is the absolute path of the datastore in which the virtual machine is located. The absolute path is of the form /<datacenter>/datastore/<datastore> The maximum length of the path is 2048 characters.
251 maxLength: 2048
252 pattern: ^/.*?/datastore/.*?
253 type: string
254 folder:
255 description: folder is the absolute path of the folder where virtual machines are located. The absolute path is of the form /<datacenter>/vm/<folder>. The maximum length of the path is 2048 characters.
256 maxLength: 2048
257 pattern: ^/.*?/vm/.*?
258 type: string
259 networks:
260 description: networks is the list of port group network names within this failure domain. Currently, we only support a single interface per RHCOS virtual machine. The available networks (port groups) can be listed using `govc ls 'network/*'` The single interface should be the absolute path of the form /<datacenter>/network/<portgroup>.
261 items:
262 type: string
263 maxItems: 1
264 minItems: 1
265 type: array
266 resourcePool:
267 description: resourcePool is the absolute path of the resource pool where virtual machines will be created. The absolute path is of the form /<datacenter>/host/<cluster>/Resources/<resourcepool>. The maximum length of the path is 2048 characters.
268 maxLength: 2048
269 pattern: ^/.*?/host/.*?/Resources.*
270 type: string
271 required:
272 - computeCluster
273 - datacenter
274 - datastore
275 - networks
276 type: object
277 zone:
278 description: zone defines the name of a zone tag that will be attached to a vCenter cluster. The tag category in vCenter must be named openshift-zone.
279 maxLength: 80
280 minLength: 1
281 type: string
282 required:
283 - name
284 - region
285 - server
286 - topology
287 - zone
288 type: object
289 type: array
290 nodeNetworking:
291 description: nodeNetworking contains the definition of internal and external network constraints for assigning the node's networking. If this field is omitted, networking defaults to the legacy address selection behavior which is to only support a single address and return the first one found.
292 properties:
293 external:
294 description: external represents the network configuration of the node that is externally routable.
295 properties:
296 excludeNetworkSubnetCidr:
297 description: excludeNetworkSubnetCidr IP addresses in subnet ranges will be excluded when selecting the IP address from the VirtualMachine's VM for use in the status.addresses fields. ---
298 items:
299 format: cidr
300 type: string
301 type: array
302 network:
303 description: network VirtualMachine's VM Network names that will be used to when searching for status.addresses fields. Note that if internal.networkSubnetCIDR and external.networkSubnetCIDR are not set, then the vNIC associated to this network must only have a single IP address assigned to it. The available networks (port groups) can be listed using `govc ls 'network/*'`
304 type: string
305 networkSubnetCidr:
306 description: networkSubnetCidr IP address on VirtualMachine's network interfaces included in the fields' CIDRs that will be used in respective status.addresses fields. ---
307 items:
308 format: cidr
309 type: string
310 type: array
311 type: object
312 internal:
313 description: internal represents the network configuration of the node that is routable only within the cluster.
314 properties:
315 excludeNetworkSubnetCidr:
316 description: excludeNetworkSubnetCidr IP addresses in subnet ranges will be excluded when selecting the IP address from the VirtualMachine's VM for use in the status.addresses fields. ---
317 items:
318 format: cidr
319 type: string
320 type: array
321 network:
322 description: network VirtualMachine's VM Network names that will be used to when searching for status.addresses fields. Note that if internal.networkSubnetCIDR and external.networkSubnetCIDR are not set, then the vNIC associated to this network must only have a single IP address assigned to it. The available networks (port groups) can be listed using `govc ls 'network/*'`
323 type: string
324 networkSubnetCidr:
325 description: networkSubnetCidr IP address on VirtualMachine's network interfaces included in the fields' CIDRs that will be used in respective status.addresses fields. ---
326 items:
327 format: cidr
328 type: string
329 type: array
330 type: object
331 type: object
332 vcenters:
333 description: vcenters holds the connection details for services to communicate with vCenter. Currently, only a single vCenter is supported. ---
334 items:
335 description: VSpherePlatformVCenterSpec stores the vCenter connection fields. This is used by the vSphere CCM.
336 properties:
337 datacenters:
338 description: The vCenter Datacenters in which the RHCOS vm guests are located. This field will be used by the Cloud Controller Manager. Each datacenter listed here should be used within a topology.
339 items:
340 type: string
341 minItems: 1
342 type: array
343 port:
344 description: port is the TCP port that will be used to communicate to the vCenter endpoint. When omitted, this means the user has no opinion and it is up to the platform to choose a sensible default, which is subject to change over time.
345 format: int32
346 maximum: 32767
347 minimum: 1
348 type: integer
349 server:
350 anyOf:
351 - format: ipv4
352 - format: ipv6
353 - format: hostname
354 description: server is the fully-qualified domain name or the IP address of the vCenter server. ---
355 maxLength: 255
356 type: string
357 required:
358 - datacenters
359 - server
360 type: object
361 maxItems: 1
362 minItems: 0
363 type: array
364 type: object
365 type: object
366 type: object
367 status:
368 description: status holds observed values from the cluster. They may not be overridden.
369 properties:
370 apiServerInternalURI:
371 description: apiServerInternalURL is a valid URI with scheme 'https', address and optionally a port (defaulting to 443). apiServerInternalURL can be used by components like kubelets, to contact the Kubernetes API server using the infrastructure provider rather than Kubernetes networking.
372 type: string
373 apiServerURL:
374 description: apiServerURL is a valid URI with scheme 'https', address and optionally a port (defaulting to 443). apiServerURL can be used by components like the web console to tell users where to find the Kubernetes API.
375 type: string
376 controlPlaneTopology:
377 default: HighlyAvailable
378 description: controlPlaneTopology expresses the expectations for operands that normally run on control nodes. The default is 'HighlyAvailable', which represents the behavior operators have in a "normal" cluster. The 'SingleReplica' mode will be used in single-node deployments and the operators should not configure the operand for highly-available operation The 'External' mode indicates that the control plane is hosted externally to the cluster and that its components are not visible within the cluster.
379 enum:
380 - HighlyAvailable
381 - SingleReplica
382 - External
383 type: string
384 cpuPartitioning:
385 default: None
386 description: cpuPartitioning expresses if CPU partitioning is a currently enabled feature in the cluster. CPU Partitioning means that this cluster can support partitioning workloads to specific CPU Sets. Valid values are "None" and "AllNodes". When omitted, the default value is "None". The default value of "None" indicates that no nodes will be setup with CPU partitioning. The "AllNodes" value indicates that all nodes have been setup with CPU partitioning, and can then be further configured via the PerformanceProfile API.
387 enum:
388 - None
389 - AllNodes
390 type: string
391 etcdDiscoveryDomain:
392 description: 'etcdDiscoveryDomain is the domain used to fetch the SRV records for discovering etcd servers and clients. For more info: https://github.com/etcd-io/etcd/blob/329be66e8b3f9e2e6af83c123ff89297e49ebd15/Documentation/op-guide/clustering.md#dns-discovery deprecated: as of 4.7, this field is no longer set or honored. It will be removed in a future release.'
393 type: string
394 infrastructureName:
395 description: infrastructureName uniquely identifies a cluster with a human friendly name. Once set it should not be changed. Must be of max length 27 and must have only alphanumeric or hyphen characters.
396 type: string
397 infrastructureTopology:
398 default: HighlyAvailable
399 description: 'infrastructureTopology expresses the expectations for infrastructure services that do not run on control plane nodes, usually indicated by a node selector for a `role` value other than `master`. The default is ''HighlyAvailable'', which represents the behavior operators have in a "normal" cluster. The ''SingleReplica'' mode will be used in single-node deployments and the operators should not configure the operand for highly-available operation NOTE: External topology mode is not applicable for this field.'
400 enum:
401 - HighlyAvailable
402 - SingleReplica
403 type: string
404 platform:
405 description: "platform is the underlying infrastructure provider for the cluster. \n Deprecated: Use platformStatus.type instead."
406 enum:
407 - ""
408 - AWS
409 - Azure
410 - BareMetal
411 - GCP
412 - Libvirt
413 - OpenStack
414 - None
415 - VSphere
416 - oVirt
417 - IBMCloud
418 - KubeVirt
419 - EquinixMetal
420 - PowerVS
421 - AlibabaCloud
422 - Nutanix
423 - External
424 type: string
425 platformStatus:
426 description: platformStatus holds status information specific to the underlying infrastructure provider.
427 properties:
428 alibabaCloud:
429 description: AlibabaCloud contains settings specific to the Alibaba Cloud infrastructure provider.
430 properties:
431 region:
432 description: region specifies the region for Alibaba Cloud resources created for the cluster.
433 pattern: ^[0-9A-Za-z-]+$
434 type: string
435 resourceGroupID:
436 description: resourceGroupID is the ID of the resource group for the cluster.
437 pattern: ^(rg-[0-9A-Za-z]+)?$
438 type: string
439 resourceTags:
440 description: resourceTags is a list of additional tags to apply to Alibaba Cloud resources created for the cluster.
441 items:
442 description: AlibabaCloudResourceTag is the set of tags to add to apply to resources.
443 properties:
444 key:
445 description: key is the key of the tag.
446 maxLength: 128
447 minLength: 1
448 type: string
449 value:
450 description: value is the value of the tag.
451 maxLength: 128
452 minLength: 1
453 type: string
454 required:
455 - key
456 - value
457 type: object
458 maxItems: 20
459 type: array
460 x-kubernetes-list-map-keys:
461 - key
462 x-kubernetes-list-type: map
463 required:
464 - region
465 type: object
466 aws:
467 description: AWS contains settings specific to the Amazon Web Services infrastructure provider.
468 properties:
469 region:
470 description: region holds the default AWS region for new AWS resources created by the cluster.
471 type: string
472 resourceTags:
473 description: resourceTags is a list of additional tags to apply to AWS resources created for the cluster. See https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html for information on tagging AWS resources. AWS supports a maximum of 50 tags per resource. OpenShift reserves 25 tags for its use, leaving 25 tags available for the user.
474 items:
475 description: AWSResourceTag is a tag to apply to AWS resources created for the cluster.
476 properties:
477 key:
478 description: key is the key of the tag
479 maxLength: 128
480 minLength: 1
481 pattern: ^[0-9A-Za-z_.:/=+-@]+$
482 type: string
483 value:
484 description: value is the value of the tag. Some AWS service do not support empty values. Since tags are added to resources in many services, the length of the tag value must meet the requirements of all services.
485 maxLength: 256
486 minLength: 1
487 pattern: ^[0-9A-Za-z_.:/=+-@]+$
488 type: string
489 required:
490 - key
491 - value
492 type: object
493 maxItems: 25
494 type: array
495 serviceEndpoints:
496 description: ServiceEndpoints list contains custom endpoints which will override default service endpoint of AWS Services. There must be only one ServiceEndpoint for a service.
497 items:
498 description: AWSServiceEndpoint store the configuration of a custom url to override existing defaults of AWS Services.
499 properties:
500 name:
501 description: name is the name of the AWS service. The list of all the service names can be found at https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html This must be provided and cannot be empty.
502 pattern: ^[a-z0-9-]+$
503 type: string
504 url:
505 description: url is fully qualified URI with scheme https, that overrides the default generated endpoint for a client. This must be provided and cannot be empty.
506 pattern: ^https://
507 type: string
508 type: object
509 type: array
510 type: object
511 azure:
512 description: Azure contains settings specific to the Azure infrastructure provider.
513 properties:
514 armEndpoint:
515 description: armEndpoint specifies a URL to use for resource management in non-soverign clouds such as Azure Stack.
516 type: string
517 cloudName:
518 description: cloudName is the name of the Azure cloud environment which can be used to configure the Azure SDK with the appropriate Azure API endpoints. If empty, the value is equal to `AzurePublicCloud`.
519 enum:
520 - ""
521 - AzurePublicCloud
522 - AzureUSGovernmentCloud
523 - AzureChinaCloud
524 - AzureGermanCloud
525 - AzureStackCloud
526 type: string
527 networkResourceGroupName:
528 description: networkResourceGroupName is the Resource Group for network resources like the Virtual Network and Subnets used by the cluster. If empty, the value is same as ResourceGroupName.
529 type: string
530 resourceGroupName:
531 description: resourceGroupName is the Resource Group for new Azure resources created for the cluster.
532 type: string
533 resourceTags:
534 description: resourceTags is a list of additional tags to apply to Azure resources created for the cluster. See https://docs.microsoft.com/en-us/rest/api/resources/tags for information on tagging Azure resources. Due to limitations on Automation, Content Delivery Network, DNS Azure resources, a maximum of 15 tags may be applied. OpenShift reserves 5 tags for internal use, allowing 10 tags for user configuration.
535 items:
536 description: AzureResourceTag is a tag to apply to Azure resources created for the cluster.
537 properties:
538 key:
539 description: key is the key part of the tag. A tag key can have a maximum of 128 characters and cannot be empty. Key must begin with a letter, end with a letter, number or underscore, and must contain only alphanumeric characters and the following special characters `_ . -`.
540 maxLength: 128
541 minLength: 1
542 pattern: ^[a-zA-Z]([0-9A-Za-z_.-]*[0-9A-Za-z_])?$
543 type: string
544 value:
545 description: 'value is the value part of the tag. A tag value can have a maximum of 256 characters and cannot be empty. Value must contain only alphanumeric characters and the following special characters `_ + , - . / : ; < = > ? @`.'
546 maxLength: 256
547 minLength: 1
548 pattern: ^[0-9A-Za-z_.=+-@]+$
549 type: string
550 required:
551 - key
552 - value
553 type: object
554 maxItems: 10
555 type: array
556 x-kubernetes-validations:
557 - message: resourceTags are immutable and may only be configured during installation
558 rule: self.all(x, x in oldSelf) && oldSelf.all(x, x in self)
559 type: object
560 x-kubernetes-validations:
561 - message: resourceTags may only be configured during installation
562 rule: '!has(oldSelf.resourceTags) && !has(self.resourceTags) || has(oldSelf.resourceTags) && has(self.resourceTags)'
563 baremetal:
564 description: BareMetal contains settings specific to the BareMetal platform.
565 properties:
566 apiServerInternalIP:
567 description: "apiServerInternalIP is an IP address to contact the Kubernetes API server that can be used by components inside the cluster, like kubelets using the infrastructure rather than Kubernetes networking. It is the IP that the Infrastructure.status.apiServerInternalURI points to. It is the IP for a self-hosted load balancer in front of the API servers. \n Deprecated: Use APIServerInternalIPs instead."
568 type: string
569 apiServerInternalIPs:
570 description: apiServerInternalIPs are the IP addresses to contact the Kubernetes API server that can be used by components inside the cluster, like kubelets using the infrastructure rather than Kubernetes networking. These are the IPs for a self-hosted load balancer in front of the API servers. In dual stack clusters this list contains two IPs otherwise only one.
571 format: ip
572 items:
573 type: string
574 maxItems: 2
575 type: array
576 ingressIP:
577 description: "ingressIP is an external IP which routes to the default ingress controller. The IP is a suitable target of a wildcard DNS record used to resolve default route host names. \n Deprecated: Use IngressIPs instead."
578 type: string
579 ingressIPs:
580 description: ingressIPs are the external IPs which route to the default ingress controller. The IPs are suitable targets of a wildcard DNS record used to resolve default route host names. In dual stack clusters this list contains two IPs otherwise only one.
581 format: ip
582 items:
583 type: string
584 maxItems: 2
585 type: array
586 loadBalancer:
587 default:
588 type: OpenShiftManagedDefault
589 description: loadBalancer defines how the load balancer used by the cluster is configured.
590 properties:
591 type:
592 default: OpenShiftManagedDefault
593 description: type defines the type of load balancer used by the cluster on BareMetal platform which can be a user-managed or openshift-managed load balancer that is to be used for the OpenShift API and Ingress endpoints. When set to OpenShiftManagedDefault the static pods in charge of API and Ingress traffic load-balancing defined in the machine config operator will be deployed. When set to UserManaged these static pods will not be deployed and it is expected that the load balancer is configured out of band by the deployer. When omitted, this means no opinion and the platform is left to choose a reasonable default. The default value is OpenShiftManagedDefault.
594 enum:
595 - OpenShiftManagedDefault
596 - UserManaged
597 type: string
598 x-kubernetes-validations:
599 - message: type is immutable once set
600 rule: oldSelf == '' || self == oldSelf
601 type: object
602 nodeDNSIP:
603 description: nodeDNSIP is the IP address for the internal DNS used by the nodes. Unlike the one managed by the DNS operator, `NodeDNSIP` provides name resolution for the nodes themselves. There is no DNS-as-a-service for BareMetal deployments. In order to minimize necessary changes to the datacenter DNS, a DNS service is hosted as a static pod to serve those hostnames to the nodes in the cluster.
604 type: string
605 type: object
606 equinixMetal:
607 description: EquinixMetal contains settings specific to the Equinix Metal infrastructure provider.
608 properties:
609 apiServerInternalIP:
610 description: apiServerInternalIP is an IP address to contact the Kubernetes API server that can be used by components inside the cluster, like kubelets using the infrastructure rather than Kubernetes networking. It is the IP that the Infrastructure.status.apiServerInternalURI points to. It is the IP for a self-hosted load balancer in front of the API servers.
611 type: string
612 ingressIP:
613 description: ingressIP is an external IP which routes to the default ingress controller. The IP is a suitable target of a wildcard DNS record used to resolve default route host names.
614 type: string
615 type: object
616 external:
617 description: External contains settings specific to the generic External infrastructure provider.
618 type: object
619 gcp:
620 description: GCP contains settings specific to the Google Cloud Platform infrastructure provider.
621 properties:
622 projectID:
623 description: resourceGroupName is the Project ID for new GCP resources created for the cluster.
624 type: string
625 region:
626 description: region holds the region for new GCP resources created for the cluster.
627 type: string
628 type: object
629 ibmcloud:
630 description: IBMCloud contains settings specific to the IBMCloud infrastructure provider.
631 properties:
632 cisInstanceCRN:
633 description: CISInstanceCRN is the CRN of the Cloud Internet Services instance managing the DNS zone for the cluster's base domain
634 type: string
635 dnsInstanceCRN:
636 description: DNSInstanceCRN is the CRN of the DNS Services instance managing the DNS zone for the cluster's base domain
637 type: string
638 location:
639 description: Location is where the cluster has been deployed
640 type: string
641 providerType:
642 description: ProviderType indicates the type of cluster that was created
643 type: string
644 resourceGroupName:
645 description: ResourceGroupName is the Resource Group for new IBMCloud resources created for the cluster.
646 type: string
647 type: object
648 kubevirt:
649 description: Kubevirt contains settings specific to the kubevirt infrastructure provider.
650 properties:
651 apiServerInternalIP:
652 description: apiServerInternalIP is an IP address to contact the Kubernetes API server that can be used by components inside the cluster, like kubelets using the infrastructure rather than Kubernetes networking. It is the IP that the Infrastructure.status.apiServerInternalURI points to. It is the IP for a self-hosted load balancer in front of the API servers.
653 type: string
654 ingressIP:
655 description: ingressIP is an external IP which routes to the default ingress controller. The IP is a suitable target of a wildcard DNS record used to resolve default route host names.
656 type: string
657 type: object
658 nutanix:
659 description: Nutanix contains settings specific to the Nutanix infrastructure provider.
660 properties:
661 apiServerInternalIP:
662 description: "apiServerInternalIP is an IP address to contact the Kubernetes API server that can be used by components inside the cluster, like kubelets using the infrastructure rather than Kubernetes networking. It is the IP that the Infrastructure.status.apiServerInternalURI points to. It is the IP for a self-hosted load balancer in front of the API servers. \n Deprecated: Use APIServerInternalIPs instead."
663 type: string
664 apiServerInternalIPs:
665 description: apiServerInternalIPs are the IP addresses to contact the Kubernetes API server that can be used by components inside the cluster, like kubelets using the infrastructure rather than Kubernetes networking. These are the IPs for a self-hosted load balancer in front of the API servers. In dual stack clusters this list contains two IPs otherwise only one.
666 format: ip
667 items:
668 type: string
669 maxItems: 2
670 type: array
671 ingressIP:
672 description: "ingressIP is an external IP which routes to the default ingress controller. The IP is a suitable target of a wildcard DNS record used to resolve default route host names. \n Deprecated: Use IngressIPs instead."
673 type: string
674 ingressIPs:
675 description: ingressIPs are the external IPs which route to the default ingress controller. The IPs are suitable targets of a wildcard DNS record used to resolve default route host names. In dual stack clusters this list contains two IPs otherwise only one.
676 format: ip
677 items:
678 type: string
679 maxItems: 2
680 type: array
681 loadBalancer:
682 default:
683 type: OpenShiftManagedDefault
684 description: loadBalancer defines how the load balancer used by the cluster is configured.
685 properties:
686 type:
687 default: OpenShiftManagedDefault
688 description: type defines the type of load balancer used by the cluster on Nutanix platform which can be a user-managed or openshift-managed load balancer that is to be used for the OpenShift API and Ingress endpoints. When set to OpenShiftManagedDefault the static pods in charge of API and Ingress traffic load-balancing defined in the machine config operator will be deployed. When set to UserManaged these static pods will not be deployed and it is expected that the load balancer is configured out of band by the deployer. When omitted, this means no opinion and the platform is left to choose a reasonable default. The default value is OpenShiftManagedDefault.
689 enum:
690 - OpenShiftManagedDefault
691 - UserManaged
692 type: string
693 x-kubernetes-validations:
694 - message: type is immutable once set
695 rule: oldSelf == '' || self == oldSelf
696 type: object
697 type: object
698 openstack:
699 description: OpenStack contains settings specific to the OpenStack infrastructure provider.
700 properties:
701 apiServerInternalIP:
702 description: "apiServerInternalIP is an IP address to contact the Kubernetes API server that can be used by components inside the cluster, like kubelets using the infrastructure rather than Kubernetes networking. It is the IP that the Infrastructure.status.apiServerInternalURI points to. It is the IP for a self-hosted load balancer in front of the API servers. \n Deprecated: Use APIServerInternalIPs instead."
703 type: string
704 apiServerInternalIPs:
705 description: apiServerInternalIPs are the IP addresses to contact the Kubernetes API server that can be used by components inside the cluster, like kubelets using the infrastructure rather than Kubernetes networking. These are the IPs for a self-hosted load balancer in front of the API servers. In dual stack clusters this list contains two IPs otherwise only one.
706 format: ip
707 items:
708 type: string
709 maxItems: 2
710 type: array
711 cloudName:
712 description: cloudName is the name of the desired OpenStack cloud in the client configuration file (`clouds.yaml`).
713 type: string
714 ingressIP:
715 description: "ingressIP is an external IP which routes to the default ingress controller. The IP is a suitable target of a wildcard DNS record used to resolve default route host names. \n Deprecated: Use IngressIPs instead."
716 type: string
717 ingressIPs:
718 description: ingressIPs are the external IPs which route to the default ingress controller. The IPs are suitable targets of a wildcard DNS record used to resolve default route host names. In dual stack clusters this list contains two IPs otherwise only one.
719 format: ip
720 items:
721 type: string
722 maxItems: 2
723 type: array
724 loadBalancer:
725 default:
726 type: OpenShiftManagedDefault
727 description: loadBalancer defines how the load balancer used by the cluster is configured.
728 properties:
729 type:
730 default: OpenShiftManagedDefault
731 description: type defines the type of load balancer used by the cluster on OpenStack platform which can be a user-managed or openshift-managed load balancer that is to be used for the OpenShift API and Ingress endpoints. When set to OpenShiftManagedDefault the static pods in charge of API and Ingress traffic load-balancing defined in the machine config operator will be deployed. When set to UserManaged these static pods will not be deployed and it is expected that the load balancer is configured out of band by the deployer. When omitted, this means no opinion and the platform is left to choose a reasonable default. The default value is OpenShiftManagedDefault.
732 enum:
733 - OpenShiftManagedDefault
734 - UserManaged
735 type: string
736 x-kubernetes-validations:
737 - message: type is immutable once set
738 rule: oldSelf == '' || self == oldSelf
739 type: object
740 nodeDNSIP:
741 description: nodeDNSIP is the IP address for the internal DNS used by the nodes. Unlike the one managed by the DNS operator, `NodeDNSIP` provides name resolution for the nodes themselves. There is no DNS-as-a-service for OpenStack deployments. In order to minimize necessary changes to the datacenter DNS, a DNS service is hosted as a static pod to serve those hostnames to the nodes in the cluster.
742 type: string
743 type: object
744 ovirt:
745 description: Ovirt contains settings specific to the oVirt infrastructure provider.
746 properties:
747 apiServerInternalIP:
748 description: "apiServerInternalIP is an IP address to contact the Kubernetes API server that can be used by components inside the cluster, like kubelets using the infrastructure rather than Kubernetes networking. It is the IP that the Infrastructure.status.apiServerInternalURI points to. It is the IP for a self-hosted load balancer in front of the API servers. \n Deprecated: Use APIServerInternalIPs instead."
749 type: string
750 apiServerInternalIPs:
751 description: apiServerInternalIPs are the IP addresses to contact the Kubernetes API server that can be used by components inside the cluster, like kubelets using the infrastructure rather than Kubernetes networking. These are the IPs for a self-hosted load balancer in front of the API servers. In dual stack clusters this list contains two IPs otherwise only one.
752 format: ip
753 items:
754 type: string
755 maxItems: 2
756 type: array
757 ingressIP:
758 description: "ingressIP is an external IP which routes to the default ingress controller. The IP is a suitable target of a wildcard DNS record used to resolve default route host names. \n Deprecated: Use IngressIPs instead."
759 type: string
760 ingressIPs:
761 description: ingressIPs are the external IPs which route to the default ingress controller. The IPs are suitable targets of a wildcard DNS record used to resolve default route host names. In dual stack clusters this list contains two IPs otherwise only one.
762 format: ip
763 items:
764 type: string
765 maxItems: 2
766 type: array
767 loadBalancer:
768 default:
769 type: OpenShiftManagedDefault
770 description: loadBalancer defines how the load balancer used by the cluster is configured.
771 properties:
772 type:
773 default: OpenShiftManagedDefault
774 description: type defines the type of load balancer used by the cluster on Ovirt platform which can be a user-managed or openshift-managed load balancer that is to be used for the OpenShift API and Ingress endpoints. When set to OpenShiftManagedDefault the static pods in charge of API and Ingress traffic load-balancing defined in the machine config operator will be deployed. When set to UserManaged these static pods will not be deployed and it is expected that the load balancer is configured out of band by the deployer. When omitted, this means no opinion and the platform is left to choose a reasonable default. The default value is OpenShiftManagedDefault.
775 enum:
776 - OpenShiftManagedDefault
777 - UserManaged
778 type: string
779 x-kubernetes-validations:
780 - message: type is immutable once set
781 rule: oldSelf == '' || self == oldSelf
782 type: object
783 nodeDNSIP:
784 description: 'deprecated: as of 4.6, this field is no longer set or honored. It will be removed in a future release.'
785 type: string
786 type: object
787 powervs:
788 description: PowerVS contains settings specific to the Power Systems Virtual Servers infrastructure provider.
789 properties:
790 cisInstanceCRN:
791 description: CISInstanceCRN is the CRN of the Cloud Internet Services instance managing the DNS zone for the cluster's base domain
792 type: string
793 dnsInstanceCRN:
794 description: DNSInstanceCRN is the CRN of the DNS Services instance managing the DNS zone for the cluster's base domain
795 type: string
796 region:
797 description: region holds the default Power VS region for new Power VS resources created by the cluster.
798 type: string
799 resourceGroup:
800 description: 'resourceGroup is the resource group name for new IBMCloud resources created for a cluster. The resource group specified here will be used by cluster-image-registry-operator to set up a COS Instance in IBMCloud for the cluster registry. More about resource groups can be found here: https://cloud.ibm.com/docs/account?topic=account-rgs. When omitted, the image registry operator won''t be able to configure storage, which results in the image registry cluster operator not being in an available state.'
801 maxLength: 40
802 pattern: ^[a-zA-Z0-9-_ ]+$
803 type: string
804 x-kubernetes-validations:
805 - message: resourceGroup is immutable once set
806 rule: oldSelf == '' || self == oldSelf
807 serviceEndpoints:
808 description: serviceEndpoints is a list of custom endpoints which will override the default service endpoints of a Power VS service.
809 items:
810 description: PowervsServiceEndpoint stores the configuration of a custom url to override existing defaults of PowerVS Services.
811 properties:
812 name:
813 description: name is the name of the Power VS service. Few of the services are IAM - https://cloud.ibm.com/apidocs/iam-identity-token-api ResourceController - https://cloud.ibm.com/apidocs/resource-controller/resource-controller Power Cloud - https://cloud.ibm.com/apidocs/power-cloud
814 pattern: ^[a-z0-9-]+$
815 type: string
816 url:
817 description: url is fully qualified URI with scheme https, that overrides the default generated endpoint for a client. This must be provided and cannot be empty.
818 format: uri
819 pattern: ^https://
820 type: string
821 required:
822 - name
823 - url
824 type: object
825 type: array
826 zone:
827 description: 'zone holds the default zone for the new Power VS resources created by the cluster. Note: Currently only single-zone OCP clusters are supported'
828 type: string
829 type: object
830 x-kubernetes-validations:
831 - message: cannot unset resourceGroup once set
832 rule: '!has(oldSelf.resourceGroup) || has(self.resourceGroup)'
833 type:
834 description: "type is the underlying infrastructure provider for the cluster. This value controls whether infrastructure automation such as service load balancers, dynamic volume provisioning, machine creation and deletion, and other integrations are enabled. If None, no infrastructure automation is enabled. Allowed values are \"AWS\", \"Azure\", \"BareMetal\", \"GCP\", \"Libvirt\", \"OpenStack\", \"VSphere\", \"oVirt\", \"EquinixMetal\", \"PowerVS\", \"AlibabaCloud\", \"Nutanix\" and \"None\". Individual components may not support all platforms, and must handle unrecognized platforms as None if they do not support that platform. \n This value will be synced with to the `status.platform` and `status.platformStatus.type`. Currently this value cannot be changed once set."
835 enum:
836 - ""
837 - AWS
838 - Azure
839 - BareMetal
840 - GCP
841 - Libvirt
842 - OpenStack
843 - None
844 - VSphere
845 - oVirt
846 - IBMCloud
847 - KubeVirt
848 - EquinixMetal
849 - PowerVS
850 - AlibabaCloud
851 - Nutanix
852 - External
853 type: string
854 vsphere:
855 description: VSphere contains settings specific to the VSphere infrastructure provider.
856 properties:
857 apiServerInternalIP:
858 description: "apiServerInternalIP is an IP address to contact the Kubernetes API server that can be used by components inside the cluster, like kubelets using the infrastructure rather than Kubernetes networking. It is the IP that the Infrastructure.status.apiServerInternalURI points to. It is the IP for a self-hosted load balancer in front of the API servers. \n Deprecated: Use APIServerInternalIPs instead."
859 type: string
860 apiServerInternalIPs:
861 description: apiServerInternalIPs are the IP addresses to contact the Kubernetes API server that can be used by components inside the cluster, like kubelets using the infrastructure rather than Kubernetes networking. These are the IPs for a self-hosted load balancer in front of the API servers. In dual stack clusters this list contains two IPs otherwise only one.
862 format: ip
863 items:
864 type: string
865 maxItems: 2
866 type: array
867 ingressIP:
868 description: "ingressIP is an external IP which routes to the default ingress controller. The IP is a suitable target of a wildcard DNS record used to resolve default route host names. \n Deprecated: Use IngressIPs instead."
869 type: string
870 ingressIPs:
871 description: ingressIPs are the external IPs which route to the default ingress controller. The IPs are suitable targets of a wildcard DNS record used to resolve default route host names. In dual stack clusters this list contains two IPs otherwise only one.
872 format: ip
873 items:
874 type: string
875 maxItems: 2
876 type: array
877 loadBalancer:
878 default:
879 type: OpenShiftManagedDefault
880 description: loadBalancer defines how the load balancer used by the cluster is configured.
881 properties:
882 type:
883 default: OpenShiftManagedDefault
884 description: type defines the type of load balancer used by the cluster on VSphere platform which can be a user-managed or openshift-managed load balancer that is to be used for the OpenShift API and Ingress endpoints. When set to OpenShiftManagedDefault the static pods in charge of API and Ingress traffic load-balancing defined in the machine config operator will be deployed. When set to UserManaged these static pods will not be deployed and it is expected that the load balancer is configured out of band by the deployer. When omitted, this means no opinion and the platform is left to choose a reasonable default. The default value is OpenShiftManagedDefault.
885 enum:
886 - OpenShiftManagedDefault
887 - UserManaged
888 type: string
889 x-kubernetes-validations:
890 - message: type is immutable once set
891 rule: oldSelf == '' || self == oldSelf
892 type: object
893 nodeDNSIP:
894 description: nodeDNSIP is the IP address for the internal DNS used by the nodes. Unlike the one managed by the DNS operator, `NodeDNSIP` provides name resolution for the nodes themselves. There is no DNS-as-a-service for vSphere deployments. In order to minimize necessary changes to the datacenter DNS, a DNS service is hosted as a static pod to serve those hostnames to the nodes in the cluster.
895 type: string
896 type: object
897 type: object
898 type: object
899 required:
900 - spec
901 type: object
902 served: true
903 storage: true
904 subresources:
905 status: {}
View as plain text