apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    api-approved.openshift.io: https://github.com/openshift/api/pull/470
    include.release.openshift.io/ibm-cloud-managed: "true"
    include.release.openshift.io/self-managed-high-availability: "true"
    include.release.openshift.io/single-node-developer: "true"
  name: infrastructures.config.openshift.io
spec:
  group: config.openshift.io
  names:
    kind: Infrastructure
    listKind: InfrastructureList
    plural: infrastructures
    singular: infrastructure
  scope: Cluster
  versions:
  - name: v1
    schema:
      openAPIV3Schema:
        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)."
        properties:
          apiVersion:
            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'
            type: string
          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'
            type: string
          metadata:
            type: object
          spec:
            description: spec holds user settable values for configuration
            properties:
              cloudConfig:
                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."
                properties:
                  key:
                    description: Key allows pointing to a specific key/value inside
                      of the configmap.  This is useful for logical file references.
                    type: string
                  name:
                    type: string
                type: object
              platformSpec:
                description: platformSpec holds desired information specific to the
                  underlying infrastructure provider.
                properties:
                  alibabaCloud:
                    description: AlibabaCloud contains settings specific to the Alibaba
                      Cloud infrastructure provider.
                    type: object
                  aws:
                    description: AWS contains settings specific to the Amazon Web
                      Services infrastructure provider.
                    properties:
                      serviceEndpoints:
                        description: serviceEndpoints list contains custom endpoints
                          which will override default service endpoint of AWS Services.
                          There must be only one ServiceEndpoint for a service.
                        items:
                          description: AWSServiceEndpoint store the configuration
                            of a custom url to override existing defaults of AWS Services.
                          properties:
                            name:
                              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.
                              pattern: ^[a-z0-9-]+$
                              type: string
                            url:
                              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.
                              pattern: ^https://
                              type: string
                          type: object
                        type: array
                    type: object
                  azure:
                    description: Azure contains settings specific to the Azure infrastructure
                      provider.
                    type: object
                  baremetal:
                    description: BareMetal contains settings specific to the BareMetal
                      platform.
                    type: object
                  equinixMetal:
                    description: EquinixMetal contains settings specific to the Equinix
                      Metal infrastructure provider.
                    type: object
                  gcp:
                    description: GCP contains settings specific to the Google Cloud
                      Platform infrastructure provider.
                    type: object
                  ibmcloud:
                    description: IBMCloud contains settings specific to the IBMCloud
                      infrastructure provider.
                    type: object
                  kubevirt:
                    description: Kubevirt contains settings specific to the kubevirt
                      infrastructure provider.
                    type: object
                  nutanix:
                    description: Nutanix contains settings specific to the Nutanix
                      infrastructure provider.
                    properties:
                      prismCentral:
                        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.
                        properties:
                          address:
                            description: address is the endpoint address (DNS name
                              or IP address) of the Nutanix Prism Central or Element
                              (cluster)
                            maxLength: 256
                            type: string
                          port:
                            description: port is the port number to access the Nutanix
                              Prism Central or Element (cluster)
                            format: int32
                            maximum: 65535
                            minimum: 1
                            type: integer
                        required:
                        - address
                        - port
                        type: object
                      prismElements:
                        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.
                        items:
                          description: NutanixPrismElementEndpoint holds the name
                            and endpoint data for a Prism Element (cluster)
                          properties:
                            endpoint:
                              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.
                              properties:
                                address:
                                  description: address is the endpoint address (DNS
                                    name or IP address) of the Nutanix Prism Central
                                    or Element (cluster)
                                  maxLength: 256
                                  type: string
                                port:
                                  description: port is the port number to access the
                                    Nutanix Prism Central or Element (cluster)
                                  format: int32
                                  maximum: 65535
                                  minimum: 1
                                  type: integer
                              required:
                              - address
                              - port
                              type: object
                            name:
                              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).
                              maxLength: 256
                              type: string
                          required:
                          - endpoint
                          - name
                          type: object
                        type: array
                        x-kubernetes-list-map-keys:
                        - name
                        x-kubernetes-list-type: map
                    required:
                    - prismCentral
                    - prismElements
                    type: object
                  openstack:
                    description: OpenStack contains settings specific to the OpenStack
                      infrastructure provider.
                    type: object
                  ovirt:
                    description: Ovirt contains settings specific to the oVirt infrastructure
                      provider.
                    type: object
                  powervs:
                    description: PowerVS contains settings specific to the IBM Power
                      Systems Virtual Servers infrastructure provider.
                    properties:
                      serviceEndpoints:
                        description: serviceEndpoints is a list of custom endpoints
                          which will override the default service endpoints of a Power
                          VS service.
                        items:
                          description: PowervsServiceEndpoint stores the configuration
                            of a custom url to override existing defaults of PowerVS
                            Services.
                          properties:
                            name:
                              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
                              pattern: ^[a-z0-9-]+$
                              type: string
                            url:
                              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.
                              format: uri
                              pattern: ^https://
                              type: string
                          required:
                          - name
                          - url
                          type: object
                        type: array
                        x-kubernetes-list-map-keys:
                        - name
                        x-kubernetes-list-type: map
                    type: object
                  type:
                    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.
                    enum:
                    - ""
                    - AWS
                    - Azure
                    - BareMetal
                    - GCP
                    - Libvirt
                    - OpenStack
                    - None
                    - VSphere
                    - oVirt
                    - IBMCloud
                    - KubeVirt
                    - EquinixMetal
                    - PowerVS
                    - AlibabaCloud
                    - Nutanix
                    type: string
                  vsphere:
                    description: VSphere contains settings specific to the VSphere
                      infrastructure provider.
                    type: object
                type: object
            type: object
          status:
            description: status holds observed values from the cluster. They may not
              be overridden.
            properties:
              apiServerInternalURI:
                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.
                type: string
              apiServerURL:
                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.
                type: string
              controlPlaneTopology:
                default: HighlyAvailable
                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.
                enum:
                - HighlyAvailable
                - SingleReplica
                - External
                type: string
              etcdDiscoveryDomain:
                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.'
                type: string
              infrastructureName:
                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.
                type: string
              infrastructureTopology:
                default: HighlyAvailable
                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.'
                enum:
                - HighlyAvailable
                - SingleReplica
                type: string
              platform:
                description: "platform is the underlying infrastructure provider for
                  the cluster. \n Deprecated: Use platformStatus.type instead."
                enum:
                - ""
                - AWS
                - Azure
                - BareMetal
                - GCP
                - Libvirt
                - OpenStack
                - None
                - VSphere
                - oVirt
                - IBMCloud
                - KubeVirt
                - EquinixMetal
                - PowerVS
                - AlibabaCloud
                - Nutanix
                type: string
              platformStatus:
                description: platformStatus holds status information specific to the
                  underlying infrastructure provider.
                properties:
                  alibabaCloud:
                    description: AlibabaCloud contains settings specific to the Alibaba
                      Cloud infrastructure provider.
                    properties:
                      region:
                        description: region specifies the region for Alibaba Cloud
                          resources created for the cluster.
                        pattern: ^[0-9A-Za-z-]+$
                        type: string
                      resourceGroupID:
                        description: resourceGroupID is the ID of the resource group
                          for the cluster.
                        pattern: ^(rg-[0-9A-Za-z]+)?$
                        type: string
                      resourceTags:
                        description: resourceTags is a list of additional tags to
                          apply to Alibaba Cloud resources created for the cluster.
                        items:
                          description: AlibabaCloudResourceTag is the set of tags
                            to add to apply to resources.
                          properties:
                            key:
                              description: key is the key of the tag.
                              maxLength: 128
                              minLength: 1
                              type: string
                            value:
                              description: value is the value of the tag.
                              maxLength: 128
                              minLength: 1
                              type: string
                          required:
                          - key
                          - value
                          type: object
                        maxItems: 20
                        type: array
                        x-kubernetes-list-map-keys:
                        - key
                        x-kubernetes-list-type: map
                    required:
                    - region
                    type: object
                  aws:
                    description: AWS contains settings specific to the Amazon Web
                      Services infrastructure provider.
                    properties:
                      region:
                        description: region holds the default AWS region for new AWS
                          resources created by the cluster.
                        type: string
                      resourceTags:
                        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.
                        items:
                          description: AWSResourceTag is a tag to apply to AWS resources
                            created for the cluster.
                          properties:
                            key:
                              description: key is the key of the tag
                              maxLength: 128
                              minLength: 1
                              pattern: ^[0-9A-Za-z_.:/=+-@]+$
                              type: string
                            value:
                              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.
                              maxLength: 256
                              minLength: 1
                              pattern: ^[0-9A-Za-z_.:/=+-@]+$
                              type: string
                          required:
                          - key
                          - value
                          type: object
                        maxItems: 25
                        type: array
                      serviceEndpoints:
                        description: ServiceEndpoints list contains custom endpoints
                          which will override default service endpoint of AWS Services.
                          There must be only one ServiceEndpoint for a service.
                        items:
                          description: AWSServiceEndpoint store the configuration
                            of a custom url to override existing defaults of AWS Services.
                          properties:
                            name:
                              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.
                              pattern: ^[a-z0-9-]+$
                              type: string
                            url:
                              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.
                              pattern: ^https://
                              type: string
                          type: object
                        type: array
                    type: object
                  azure:
                    description: Azure contains settings specific to the Azure infrastructure
                      provider.
                    properties:
                      armEndpoint:
                        description: armEndpoint specifies a URL to use for resource
                          management in non-soverign clouds such as Azure Stack.
                        type: string
                      cloudName:
                        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`.
                        enum:
                        - ""
                        - AzurePublicCloud
                        - AzureUSGovernmentCloud
                        - AzureChinaCloud
                        - AzureGermanCloud
                        - AzureStackCloud
                        type: string
                      networkResourceGroupName:
                        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.
                        type: string
                      resourceGroupName:
                        description: resourceGroupName is the Resource Group for new
                          Azure resources created for the cluster.
                        type: string
                    type: object
                  baremetal:
                    description: BareMetal contains settings specific to the BareMetal
                      platform.
                    properties:
                      apiServerInternalIP:
                        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."
                        type: string
                      apiServerInternalIPs:
                        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.
                        format: ip
                        items:
                          type: string
                        maxItems: 2
                        type: array
                      ingressIP:
                        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."
                        type: string
                      ingressIPs:
                        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.
                        format: ip
                        items:
                          type: string
                        maxItems: 2
                        type: array
                      nodeDNSIP:
                        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.
                        type: string
                    type: object
                  equinixMetal:
                    description: EquinixMetal contains settings specific to the Equinix
                      Metal infrastructure provider.
                    properties:
                      apiServerInternalIP:
                        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.
                        type: string
                      ingressIP:
                        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.
                        type: string
                    type: object
                  gcp:
                    description: GCP contains settings specific to the Google Cloud
                      Platform infrastructure provider.
                    properties:
                      projectID:
                        description: resourceGroupName is the Project ID for new GCP
                          resources created for the cluster.
                        type: string
                      region:
                        description: region holds the region for new GCP resources
                          created for the cluster.
                        type: string
                    type: object
                  ibmcloud:
                    description: IBMCloud contains settings specific to the IBMCloud
                      infrastructure provider.
                    properties:
                      cisInstanceCRN:
                        description: CISInstanceCRN is the CRN of the Cloud Internet
                          Services instance managing the DNS zone for the cluster's
                          base domain
                        type: string
                      dnsInstanceCRN:
                        description: DNSInstanceCRN is the CRN of the DNS Services
                          instance managing the DNS zone for the cluster's base domain
                        type: string
                      location:
                        description: Location is where the cluster has been deployed
                        type: string
                      providerType:
                        description: ProviderType indicates the type of cluster that
                          was created
                        type: string
                      resourceGroupName:
                        description: ResourceGroupName is the Resource Group for new
                          IBMCloud resources created for the cluster.
                        type: string
                    type: object
                  kubevirt:
                    description: Kubevirt contains settings specific to the kubevirt
                      infrastructure provider.
                    properties:
                      apiServerInternalIP:
                        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.
                        type: string
                      ingressIP:
                        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.
                        type: string
                    type: object
                  nutanix:
                    description: Nutanix contains settings specific to the Nutanix
                      infrastructure provider.
                    properties:
                      apiServerInternalIP:
                        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."
                        type: string
                      apiServerInternalIPs:
                        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.
                        format: ip
                        items:
                          type: string
                        maxItems: 2
                        type: array
                      ingressIP:
                        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."
                        type: string
                      ingressIPs:
                        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.
                        format: ip
                        items:
                          type: string
                        maxItems: 2
                        type: array
                    type: object
                  openstack:
                    description: OpenStack contains settings specific to the OpenStack
                      infrastructure provider.
                    properties:
                      apiServerInternalIP:
                        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."
                        type: string
                      apiServerInternalIPs:
                        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.
                        format: ip
                        items:
                          type: string
                        maxItems: 2
                        type: array
                      cloudName:
                        description: cloudName is the name of the desired OpenStack
                          cloud in the client configuration file (`clouds.yaml`).
                        type: string
                      ingressIP:
                        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."
                        type: string
                      ingressIPs:
                        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.
                        format: ip
                        items:
                          type: string
                        maxItems: 2
                        type: array
                      nodeDNSIP:
                        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.
                        type: string
                    type: object
                  ovirt:
                    description: Ovirt contains settings specific to the oVirt infrastructure
                      provider.
                    properties:
                      apiServerInternalIP:
                        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."
                        type: string
                      apiServerInternalIPs:
                        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.
                        format: ip
                        items:
                          type: string
                        maxItems: 2
                        type: array
                      ingressIP:
                        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."
                        type: string
                      ingressIPs:
                        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.
                        format: ip
                        items:
                          type: string
                        maxItems: 2
                        type: array
                      nodeDNSIP:
                        description: 'deprecated: as of 4.6, this field is no longer
                          set or honored.  It will be removed in a future release.'
                        type: string
                    type: object
                  powervs:
                    description: PowerVS contains settings specific to the Power Systems
                      Virtual Servers infrastructure provider.
                    properties:
                      cisInstanceCRN:
                        description: CISInstanceCRN is the CRN of the Cloud Internet
                          Services instance managing the DNS zone for the cluster's
                          base domain
                        type: string
                      dnsInstanceCRN:
                        description: DNSInstanceCRN is the CRN of the DNS Services
                          instance managing the DNS zone for the cluster's base domain
                        type: string
                      region:
                        description: region holds the default Power VS region for
                          new Power VS resources created by the cluster.
                        type: string
                      serviceEndpoints:
                        description: serviceEndpoints is a list of custom endpoints
                          which will override the default service endpoints of a Power
                          VS service.
                        items:
                          description: PowervsServiceEndpoint stores the configuration
                            of a custom url to override existing defaults of PowerVS
                            Services.
                          properties:
                            name:
                              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
                              pattern: ^[a-z0-9-]+$
                              type: string
                            url:
                              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.
                              format: uri
                              pattern: ^https://
                              type: string
                          required:
                          - name
                          - url
                          type: object
                        type: array
                      zone:
                        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'
                        type: string
                    type: object
                  type:
                    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."
                    enum:
                    - ""
                    - AWS
                    - Azure
                    - BareMetal
                    - GCP
                    - Libvirt
                    - OpenStack
                    - None
                    - VSphere
                    - oVirt
                    - IBMCloud
                    - KubeVirt
                    - EquinixMetal
                    - PowerVS
                    - AlibabaCloud
                    - Nutanix
                    type: string
                  vsphere:
                    description: VSphere contains settings specific to the VSphere
                      infrastructure provider.
                    properties:
                      apiServerInternalIP:
                        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."
                        type: string
                      apiServerInternalIPs:
                        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.
                        format: ip
                        items:
                          type: string
                        maxItems: 2
                        type: array
                      ingressIP:
                        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."
                        type: string
                      ingressIPs:
                        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.
                        format: ip
                        items:
                          type: string
                        maxItems: 2
                        type: array
                      nodeDNSIP:
                        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.
                        type: string
                    type: object
                type: object
            type: object
        required:
        - spec
        type: object
    served: true
    storage: true
    subresources:
      status: {}
