apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  creationTimestamp: null
  labels:
    controller-tools.k8s.io: "1.0"
  name: azureclusterproviderspecs.azureprovider.k8s.io
spec:
  group: azureprovider.k8s.io
  names:
    kind: AzureClusterProviderSpec
    plural: azureclusterproviderspecs
  scope: Namespaced
  validation:
    openAPIV3Schema:
      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/api-conventions.md#resources'
          type: string
        caKeyPair:
          description: CAKeyPair is the key pair for CA certs.
          properties:
            cert:
              description: base64 encoded cert and key
              format: byte
              type: string
            key:
              format: byte
              type: string
          required:
          - cert
          - key
          type: object
        clusterConfiguration:
          description: ClusterConfiguration holds the cluster-wide information used
            during a kubeadm init call.
          properties:
            apiServer:
              description: APIServer contains extra settings for the API server control
                plane component
              properties:
                certSANs:
                  description: CertSANs sets extra Subject Alternative Names for the
                    API Server signing cert.
                  items:
                    type: string
                  type: array
                extraArgs:
                  description: 'ExtraArgs is an extra set of flags to pass to the
                    control plane component. TODO: This is temporary and ideally we
                    would like to switch all components to use ComponentConfig + ConfigMaps.'
                  type: object
                extraVolumes:
                  description: ExtraVolumes is an extra set of host volumes, mounted
                    to the control plane component.
                  items:
                    properties:
                      hostPath:
                        description: HostPath is the path in the host that will be
                          mounted inside the pod.
                        type: string
                      mountPath:
                        description: MountPath is the path inside the pod where hostPath
                          will be mounted.
                        type: string
                      name:
                        description: Name of the volume inside the pod template.
                        type: string
                      pathType:
                        description: PathType is the type of the HostPath.
                        type: string
                      readOnly:
                        description: ReadOnly controls write access to the volume
                        type: boolean
                    required:
                    - name
                    - hostPath
                    - mountPath
                    type: object
                  type: array
                timeoutForControlPlane:
                  description: TimeoutForControlPlane controls the timeout that we
                    use for API server to appear
                  type: object
              type: object
            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/api-conventions.md#resources'
              type: string
            certificatesDir:
              description: CertificatesDir specifies where to store or look for all
                required certificates.
              type: string
            clusterName:
              description: The cluster name
              type: string
            controlPlaneEndpoint:
              description: 'ControlPlaneEndpoint sets a stable IP address or DNS name
                for the control plane; it can be a valid IP address or a RFC-1123
                DNS subdomain, both with optional TCP port. In case the ControlPlaneEndpoint
                is not specified, the AdvertiseAddress + BindPort are used; in case
                the ControlPlaneEndpoint is specified but without a TCP port, the
                BindPort is used. Possible usages are: e.g. In a cluster with more
                than one control plane instances, this field should be assigned the
                address of the external load balancer in front of the control plane
                instances. e.g.  in environments with enforced node recycling, the
                ControlPlaneEndpoint could be used for assigning a stable DNS to the
                control plane.'
              type: string
            controllerManager:
              description: ControllerManager contains extra settings for the controller
                manager control plane component
              properties:
                extraArgs:
                  description: 'ExtraArgs is an extra set of flags to pass to the
                    control plane component. TODO: This is temporary and ideally we
                    would like to switch all components to use ComponentConfig + ConfigMaps.'
                  type: object
                extraVolumes:
                  description: ExtraVolumes is an extra set of host volumes, mounted
                    to the control plane component.
                  items:
                    properties:
                      hostPath:
                        description: HostPath is the path in the host that will be
                          mounted inside the pod.
                        type: string
                      mountPath:
                        description: MountPath is the path inside the pod where hostPath
                          will be mounted.
                        type: string
                      name:
                        description: Name of the volume inside the pod template.
                        type: string
                      pathType:
                        description: PathType is the type of the HostPath.
                        type: string
                      readOnly:
                        description: ReadOnly controls write access to the volume
                        type: boolean
                    required:
                    - name
                    - hostPath
                    - mountPath
                    type: object
                  type: array
              type: object
            dns:
              description: DNS defines the options for the DNS add-on installed in
                the cluster.
              properties:
                imageRepository:
                  description: ImageRepository sets the container registry to pull
                    images from. if not set, the ImageRepository defined in ClusterConfiguration
                    will be used instead.
                  type: string
                imageTag:
                  description: ImageTag allows to specify a tag for the image. In
                    case this value is set, kubeadm does not change automatically
                    the version of the above components during upgrades.
                  type: string
                type:
                  description: Type defines the DNS add-on to be used
                  type: string
              required:
              - type
              type: object
            etcd:
              description: Etcd holds configuration for etcd.
              properties:
                external:
                  description: External describes how to connect to an external etcd
                    cluster Local and External are mutually exclusive
                  properties:
                    caFile:
                      description: CAFile is an SSL Certificate Authority file used
                        to secure etcd communication. Required if using a TLS connection.
                      type: string
                    certFile:
                      description: CertFile is an SSL certification file used to secure
                        etcd communication. Required if using a TLS connection.
                      type: string
                    endpoints:
                      description: Endpoints of etcd members. Required for ExternalEtcd.
                      items:
                        type: string
                      type: array
                    keyFile:
                      description: KeyFile is an SSL key file used to secure etcd
                        communication. Required if using a TLS connection.
                      type: string
                  required:
                  - endpoints
                  - caFile
                  - certFile
                  - keyFile
                  type: object
                local:
                  description: Local provides configuration knobs for configuring
                    the local etcd instance Local and External are mutually exclusive
                  properties:
                    dataDir:
                      description: DataDir is the directory etcd will place its data.
                        Defaults to "/var/lib/etcd".
                      type: string
                    extraArgs:
                      description: ExtraArgs are extra arguments provided to the etcd
                        binary when run inside a static pod.
                      type: object
                    imageRepository:
                      description: ImageRepository sets the container registry to
                        pull images from. if not set, the ImageRepository defined
                        in ClusterConfiguration will be used instead.
                      type: string
                    imageTag:
                      description: ImageTag allows to specify a tag for the image.
                        In case this value is set, kubeadm does not change automatically
                        the version of the above components during upgrades.
                      type: string
                    peerCertSANs:
                      description: PeerCertSANs sets extra Subject Alternative Names
                        for the etcd peer signing cert.
                      items:
                        type: string
                      type: array
                    serverCertSANs:
                      description: ServerCertSANs sets extra Subject Alternative Names
                        for the etcd server signing cert.
                      items:
                        type: string
                      type: array
                  required:
                  - dataDir
                  type: object
              type: object
            featureGates:
              description: FeatureGates enabled by the user.
              type: object
            imageRepository:
              description: ImageRepository sets the container registry to pull images
                from. If empty, `k8s.gcr.io` will be used by default; in case of kubernetes
                version is a CI build (kubernetes version starts with `ci/` or `ci-cross/`)
                `gcr.io/kubernetes-ci-images` will be used as a default for control
                plane components and for kube-proxy, while `k8s.gcr.io` will be used
                for all the other images.
              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/api-conventions.md#types-kinds'
              type: string
            kubernetesVersion:
              description: KubernetesVersion is the target version of the control
                plane.
              type: string
            networking:
              description: Networking holds configuration for the networking topology
                of the cluster.
              properties:
                dnsDomain:
                  description: DNSDomain is the dns domain used by k8s services. Defaults
                    to "cluster.local".
                  type: string
                podSubnet:
                  description: PodSubnet is the subnet used by pods.
                  type: string
                serviceSubnet:
                  description: ServiceSubnet is the subnet used by k8s services. Defaults
                    to "10.96.0.0/12".
                  type: string
              required:
              - serviceSubnet
              - podSubnet
              - dnsDomain
              type: object
            scheduler:
              description: Scheduler contains extra settings for the scheduler control
                plane component
              properties:
                extraArgs:
                  description: 'ExtraArgs is an extra set of flags to pass to the
                    control plane component. TODO: This is temporary and ideally we
                    would like to switch all components to use ComponentConfig + ConfigMaps.'
                  type: object
                extraVolumes:
                  description: ExtraVolumes is an extra set of host volumes, mounted
                    to the control plane component.
                  items:
                    properties:
                      hostPath:
                        description: HostPath is the path in the host that will be
                          mounted inside the pod.
                        type: string
                      mountPath:
                        description: MountPath is the path inside the pod where hostPath
                          will be mounted.
                        type: string
                      name:
                        description: Name of the volume inside the pod template.
                        type: string
                      pathType:
                        description: PathType is the type of the HostPath.
                        type: string
                      readOnly:
                        description: ReadOnly controls write access to the volume
                        type: boolean
                    required:
                    - name
                    - hostPath
                    - mountPath
                    type: object
                  type: array
              type: object
            useHyperKubeImage:
              description: UseHyperKubeImage controls if hyperkube should be used
                for Kubernetes components instead of their respective separate images
              type: boolean
          required:
          - etcd
          - networking
          - kubernetesVersion
          - controlPlaneEndpoint
          - dns
          - certificatesDir
          - imageRepository
          type: object
        etcdCAKeyPair:
          description: EtcdCAKeyPair is the key pair for etcd.
          properties:
            cert:
              description: base64 encoded cert and key
              format: byte
              type: string
            key:
              format: byte
              type: string
          required:
          - cert
          - key
          type: object
        frontProxyCAKeyPair:
          description: FrontProxyCAKeyPair is the key pair for the front proxy.
          properties:
            cert:
              description: base64 encoded cert and key
              format: byte
              type: string
            key:
              format: byte
              type: string
          required:
          - cert
          - key
          type: object
        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/api-conventions.md#types-kinds'
          type: string
        location:
          type: string
        metadata:
          type: object
        networkSpec:
          description: NetworkSpec encapsulates all things related to Azure network.
          properties:
            subnets:
              description: Subnets configuration.
              items:
                properties:
                  cidrBlock:
                    description: CidrBlock is the CIDR block to be used when the provider
                      creates a managed Vnet.
                    type: string
                  id:
                    description: ID defines a unique identifier to reference this
                      resource.
                    type: string
                  name:
                    description: Name defines a name for the subnet resource.
                    type: string
                  securityGroup:
                    description: SecurityGroup defines the NSG (network security group)
                      that should be attached to this subnet.
                    properties:
                      id:
                        type: string
                      ingressRule:
                        items:
                          properties:
                            description:
                              type: string
                            destination:
                              description: Destination - The destination address prefix.
                                CIDR or destination IP range. Asterix '*' can also
                                be used to match all source IPs. Default tags such
                                as 'VirtualNetwork', 'AzureLoadBalancer' and 'Internet'
                                can also be used.
                              type: string
                            destinationPorts:
                              description: DestinationPorts - The destination port
                                or range. Integer or range between 0 and 65535. Asterix
                                '*' can also be used to match all ports.
                              type: string
                            protocol:
                              type: string
                            source:
                              description: Source - The CIDR or source IP range. Asterix
                                '*' can also be used to match all source IPs. Default
                                tags such as 'VirtualNetwork', 'AzureLoadBalancer'
                                and 'Internet' can also be used. If this is an ingress
                                rule, specifies where network traffic originates from.
                              type: string
                            sourcePorts:
                              description: SourcePorts - The source port or range.
                                Integer or range between 0 and 65535. Asterix '*'
                                can also be used to match all ports.
                              type: string
                          required:
                          - description
                          - protocol
                          type: object
                        type: array
                      name:
                        type: string
                    required:
                    - id
                    - name
                    - ingressRule
                    type: object
                  vnetId:
                    description: VnetID defines the ID of the virtual network this
                      subnet should be built in.
                    type: string
                required:
                - name
                - vnetId
                - securityGroup
                type: object
              type: array
            vpc:
              description: Vnet configuration.
              properties:
                cidrBlock:
                  description: CidrBlock is the CIDR block to be used when the provider
                    creates a managed virtual network.
                  type: string
                id:
                  description: ID is the identifier of the virtual network this provider
                    should use to create resources.
                  type: string
                name:
                  description: Name defines a name for the virtual network resource.
                  type: string
              required:
              - name
              type: object
          type: object
        resourceGroup:
          type: string
        saKeyPair:
          description: SAKeyPair is the service account key pair.
          properties:
            cert:
              description: base64 encoded cert and key
              format: byte
              type: string
            key:
              format: byte
              type: string
          required:
          - cert
          - key
          type: object
      required:
      - resourceGroup
      - location
  version: v1alpha1
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
