---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.2-0.20250203100058-d1f73b5ea552
  labels:
    cluster.x-k8s.io/v1beta1: v1beta1
  name: kkmachinetemplates.infrastructure.cluster.x-k8s.io
spec:
  group: infrastructure.cluster.x-k8s.io
  names:
    categories:
    - cluster-api
    kind: KKMachineTemplate
    listKind: KKMachineTemplateList
    plural: kkmachinetemplates
    shortNames:
    - kkmt
    singular: kkmachinetemplate
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: Time duration since creation of KKMachineTemplate
      jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: KKMachineTemplate is the Schema for the kkmachinetemplates API
        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: KKMachineTemplateSpec defines the desired state of KKMachineTemplate.
            properties:
              template:
                description: KKMachineTemplateResource describes the data needed to
                  create a KKMachine from a template.
                properties:
                  metadata:
                    description: |-
                      Standard object's metadata.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
                    properties:
                      annotations:
                        additionalProperties:
                          type: string
                        description: |-
                          annotations is an unstructured key value map stored with a resource that may be
                          set by external tools to store and retrieve arbitrary metadata. They are not
                          queryable and should be preserved when modifying objects.
                          More info: http://kubernetes.io/docs/user-guide/annotations
                        type: object
                      labels:
                        additionalProperties:
                          type: string
                        description: |-
                          Map of string keys and values that can be used to organize and categorize
                          (scope and select) objects. May match selectors of replication controllers
                          and services.
                          More info: http://kubernetes.io/docs/user-guide/labels
                        type: object
                    type: object
                  spec:
                    description: Spec is the specification of the desired behavior
                      of the machine.
                    properties:
                      config:
                        description: Config for machine. contains cluster version,
                          binary version, etc.
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                      failureDomain:
                        description: |-
                          failureDomain is the failure domain the machine will be created in.
                          Must match a key in the FailureDomains map stored on the cluster object.
                        type: string
                      providerID:
                        description: |-
                          providerID is the identification ID of the machine provided by the provider.
                          This field must match the provider ID as seen on the node object corresponding to this machine.
                          This field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler
                          with cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out
                          machines at provider which could not get registered as Kubernetes nodes. With cluster-api as a
                          generic out-of-tree provider for autoscaler, this field is required by autoscaler to be
                          able to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver
                          and then a comparison is done to find out unregistered machines and are marked for delete.
                          This field will be set by the actuators and consumed by higher level entities like autoscaler that will
                          be interfacing with cluster-api as generic provider.
                        type: string
                      roles:
                        description: |-
                          Roles defines the roles assigned to the Kubernetes cluster node, such as "worker" or "control-plane".
                          A KKMachine created by ControlPlane will automatically have the "control-plane" role.
                          A KKMachine created by MachineDeployment will automatically have the "worker" role.
                          Additional custom roles can also be specified in this field as needed.
                        items:
                          type: string
                        type: array
                      version:
                        description: |-
                          version defines the desired Kubernetes version.
                          This field is meant to be optionally used by bootstrap providers.
                        type: string
                    type: object
                required:
                - spec
                type: object
            required:
            - template
            type: object
        type: object
    served: true
    storage: true
    subresources: {}
