API Reference

Packages

addons.cluster.x-k8s.io/v1beta2

Package v1beta2 contains API Schema definitions for the addons v1beta2 API group.

Resource Types

ClusterResourceSet

ClusterResourceSet is the Schema for the clusterresourcesets API. For advanced use cases an add-on provider should be used instead.

Appears in:

FieldDescriptionDefaultValidation
apiVersion stringaddons.cluster.x-k8s.io/v1beta2
kind stringClusterResourceSet
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.MinProperties: 1
Optional: {}
spec ClusterResourceSetSpecspec is the desired state of ClusterResourceSet.Required: {}
status ClusterResourceSetStatusstatus is the observed state of ClusterResourceSet.MinProperties: 1
Optional: {}

ClusterResourceSetBinding

ClusterResourceSetBinding lists all matching ClusterResourceSets with the cluster it belongs to.

Appears in:

FieldDescriptionDefaultValidation
apiVersion stringaddons.cluster.x-k8s.io/v1beta2
kind stringClusterResourceSetBinding
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.MinProperties: 1
Optional: {}
spec ClusterResourceSetBindingSpecspec is the desired state of ClusterResourceSetBinding.Required: {}

ClusterResourceSetBindingList

ClusterResourceSetBindingList contains a list of ClusterResourceSetBinding.

FieldDescriptionDefaultValidation
apiVersion stringaddons.cluster.x-k8s.io/v1beta2
kind stringClusterResourceSetBindingList
metadata ListMetaRefer to Kubernetes API documentation for fields of metadata.Optional: {}
items ClusterResourceSetBinding arrayitems is the list of ClusterResourceSetBindings.

ClusterResourceSetBindingSpec

ClusterResourceSetBindingSpec defines the desired state of ClusterResourceSetBinding.

Appears in:

FieldDescriptionDefaultValidation
bindings ResourceSetBinding arraybindings is a list of ClusterResourceSets and their resources.MaxItems: 100
Optional: {}
clusterName stringclusterName is the name of the Cluster this binding applies to.MaxLength: 63
MinLength: 1
Required: {}

ClusterResourceSetDeprecatedStatus

ClusterResourceSetDeprecatedStatus groups all the status fields that are deprecated and will be removed in a future version. See https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more context.

Appears in:

FieldDescriptionDefaultValidation
v1beta1 ClusterResourceSetV1Beta1DeprecatedStatusv1beta1 groups all the status fields that are deprecated and will be removed when support for v1beta1 will be dropped.Optional: {}

ClusterResourceSetList

ClusterResourceSetList contains a list of ClusterResourceSet.

FieldDescriptionDefaultValidation
apiVersion stringaddons.cluster.x-k8s.io/v1beta2
kind stringClusterResourceSetList
metadata ListMetaRefer to Kubernetes API documentation for fields of metadata.Optional: {}
items ClusterResourceSet arrayitems is the list of ClusterResourceSets.

ClusterResourceSetSpec

ClusterResourceSetSpec defines the desired state of ClusterResourceSet.

Appears in:

FieldDescriptionDefaultValidation
clusterSelector LabelSelectorclusterSelector is the label selector for Clusters. The Clusters that are
selected by this will be the ones affected by this ClusterResourceSet.
It must match the Cluster labels. This field is immutable.
Label selector cannot be empty.
Required: {}
resources ResourceRef arrayresources is a list of Secrets/ConfigMaps where each contains 1 or more resources to be applied to remote clusters.MaxItems: 100
MinItems: 1
Required: {}
strategy stringstrategy is the strategy to be used during applying resources. Defaults to ApplyOnce. This field is immutable.Enum: [ApplyOnce Reconcile]
Optional: {}

ClusterResourceSetStatus

ClusterResourceSetStatus defines the observed state of ClusterResourceSet.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
conditions Condition arrayconditions represents the observations of a ClusterResourceSet’s current state.
Known condition types are ResourcesApplied.
MaxItems: 32
Optional: {}
observedGeneration integerobservedGeneration reflects the generation of the most recently observed ClusterResourceSet.Minimum: 1
Optional: {}
deprecated ClusterResourceSetDeprecatedStatusdeprecated groups all the status fields that are deprecated and will be removed when all the nested field are removed.Optional: {}

ClusterResourceSetV1Beta1DeprecatedStatus

ClusterResourceSetV1Beta1DeprecatedStatus groups all the status fields that are deprecated and will be removed when support for v1beta1 will be dropped. See https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more context.

Appears in:

FieldDescriptionDefaultValidation
conditions Conditionsconditions defines current state of the ClusterResourceSet.
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
Optional: {}

ResourceBinding

ResourceBinding shows the status of a resource that belongs to a ClusterResourceSet matched by the owner cluster of the ClusterResourceSetBinding object.

Appears in:

FieldDescriptionDefaultValidation
name stringname of the resource that is in the same namespace with ClusterResourceSet object.MaxLength: 253
MinLength: 1
Required: {}
kind stringkind of the resource. Supported kinds are: Secrets and ConfigMaps.Enum: [Secret ConfigMap]
Required: {}
hash stringhash is the hash of a resource’s data. This can be used to decide if a resource is changed.
For “ApplyOnce” ClusterResourceSet.spec.strategy, this is no-op as that strategy does not act on change.
MaxLength: 256
MinLength: 1
Optional: {}
applied booleanapplied is to track if a resource is applied to the cluster or not.Required: {}

ResourceRef

ResourceRef specifies a resource.

Appears in:

FieldDescriptionDefaultValidation
name stringname of the resource that is in the same namespace with ClusterResourceSet object.MaxLength: 253
MinLength: 1
Required: {}
kind stringkind of the resource. Supported kinds are: Secrets and ConfigMaps.Enum: [Secret ConfigMap]
Required: {}

ResourceSetBinding

ResourceSetBinding keeps info on all of the resources in a ClusterResourceSet.

Appears in:

FieldDescriptionDefaultValidation
clusterResourceSetName stringclusterResourceSetName is the name of the ClusterResourceSet that is applied to the owner cluster of the binding.MaxLength: 253
MinLength: 1
Required: {}
resources ResourceBinding arrayresources is a list of resources that the ClusterResourceSet has.MaxItems: 100
Optional: {}

bootstrap.cluster.x-k8s.io/v1beta2

Package v1beta2 contains API Schema definitions for the kubeadm v1beta2 API group.

Resource Types

APIEndpoint

APIEndpoint struct contains elements of API server instance deployed on a node.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
advertiseAddress stringadvertiseAddress sets the IP address for the API server to advertise.MaxLength: 39
MinLength: 1
Optional: {}
bindPort integerbindPort sets the secure port for the API Server to bind to.
Defaults to 6443.
Minimum: 1
Optional: {}

APIServer

APIServer holds settings necessary for API server deployments in the cluster.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
extraArgs Arg arrayextraArgs is a list of args to pass to the control plane component.
The arg name must match the command line flag name except without leading dash(es).
Extra arguments will override existing default arguments set by kubeadm.
MaxItems: 100
MinItems: 1
Optional: {}
extraVolumes HostPathMount arrayextraVolumes is an extra set of host volumes, mounted to the control plane component.MaxItems: 100
MinItems: 1
Optional: {}
extraEnvs EnvVarextraEnvs is an extra set of environment variables to pass to the control plane component.
Environment variables passed using ExtraEnvs will override any existing environment variables, or *_proxy environment variables that kubeadm adds by default.
This option takes effect only on Kubernetes >=1.31.0.
MaxItems: 100
MinItems: 1
Optional: {}
certSANs string arraycertSANs sets extra Subject Alternative Names for the API Server signing cert.MaxItems: 100
MinItems: 1
items:MaxLength: 253
items:MinLength: 1
Optional: {}

Arg

Arg represents an argument with a name and a value.

Appears in:

FieldDescriptionDefaultValidation
name stringname is the Name of the extraArg.MaxLength: 256
MinLength: 1
Required: {}
value stringvalue is the Value of the extraArg.MaxLength: 1024
MinLength: 0
Required: {}

BootstrapToken

BootstrapToken describes one bootstrap token, stored as a Secret in the cluster.

Appears in:

FieldDescriptionDefaultValidation
token BootstrapTokenStringtoken is used for establishing bidirectional trust between nodes and control-planes.
Used for joining nodes in the cluster.
MaxLength: 23
MinLength: 1
Type: string
Required: {}
description stringdescription sets a human-friendly message why this token exists and what it’s used
for, so other administrators can know its purpose.
MaxLength: 512
MinLength: 1
Optional: {}
ttlSeconds integerttlSeconds defines the time to live for this token. Defaults to 24h.
Expires and ttlSeconds are mutually exclusive.
Minimum: 0
Optional: {}
usages string arrayusages describes the ways in which this token can be used. Can by default be used
for establishing bidirectional trust, but that can be changed here.
MaxItems: 100
MinItems: 1
items:MaxLength: 256
items:MinLength: 1
Optional: {}
groups string arraygroups specifies the extra groups that this token will authenticate as when/if
used for authentication
MaxItems: 100
MinItems: 1
items:MaxLength: 256
items:MinLength: 1
Optional: {}

BootstrapTokenDiscovery

BootstrapTokenDiscovery is used to set the options for bootstrap token based discovery.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
token stringtoken is a token used to validate cluster information
fetched from the control-plane.
MaxLength: 512
MinLength: 1
Optional: {}
apiServerEndpoint stringapiServerEndpoint is an IP or domain name to the API server from which info will be fetched.MaxLength: 512
MinLength: 1
Optional: {}
caCertHashes string arraycaCertHashes specifies a set of public key pins to verify
when token-based discovery is used. The root CA found during discovery
must match one of these values. Specifying an empty set disables root CA
pinning, which can be unsafe. Each hash is specified as “:“,
where the only currently supported type is “sha256”. This is a hex-encoded
SHA-256 hash of the Subject Public Key Info (SPKI) object in DER-encoded
ASN.1. These hashes can be calculated using, for example, OpenSSL:
openssl x509 -pubkey -in ca.crt openssl rsa -pubin -outform der 2>&/dev/null | openssl dgst -sha256 -hex
MaxItems: 100
MinItems: 1
items:MaxLength: 512
items:MinLength: 1
Optional: {}
unsafeSkipCAVerification booleanunsafeSkipCAVerification allows token-based discovery
without CA verification via CACertHashes. This can weaken
the security of kubeadm since other nodes can impersonate the control-plane.
Optional: {}

BootstrapTokenString

BootstrapTokenString is a token of the format abcdef.abcdef0123456789 that is used for both validation of the practically of the API server from a joining node’s point of view and as an authentication method for the node in the bootstrap phase of “kubeadm join”. This token is and should be short-lived.

Validation:

  • MaxLength: 23
  • MinLength: 1
  • Type: string

Appears in:

ClusterConfiguration

ClusterConfiguration contains cluster-wide configuration for a kubeadm cluster.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
etcd Etcdetcd holds configuration for etcd.
NB: This value defaults to a Local (stacked) etcd
MinProperties: 1
Optional: {}
controlPlaneEndpoint stringcontrolPlaneEndpoint 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.
NB: This value defaults to the first value in the Cluster object status.apiEndpoints array.
MaxLength: 512
MinLength: 1
Optional: {}
apiServer APIServerapiServer contains extra settings for the API server control plane componentMinProperties: 1
Optional: {}
controllerManager ControllerManagercontrollerManager contains extra settings for the controller manager control plane componentMinProperties: 1
Optional: {}
scheduler Schedulerscheduler contains extra settings for the scheduler control plane componentMinProperties: 1
Optional: {}
dns DNSdns defines the options for the DNS add-on installed in the cluster.MinProperties: 1
Optional: {}
certificatesDir stringcertificatesDir specifies where to store or look for all required certificates.
NB: if not provided, this will default to /etc/kubernetes/pki
MaxLength: 512
MinLength: 1
Optional: {}
imageRepository stringimageRepository sets the container registry to pull images from.
If not set, the default registry of kubeadm will be used (registry.k8s.io).
MaxLength: 512
MinLength: 1
Optional: {}
featureGates object (keys:string, values:boolean)featureGates enabled by the user.Optional: {}
certificateValidityPeriodDays integercertificateValidityPeriodDays specifies the validity period for non-CA certificates generated by kubeadm.
If not specified, kubeadm will use a default of 365 days (1 year).
This field is only supported with Kubernetes v1.31 or above.
Maximum: 1095
Minimum: 1
Optional: {}
caCertificateValidityPeriodDays integercaCertificateValidityPeriodDays specifies the validity period for CA certificates generated by Cluster API.
If not specified, Cluster API will use a default of 3650 days (10 years).
This field cannot be modified.
Maximum: 36500
Minimum: 1
Optional: {}
encryptionAlgorithm EncryptionAlgorithmTypeencryptionAlgorithm holds the type of asymmetric encryption algorithm used for keys and certificates.
Can be one of “RSA-2048”, “RSA-3072”, “RSA-4096”, “ECDSA-P256” or “ECDSA-P384”.
For Kubernetes 1.34 or above, “ECDSA-P384” is supported.
If not specified, Cluster API will use RSA-2048 as default.
When this field is modified every certificate generated afterward will use the new
encryptionAlgorithm. Existing CA certificates and service account keys are not rotated.
This field is only supported with Kubernetes v1.31 or above.
Enum: [ECDSA-P256 ECDSA-P384 RSA-2048 RSA-3072 RSA-4096]
Optional: {}

ContainerLinuxConfig

ContainerLinuxConfig contains CLC-specific configuration.

We use a structured type here to allow adding additional fields, for example ‘version’.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
additionalConfig stringadditionalConfig contains additional configuration to be merged with the Ignition
configuration generated by the bootstrapper controller. More info: https://coreos.github.io/ignition/operator-notes/#config-merging
The data format is documented here: https://kinvolk.io/docs/flatcar-container-linux/latest/provisioning/cl-config/
MaxLength: 32768
MinLength: 1
Optional: {}
strict booleanstrict controls if AdditionalConfig should be strictly parsed. If so, warnings are treated as errors.Optional: {}

ControllerManager

ControllerManager holds settings necessary for controller-manager deployments in the cluster.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
extraArgs Arg arrayextraArgs is a list of args to pass to the control plane component.
The arg name must match the command line flag name except without leading dash(es).
Extra arguments will override existing default arguments set by kubeadm.
MaxItems: 100
MinItems: 1
Optional: {}
extraVolumes HostPathMount arrayextraVolumes is an extra set of host volumes, mounted to the control plane component.MaxItems: 100
MinItems: 1
Optional: {}
extraEnvs EnvVarextraEnvs is an extra set of environment variables to pass to the control plane component.
Environment variables passed using ExtraEnvs will override any existing environment variables, or *_proxy environment variables that kubeadm adds by default.
This option takes effect only on Kubernetes >=1.31.0.
MaxItems: 100
MinItems: 1
Optional: {}

DNS

DNS defines the DNS addon that should be used in the cluster.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
imageRepository stringimageRepository sets the container registry to pull images from.
if not set, the ImageRepository defined in ClusterConfiguration will be used instead.
MaxLength: 512
MinLength: 1
Optional: {}
imageTag stringimageTag 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.
MaxLength: 256
MinLength: 1
Optional: {}

Discovery

Discovery specifies the options for the kubelet to use during the TLS Bootstrap process.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
bootstrapToken BootstrapTokenDiscoverybootstrapToken is used to set the options for bootstrap token based discovery
BootstrapToken and File are mutually exclusive
MinProperties: 1
Optional: {}
file FileDiscoveryfile is used to specify a file or URL to a kubeconfig file from which to load cluster information
BootstrapToken and File are mutually exclusive
Optional: {}
tlsBootstrapToken stringtlsBootstrapToken is a token used for TLS bootstrapping.
If .BootstrapToken is set, this field is defaulted to .BootstrapToken.Token, but can be overridden.
If .File is set, this field must be set in case the KubeConfigFile does not contain any other authentication information
MaxLength: 512
MinLength: 1
Optional: {}

DiskSetup

DiskSetup defines input for generated disk_setup and fs_setup in cloud-init.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
partitions Partition arraypartitions specifies the list of the partitions to setup.ExactlyOneOf: [layout diskLayout]
MaxItems: 100
Optional: {}
filesystems Filesystem arrayfilesystems specifies the list of file systems to setup.MaxItems: 100
Optional: {}

Encoding

Underlying type: string

Encoding specifies the cloud-init file encoding.

Validation:

  • Enum: [base64 gzip gzip+base64]

Appears in:

FieldDescription
base64Base64 implies the contents of the file are encoded as base64.
gzipGzip implies the contents of the file are encoded with gzip.
gzip+base64GzipBase64 implies the contents of the file are first base64 encoded and then gzip encoded.

EncryptionAlgorithmType

Underlying type: string

EncryptionAlgorithmType can define an asymmetric encryption algorithm type.

Validation:

  • Enum: [ECDSA-P256 ECDSA-P384 RSA-2048 RSA-3072 RSA-4096]

Appears in:

FieldDescription
ECDSA-P256EncryptionAlgorithmECDSAP256 defines the ECDSA encryption algorithm type with curve P256.
ECDSA-P384EncryptionAlgorithmECDSAP384 defines the ECDSA encryption algorithm type with curve P384.
RSA-2048EncryptionAlgorithmRSA2048 defines the RSA encryption algorithm type with key size 2048 bits.
RSA-3072EncryptionAlgorithmRSA3072 defines the RSA encryption algorithm type with key size 3072 bits.
RSA-4096EncryptionAlgorithmRSA4096 defines the RSA encryption algorithm type with key size 4096 bits.

EnvVar

EnvVar represents an environment variable present in a Container.

Appears in:

FieldDescriptionDefaultValidation
name stringName of the environment variable.
May consist of any printable ASCII characters except ‘=’.
value stringVariable references $(VAR_NAME) are expanded
using the previously defined environment variables in the container and
any service environment variables. If a variable cannot be resolved,
the reference in the input string will be unchanged. Double $$ are reduced
to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.
“$$(VAR_NAME)” will produce the string literal “$(VAR_NAME)”.
Escaped references will never be expanded, regardless of whether the variable
exists or not.
Defaults to “”.
Optional: {}
valueFrom EnvVarSourceSource for the environment variable’s value. Cannot be used if value is not empty.Optional: {}

Etcd

Etcd contains elements describing Etcd configuration.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
local LocalEtcdlocal provides configuration knobs for configuring the local etcd instance
Local and External are mutually exclusive
MinProperties: 1
Optional: {}
external ExternalEtcdexternal describes how to connect to an external etcd cluster
Local and External are mutually exclusive
Optional: {}

ExternalEtcd

ExternalEtcd describes an external etcd cluster. Kubeadm has no knowledge of where certificate files live and they must be supplied.

Appears in:

FieldDescriptionDefaultValidation
endpoints string arrayendpoints of etcd members. Required for ExternalEtcd.MaxItems: 50
MinItems: 1
items:MaxLength: 512
items:MinLength: 1
Required: {}
caFile stringcaFile is an SSL Certificate Authority file used to secure etcd communication.
Required if using a TLS connection.
MaxLength: 512
MinLength: 1
Required: {}
certFile stringcertFile is an SSL certification file used to secure etcd communication.
Required if using a TLS connection.
MaxLength: 512
MinLength: 1
Required: {}
keyFile stringkeyFile is an SSL key file used to secure etcd communication.
Required if using a TLS connection.
MaxLength: 512
MinLength: 1
Required: {}

File

File defines the input for generating write_files in cloud-init.

Appears in:

FieldDescriptionDefaultValidation
path stringpath specifies the full path on disk where to store the file.MaxLength: 512
MinLength: 1
Required: {}
owner stringowner specifies the ownership of the file, e.g. “root:root”.MaxLength: 256
MinLength: 1
Optional: {}
permissions stringpermissions specifies the permissions to assign to the file, e.g. “0640”.MaxLength: 16
MinLength: 1
Optional: {}
encoding Encodingencoding specifies the encoding of the file contents.Enum: [base64 gzip gzip+base64]
Optional: {}
append booleanappend specifies whether to append Content to existing file if Path exists.Optional: {}
content stringcontent is the actual content of the file.MaxLength: 10240
MinLength: 1
Optional: {}
contentFrom FileSourcecontentFrom is a referenced source of content to populate the file.Optional: {}

FileDiscovery

FileDiscovery is used to specify a file or URL to a kubeconfig file from which to load cluster information.

Appears in:

FieldDescriptionDefaultValidation
kubeConfigPath stringkubeConfigPath is used to specify the actual file path or URL to the kubeconfig file from which to load cluster informationMaxLength: 512
MinLength: 1
Required: {}
kubeConfig FileDiscoveryKubeConfigkubeConfig is used (optionally) to generate a KubeConfig based on the KubeadmConfig’s information.
The file is generated at the path specified in KubeConfigPath.
Host address (server field) information is automatically populated based on the Cluster’s ControlPlaneEndpoint.
Certificate Authority (certificate-authority-data field) is gathered from the cluster’s CA secret.
Optional: {}

FileDiscoveryKubeConfig

FileDiscoveryKubeConfig contains elements describing how to generate the kubeconfig for bootstrapping.

Appears in:

FieldDescriptionDefaultValidation
cluster KubeConfigClustercluster contains information about how to communicate with the kubernetes cluster.
By default the following fields are automatically populated:
- Server with the Cluster’s ControlPlaneEndpoint.
- CertificateAuthorityData with the Cluster’s CA certificate.
MinProperties: 1
Optional: {}
user KubeConfigUseruser contains information that describes identity information.
This is used to tell the kubernetes cluster who you are.
MinProperties: 1
Required: {}

FileSource

FileSource is a union of all possible external source types for file data. Only one field may be populated in any given instance. Developers adding new sources of data for target systems should add them here.

Appears in:

FieldDescriptionDefaultValidation
secret SecretFileSourcesecret represents a secret that should populate this file.Required: {}

Filesystem

Filesystem defines the file systems to be created.

Appears in:

FieldDescriptionDefaultValidation
device stringdevice specifies the device nameMaxLength: 256
MinLength: 1
Required: {}
filesystem stringfilesystem specifies the file system type.MaxLength: 128
MinLength: 1
Required: {}
label stringlabel specifies the file system label to be used. If set to None, no label is used.MaxLength: 512
MinLength: 1
Optional: {}
partition stringpartition specifies the partition to use. The valid options are: “auto|any”, “auto”, “any”, “none”, and , where NUM is the actual partition number.MaxLength: 128
MinLength: 1
Optional: {}
overwrite booleanoverwrite defines whether or not to overwrite any existing filesystem.
If true, any pre-existing file system will be destroyed. Use with Caution.
Optional: {}
replaceFS stringreplaceFS is a special directive, used for Microsoft Azure that instructs cloud-init to replace a file system of <FS_TYPE>.
NOTE: unless you define a label, this requires the use of the ‘any’ partition directive.
MaxLength: 128
MinLength: 1
Optional: {}
extraOpts string arrayextraOpts defined extra options to add to the command for creating the file system.MaxItems: 100
items:MaxLength: 256
items:MinLength: 1
Optional: {}

Format

Underlying type: string

Format specifies the output format of the bootstrap data

Validation:

  • Enum: [cloud-config ignition]

Appears in:

FieldDescription
cloud-configCloudConfig make the bootstrap data to be of cloud-config format.
ignitionIgnition make the bootstrap data to be of Ignition format.

HostPathMount

HostPathMount contains elements describing volumes that are mounted from the host.

Appears in:

FieldDescriptionDefaultValidation
name stringname of the volume inside the pod template.MaxLength: 512
MinLength: 1
Required: {}
hostPath stringhostPath is the path in the host that will be mounted inside
the pod.
MaxLength: 512
MinLength: 1
Required: {}
mountPath stringmountPath is the path inside the pod where hostPath will be mounted.MaxLength: 512
MinLength: 1
Required: {}
readOnly booleanreadOnly controls write access to the volumeOptional: {}
pathType HostPathTypepathType is the type of the HostPath.Optional: {}

IgnitionSpec

IgnitionSpec contains Ignition specific configuration.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
containerLinuxConfig ContainerLinuxConfigcontainerLinuxConfig contains CLC specific configuration.MinProperties: 1
Optional: {}

InitConfiguration

InitConfiguration contains a list of elements that is specific “kubeadm init”-only runtime information.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
bootstrapTokens BootstrapToken arraybootstrapTokens is respected at kubeadm init time and describes a set of Bootstrap Tokens to create.
This information IS NOT uploaded to the kubeadm cluster configmap, partly because of its sensitive nature
MaxItems: 100
MinItems: 1
Optional: {}
nodeRegistration NodeRegistrationOptionsnodeRegistration holds fields that relate to registering the new control-plane node to the cluster.
When used in the context of control plane nodes, NodeRegistration should remain consistent
across both InitConfiguration and JoinConfiguration
MinProperties: 1
Optional: {}
localAPIEndpoint APIEndpointlocalAPIEndpoint represents the endpoint of the API server instance that’s deployed on this control plane node
In HA setups, this differs from ClusterConfiguration.ControlPlaneEndpoint in the sense that ControlPlaneEndpoint
is the global endpoint for the cluster, which then loadbalances the requests to each individual API server. This
configuration object lets you customize what IP/DNS name and port the local API server advertises it’s accessible
on. By default, kubeadm tries to auto-detect the IP of the default interface and use that, but in case that process
fails you may set the desired value here.
MinProperties: 1
Optional: {}
skipPhases string arrayskipPhases is a list of phases to skip during command execution.
The list of phases can be obtained with the “kubeadm init --help” command.
This option takes effect only on Kubernetes >=1.22.0.
MaxItems: 50
MinItems: 1
items:MaxLength: 256
items:MinLength: 1
Optional: {}
patches Patchespatches contains options related to applying patches to components deployed by kubeadm during
“kubeadm init”. The minimum kubernetes version needed to support Patches is v1.22
MinProperties: 1
Optional: {}
timeouts Timeoutstimeouts holds various timeouts that apply to kubeadm commands.MinProperties: 1
Optional: {}

JoinConfiguration

JoinConfiguration contains elements describing a particular node.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
nodeRegistration NodeRegistrationOptionsnodeRegistration holds fields that relate to registering the new control-plane node to the cluster.
When used in the context of control plane nodes, NodeRegistration should remain consistent
across both InitConfiguration and JoinConfiguration
MinProperties: 1
Optional: {}
caCertPath stringcaCertPath is the path to the SSL certificate authority used to
secure communications between node and control-plane.
Defaults to “/etc/kubernetes/pki/ca.crt”.
MaxLength: 512
MinLength: 1
Optional: {}
discovery Discoverydiscovery specifies the options for the kubelet to use during the TLS Bootstrap processMinProperties: 1
Optional: {}
controlPlane JoinControlPlanecontrolPlane defines the additional control plane instance to be deployed on the joining node.
If nil, no additional control plane instance will be deployed.
Optional: {}
skipPhases string arrayskipPhases is a list of phases to skip during command execution.
The list of phases can be obtained with the “kubeadm init --help” command.
This option takes effect only on Kubernetes >=1.22.0.
MaxItems: 50
MinItems: 1
items:MaxLength: 256
items:MinLength: 1
Optional: {}
patches Patchespatches contains options related to applying patches to components deployed by kubeadm during
“kubeadm join”. The minimum kubernetes version needed to support Patches is v1.22
MinProperties: 1
Optional: {}
timeouts Timeoutstimeouts holds various timeouts that apply to kubeadm commands.MinProperties: 1
Optional: {}

JoinControlPlane

JoinControlPlane contains elements describing an additional control plane instance to be deployed on the joining node.

Appears in:

FieldDescriptionDefaultValidation
localAPIEndpoint APIEndpointlocalAPIEndpoint represents the endpoint of the API server instance to be deployed on this node.MinProperties: 1
Optional: {}

KubeConfigAuthExec

KubeConfigAuthExec specifies a command to provide client credentials. The command is exec’d and outputs structured stdout holding credentials.

See the client.authentication.k8s.io API group for specifications of the exact input and output format.

Appears in:

FieldDescriptionDefaultValidation
command stringcommand to execute.MaxLength: 1024
MinLength: 1
Required: {}
args string arrayargs is the arguments to pass to the command when executing it.MaxItems: 100
MinItems: 1
items:MaxLength: 512
items:MinLength: 1
Optional: {}
env KubeConfigAuthExecEnv arrayenv defines additional environment variables to expose to the process. These
are unioned with the host’s environment, as well as variables client-go uses
to pass argument to the plugin.
MaxItems: 100
MinItems: 1
Optional: {}
apiVersion stringapiVersion is preferred input version of the ExecInfo. The returned ExecCredentials MUST use
the same encoding version as the input.
Defaults to client.authentication.k8s.io/v1 if not set.
MaxLength: 512
MinLength: 1
Optional: {}
provideClusterInfo booleanprovideClusterInfo determines whether or not to provide cluster information,
which could potentially contain very large CA data, to this exec plugin as a
part of the KUBERNETES_EXEC_INFO environment variable. By default, it is set
to false. Package k8s.io/client-go/tools/auth/exec provides helper methods for
reading this environment variable.
Optional: {}

KubeConfigAuthExecEnv

KubeConfigAuthExecEnv is used for setting environment variables when executing an exec-based credential plugin.

Appears in:

FieldDescriptionDefaultValidation
name stringname of the environment variableMaxLength: 512
MinLength: 1
Required: {}
value stringvalue of the environment variableMaxLength: 512
MinLength: 1
Required: {}

KubeConfigAuthProvider

KubeConfigAuthProvider holds the configuration for a specified auth provider.

Appears in:

FieldDescriptionDefaultValidation
name stringname is the name of the authentication plugin.MaxLength: 256
MinLength: 1
Required: {}
config object (keys:string, values:string)config holds the parameters for the authentication plugin.Optional: {}

KubeConfigCluster

KubeConfigCluster contains information about how to communicate with a kubernetes cluster.

Adapted from clientcmdv1.Cluster.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
server stringserver is the address of the kubernetes cluster (https://hostname:port).
Defaults to https:// + Cluster.Spec.ControlPlaneEndpoint.
MaxLength: 512
MinLength: 1
Optional: {}
tlsServerName stringtlsServerName is used to check server certificate. If TLSServerName is empty, the hostname used to contact the server is used.MaxLength: 512
MinLength: 1
Optional: {}
insecureSkipTLSVerify booleaninsecureSkipTLSVerify skips the validity check for the server’s certificate. This will make your HTTPS connections insecure.Optional: {}
certificateAuthorityData integer arraycertificateAuthorityData contains PEM-encoded certificate authority certificates.
Defaults to the Cluster’s CA certificate if empty.
MaxLength: 51200
MinLength: 1
Optional: {}
proxyURL stringproxyURL is the URL to the proxy to be used for all requests made by this
client. URLs with “http”, “https”, and “socks5” schemes are supported. If
this configuration is not provided or the empty string, the client
attempts to construct a proxy configuration from http_proxy and
https_proxy environment variables. If these environment variables are not
set, the client does not attempt to proxy requests.
socks5 proxying does not currently support spdy streaming endpoints (exec,
attach, port forward).
MaxLength: 512
MinLength: 1
Optional: {}

KubeConfigUser

KubeConfigUser contains information that describes identity information. This is used to tell the kubernetes cluster who you are.

Either authProvider or exec must be filled.

Adapted from clientcmdv1.AuthInfo.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
authProvider KubeConfigAuthProviderauthProvider specifies a custom authentication plugin for the kubernetes cluster.Optional: {}
exec KubeConfigAuthExecexec specifies a custom exec-based authentication plugin for the kubernetes cluster.Optional: {}

KubeadmConfig

KubeadmConfig is the Schema for the kubeadmconfigs API.

Appears in:

FieldDescriptionDefaultValidation
apiVersion stringbootstrap.cluster.x-k8s.io/v1beta2
kind stringKubeadmConfig
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.MinProperties: 1
Optional: {}
spec KubeadmConfigSpecspec is the desired state of KubeadmConfig.MinProperties: 1
Optional: {}
status KubeadmConfigStatusstatus is the observed state of KubeadmConfig.MinProperties: 1
Optional: {}

KubeadmConfigDeprecatedStatus

KubeadmConfigDeprecatedStatus groups all the status fields that are deprecated and will be removed in a future version. See https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more context.

Appears in:

FieldDescriptionDefaultValidation
v1beta1 KubeadmConfigV1Beta1DeprecatedStatusv1beta1 groups all the status fields that are deprecated and will be removed when support for v1beta1 will be dropped.Optional: {}

KubeadmConfigInitializationStatus

KubeadmConfigInitializationStatus provides observations of the KubeadmConfig initialization process.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
dataSecretCreated booleandataSecretCreated is true when the Machine’s boostrap secret is created.
NOTE: this field is part of the Cluster API contract, and it is used to orchestrate initial Machine provisioning.
Optional: {}

KubeadmConfigList

KubeadmConfigList contains a list of KubeadmConfig.

FieldDescriptionDefaultValidation
apiVersion stringbootstrap.cluster.x-k8s.io/v1beta2
kind stringKubeadmConfigList
metadata ListMetaRefer to Kubernetes API documentation for fields of metadata.Optional: {}
items KubeadmConfig arrayitems is the list of KubeadmConfigs.

KubeadmConfigSpec

KubeadmConfigSpec defines the desired state of KubeadmConfig. Either ClusterConfiguration and InitConfiguration should be defined or the JoinConfiguration should be defined.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
clusterConfiguration ClusterConfigurationclusterConfiguration along with InitConfiguration are the configurations necessary for the init commandMinProperties: 1
Optional: {}
initConfiguration InitConfigurationinitConfiguration along with ClusterConfiguration are the configurations necessary for the init commandMinProperties: 1
Optional: {}
joinConfiguration JoinConfigurationjoinConfiguration is the kubeadm configuration for the join commandMinProperties: 1
Optional: {}
files File arrayfiles specifies extra files to be passed to user_data upon creation.MaxItems: 200
MinItems: 1
Optional: {}
diskSetup DiskSetupdiskSetup specifies options for the creation of partition tables and file systems on devices.MinProperties: 1
Optional: {}
mounts MountPoints arraymounts specifies a list of mount points to be setup.MaxItems: 100
MinItems: 1
items:MaxLength: 512
items:MinLength: 1
Optional: {}
bootCommands string arraybootCommands specifies extra commands to run very early in the boot process via the cloud-init bootcmd
module. bootcmd will run on every boot, ‘cloud-init-per’ command can be used to make bootcmd run exactly
once. This is typically run in the cloud-init.service systemd unit. This has no effect in Ignition.
MaxItems: 1000
MinItems: 1
items:MaxLength: 10240
items:MinLength: 1
Optional: {}
preKubeadmCommands string arraypreKubeadmCommands specifies extra commands to run before kubeadm runs.
With cloud-init, this is prepended to the runcmd module configuration, and is typically executed in
the cloud-final.service systemd unit. In Ignition, this is prepended to /etc/kubeadm.sh.
MaxItems: 1000
MinItems: 1
items:MaxLength: 10240
items:MinLength: 1
Optional: {}
postKubeadmCommands string arraypostKubeadmCommands specifies extra commands to run after kubeadm runs.
With cloud-init, this is appended to the runcmd module configuration, and is typically executed in
the cloud-final.service systemd unit. In Ignition, this is appended to /etc/kubeadm.sh.
MaxItems: 1000
MinItems: 1
items:MaxLength: 10240
items:MinLength: 1
Optional: {}
users User arrayusers specifies extra users to addMaxItems: 100
MinItems: 1
Optional: {}
ntp NTPntp specifies NTP configurationMinProperties: 1
Optional: {}
format Formatformat specifies the output format of the bootstrap data.
Defaults to cloud-config if not set.
Enum: [cloud-config ignition]
Optional: {}
verbosity integerverbosity is the number for the kubeadm log level verbosity.
It overrides the --v flag in kubeadm commands.
Optional: {}
ignition IgnitionSpecignition contains Ignition specific configuration.MinProperties: 1
Optional: {}

KubeadmConfigStatus

KubeadmConfigStatus defines the observed state of KubeadmConfig.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
conditions Condition arrayconditions represents the observations of a KubeadmConfig’s current state.
Known condition types are Ready, DataSecretAvailable, CertificatesAvailable.
MaxItems: 32
Optional: {}
initialization KubeadmConfigInitializationStatusinitialization provides observations of the KubeadmConfig initialization process.
NOTE: Fields in this struct are part of the Cluster API contract and are used to orchestrate initial Machine provisioning.
MinProperties: 1
Optional: {}
dataSecretName stringdataSecretName is the name of the secret that stores the bootstrap data script.MaxLength: 253
MinLength: 1
Optional: {}
observedGeneration integerobservedGeneration is the latest generation observed by the controller.Minimum: 1
Optional: {}
deprecated KubeadmConfigDeprecatedStatusdeprecated groups all the status fields that are deprecated and will be removed when all the nested field are removed.Optional: {}

KubeadmConfigTemplate

KubeadmConfigTemplate is the Schema for the kubeadmconfigtemplates API.

Appears in:

FieldDescriptionDefaultValidation
apiVersion stringbootstrap.cluster.x-k8s.io/v1beta2
kind stringKubeadmConfigTemplate
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.MinProperties: 1
Optional: {}
spec KubeadmConfigTemplateSpecspec is the desired state of KubeadmConfigTemplate.Optional: {}

KubeadmConfigTemplateList

KubeadmConfigTemplateList contains a list of KubeadmConfigTemplate.

FieldDescriptionDefaultValidation
apiVersion stringbootstrap.cluster.x-k8s.io/v1beta2
kind stringKubeadmConfigTemplateList
metadata ListMetaRefer to Kubernetes API documentation for fields of metadata.Optional: {}
items KubeadmConfigTemplate arrayitems is the list of KubeadmConfigTemplates.

KubeadmConfigTemplateResource

KubeadmConfigTemplateResource defines the Template structure.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.MinProperties: 1
Optional: {}
spec KubeadmConfigSpecspec is the desired state of KubeadmConfig.MinProperties: 1
Optional: {}

KubeadmConfigTemplateSpec

KubeadmConfigTemplateSpec defines the desired state of KubeadmConfigTemplate.

Appears in:

FieldDescriptionDefaultValidation
template KubeadmConfigTemplateResourcetemplate defines the desired state of KubeadmConfigTemplate.MinProperties: 1
Required: {}

KubeadmConfigV1Beta1DeprecatedStatus

KubeadmConfigV1Beta1DeprecatedStatus groups all the status fields that are deprecated and will be removed when support for v1beta1 will be dropped. See https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more context.

Appears in:

FieldDescriptionDefaultValidation
conditions Conditionsconditions defines current service state of the KubeadmConfig.
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
Optional: {}
failureReason stringfailureReason will be set on non-retryable errors
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
MaxLength: 256
MinLength: 1
Optional: {}
failureMessage stringfailureMessage will be set on non-retryable errors
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
MaxLength: 10240
MinLength: 1
Optional: {}

LocalEtcd

LocalEtcd describes that kubeadm should run an etcd cluster locally.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
imageRepository stringimageRepository sets the container registry to pull images from.
if not set, the ImageRepository defined in ClusterConfiguration will be used instead.
MaxLength: 512
MinLength: 1
Optional: {}
imageTag stringimageTag 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.
MaxLength: 256
MinLength: 1
Optional: {}
dataDir stringdataDir is the directory etcd will place its data.
Defaults to “/var/lib/etcd”.
MaxLength: 512
MinLength: 1
Optional: {}
extraArgs Arg arrayextraArgs is a list of args to pass to etcd.
The arg name must match the command line flag name except without leading dash(es).
Extra arguments will override existing default arguments set by kubeadm.
MaxItems: 100
MinItems: 1
Optional: {}
extraEnvs EnvVarextraEnvs is an extra set of environment variables to pass to etcd.
Environment variables passed using ExtraEnvs will override any existing environment variables, or *_proxy environment variables that kubeadm adds by default.
This option takes effect only on Kubernetes >=1.31.0.
MaxItems: 100
MinItems: 1
Optional: {}
serverCertSANs string arrayserverCertSANs sets extra Subject Alternative Names for the etcd server signing cert.MaxItems: 100
MinItems: 1
items:MaxLength: 253
items:MinLength: 1
Optional: {}
peerCertSANs string arraypeerCertSANs sets extra Subject Alternative Names for the etcd peer signing cert.MaxItems: 100
MinItems: 1
items:MaxLength: 253
items:MinLength: 1
Optional: {}

MountPoints

Underlying type: string array

MountPoints defines input for generated mounts in cloud-init.

Validation:

  • MaxItems: 100
  • MinItems: 1
  • items:MaxLength: 512
  • items:MinLength: 1

Appears in:

NTP

NTP defines input for generated ntp in cloud-init.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
servers string arrayservers specifies which NTP servers to useMaxItems: 100
items:MaxLength: 512
items:MinLength: 1
Optional: {}
enabled booleanenabled specifies whether NTP should be enabledOptional: {}

NodeRegistrationOptions

NodeRegistrationOptions holds fields that relate to registering a new control-plane or node to the cluster, either via “kubeadm init” or “kubeadm join”. Note: The NodeRegistrationOptions struct has to be kept in sync with the structs in MarshalJSON.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
name stringname is the .Metadata.Name field of the Node API object that will be created in this kubeadm init or kubeadm join operation.
This field is also used in the CommonName field of the kubelet’s client certificate to the API server.
Defaults to the hostname of the node if not provided.
MaxLength: 253
MinLength: 1
Optional: {}
criSocket stringcriSocket is used to retrieve container runtime info. This information will be annotated to the Node API object, for later re-useMaxLength: 512
MinLength: 1
Optional: {}
taints Tainttaints specifies the taints the Node API object should be registered with. If this field is unset, i.e. nil, in the kubeadm init process
it will be defaulted to []v1.Taint{’node-role.kubernetes.io/master=””’}. If you don’t want to taint your control-plane node, set this field to an
empty slice, i.e. taints: [] in the YAML file. This field is solely used for Node registration.
MaxItems: 100
MinItems: 0
Optional: {}
kubeletExtraArgs Arg arraykubeletExtraArgs is a list of args to pass to kubelet.
The arg name must match the command line flag name except without leading dash(es).
Extra arguments will override existing default arguments set by kubeadm.
MaxItems: 100
MinItems: 1
Optional: {}
ignorePreflightErrors string arrayignorePreflightErrors provides a slice of pre-flight errors to be ignored when the current node is registered, e.g. ‘IsPrivilegedUser,Swap’.
Value ‘all’ ignores errors from all checks.
MaxItems: 50
MinItems: 1
items:MaxLength: 512
items:MinLength: 1
Optional: {}
imagePullPolicy PullPolicyimagePullPolicy specifies the policy for image pulling
during kubeadm “init” and “join” operations. The value of
this field must be one of “Always”, “IfNotPresent” or
“Never”. Defaults to “IfNotPresent” if not set.
Enum: [Always IfNotPresent Never]
Optional: {}
imagePullSerial booleanimagePullSerial specifies if image pulling performed by kubeadm must be done serially or in parallel.
This option takes effect only on Kubernetes >=1.31.0.
Default: true (defaulted in kubeadm)
Optional: {}

Partition

Partition defines how to create and layout a partition.

Validation:

  • ExactlyOneOf: [layout diskLayout]

Appears in:

FieldDescriptionDefaultValidation
device stringdevice is the name of the device.MaxLength: 256
MinLength: 1
Required: {}
layout booleanlayout specifies the device layout.
If it is true, a single partition will be created for the entire device.
When layout is false, it means don’t partition or ignore existing partitioning.
Mutually exclusive with diskLayout.
Optional: {}
overwrite booleanoverwrite describes whether to skip checks and create the partition if a partition or filesystem is found on the device.
Use with caution. Default is ‘false’.
Optional: {}
tableType stringtableType specifies the tupe of partition table. The following are supported:
‘mbr’: default and setups a MS-DOS partition table
‘gpt’: setups a GPT partition table
Enum: [mbr gpt]
Optional: {}
diskLayout PartitionSpec arraydiskLayout specifies an ordered list of partitions, where each item defines the
percentage of disk space and optional partition type for that partition.
The sum of all partition percentages must not be greater than 100.
Mutually exclusive with layout.
MaxItems: 100
MinItems: 1
Optional: {}

PartitionSpec

PartitionSpec defines the size and optional type for a partition.

Appears in:

FieldDescriptionDefaultValidation
percentage integerpercentage of disk that partition will take (1-100)Maximum: 100
Minimum: 1
Required: {}
partitionType stringpartitionType is the partition type (optional).
Supported values are Linux, LinuxSwap, LinuxRAID, LVM, Fat32, NTFS,
and LinuxExtended. These are translated to cloud-init partition type codes.
A full GPT partition GUID is also supported as a passthrough value.
MaxLength: 36
MinLength: 1
Optional: {}

PasswdSource

PasswdSource is a union of all possible external source types for passwd data. Only one field may be populated in any given instance. Developers adding new sources of data for target systems should add them here.

Appears in:

FieldDescriptionDefaultValidation
secret SecretPasswdSourcesecret represents a secret that should populate this password.Required: {}

Patches

Patches contains options related to applying patches to components deployed by kubeadm.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
directory stringdirectory is a path to a directory that contains files named “target[suffix][+patchtype].extension”.
For example, “kube-apiserver0+merge.yaml” or just “etcd.json”. “target” can be one of
“kube-apiserver”, “kube-controller-manager”, “kube-scheduler”, “etcd”. “patchtype” can be one
of “strategic” “merge” or “json” and they match the patch formats supported by kubectl.
The default “patchtype” is “strategic”. “extension” must be either “json” or “yaml”.
“suffix” is an optional string that can be used to determine which patches are applied
first alpha-numerically.
These files can be written into the target directory via KubeadmConfig.Files which
specifies additional files to be created on the machine, either with content inline or
by referencing a secret.
MaxLength: 512
MinLength: 1
Optional: {}

Scheduler

Scheduler holds settings necessary for scheduler deployments in the cluster.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
extraArgs Arg arrayextraArgs is a list of args to pass to the control plane component.
The arg name must match the command line flag name except without leading dash(es).
Extra arguments will override existing default arguments set by kubeadm.
MaxItems: 100
MinItems: 1
Optional: {}
extraVolumes HostPathMount arrayextraVolumes is an extra set of host volumes, mounted to the control plane component.MaxItems: 100
MinItems: 1
Optional: {}
extraEnvs EnvVarextraEnvs is an extra set of environment variables to pass to the control plane component.
Environment variables passed using ExtraEnvs will override any existing environment variables, or *_proxy environment variables that kubeadm adds by default.
This option takes effect only on Kubernetes >=1.31.0.
MaxItems: 100
MinItems: 1
Optional: {}

SecretFileSource

SecretFileSource adapts a Secret into a FileSource.

The contents of the target Secret’s Data field will be presented as files using the keys in the Data field as the file names.

Appears in:

FieldDescriptionDefaultValidation
name stringname of the secret in the KubeadmBootstrapConfig’s namespace to use.MaxLength: 253
MinLength: 1
Required: {}
key stringkey is the key in the secret’s data map for this value.MaxLength: 256
MinLength: 1
Required: {}

SecretPasswdSource

SecretPasswdSource adapts a Secret into a PasswdSource.

The contents of the target Secret’s Data field will be presented as passwd using the keys in the Data field as the file names.

Appears in:

FieldDescriptionDefaultValidation
name stringname of the secret in the KubeadmBootstrapConfig’s namespace to use.MaxLength: 253
MinLength: 1
Required: {}
key stringkey is the key in the secret’s data map for this value.MaxLength: 256
MinLength: 1
Required: {}

Timeouts

Timeouts holds various timeouts that apply to kubeadm commands.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
controlPlaneComponentHealthCheckSeconds integercontrolPlaneComponentHealthCheckSeconds is the amount of time to wait for a control plane
component, such as the API server, to be healthy during “kubeadm init” and “kubeadm join”.
If not set, it defaults to 4m (240s).
Minimum: 0
Optional: {}
kubeletHealthCheckSeconds integerkubeletHealthCheckSeconds is the amount of time to wait for the kubelet to be healthy
during “kubeadm init” and “kubeadm join”.
If not set, it defaults to 4m (240s).
Minimum: 0
Optional: {}
kubernetesAPICallSeconds integerkubernetesAPICallSeconds is the amount of time to wait for the kubeadm client to complete a request to
the API server. This applies to all types of methods (GET, POST, etc).
If not set, it defaults to 1m (60s).
Minimum: 0
Optional: {}
etcdAPICallSeconds integeretcdAPICallSeconds is the amount of time to wait for the kubeadm etcd client to complete a request to
the etcd cluster.
If not set, it defaults to 2m (120s).
Minimum: 0
Optional: {}
tlsBootstrapSeconds integertlsBootstrapSeconds is the amount of time to wait for the kubelet to complete TLS bootstrap
for a joining node.
If not set, it defaults to 5m (300s).
Minimum: 0
Optional: {}
discoverySeconds integerdiscoverySeconds is the amount of time to wait for kubeadm to validate the API server identity
for a joining node.
If not set, it defaults to 5m (300s).
Minimum: 0
Optional: {}

User

User defines the input for a generated user in cloud-init.

Appears in:

FieldDescriptionDefaultValidation
name stringname specifies the user nameMaxLength: 256
MinLength: 1
Required: {}
gecos stringgecos specifies the gecos to use for the userMaxLength: 256
MinLength: 1
Optional: {}
groups stringgroups specifies the additional groups for the userMaxLength: 256
MinLength: 1
Optional: {}
homeDir stringhomeDir specifies the home directory to use for the userMaxLength: 256
MinLength: 1
Optional: {}
inactive booleaninactive specifies whether to mark the user as inactiveOptional: {}
shell stringshell specifies the user’s shellMaxLength: 256
MinLength: 1
Optional: {}
passwd stringpasswd specifies a hashed password for the userMaxLength: 256
MinLength: 1
Optional: {}
passwdFrom PasswdSourcepasswdFrom is a referenced source of passwd to populate the passwd.Optional: {}
primaryGroup stringprimaryGroup specifies the primary group for the userMaxLength: 256
MinLength: 1
Optional: {}
lockPassword booleanlockPassword specifies if password login should be disabledOptional: {}
sudo stringsudo specifies a sudo role for the userMaxLength: 256
MinLength: 1
Optional: {}
sshAuthorizedKeys string arraysshAuthorizedKeys specifies a list of ssh authorized keys for the userMaxItems: 100
items:MaxLength: 2048
items:MinLength: 1
Optional: {}

cluster.x-k8s.io/v1beta2

Package v1beta2 contains API Schema definitions for the cluster v1beta2 API group

Resource Types

APIEndpoint

APIEndpoint represents a reachable Kubernetes API endpoint.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
host stringhost is the hostname on which the API server is serving.MaxLength: 512
MinLength: 1
Optional: {}
port integerport is the port on which the API server is serving.Maximum: 65535
Minimum: 1
Optional: {}

Bootstrap

Bootstrap encapsulates fields to configure the Machine’s bootstrapping mechanism.

Appears in:

FieldDescriptionDefaultValidation
configRef ContractVersionedObjectReferenceconfigRef is a reference to a bootstrap provider-specific resource
that holds configuration details. The reference is optional to
allow users/operators to specify Bootstrap.DataSecretName without
the need of a controller.
Optional: {}
dataSecretName stringdataSecretName is the name of the secret that stores the bootstrap data script.
If nil, the Machine should remain in the Pending state.
MaxLength: 253
MinLength: 0
Optional: {}

Cluster

Cluster is the Schema for the clusters API.

Appears in:

FieldDescriptionDefaultValidation
apiVersion stringcluster.x-k8s.io/v1beta2
kind stringCluster
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.MinProperties: 1
Optional: {}
spec ClusterSpecspec is the desired state of Cluster.MinProperties: 1
Required: {}
status ClusterStatusstatus is the observed state of Cluster.MinProperties: 1
Optional: {}

ClusterAvailabilityGate

ClusterAvailabilityGate contains the type of a Cluster condition to be used as availability gate.

Appears in:

FieldDescriptionDefaultValidation
conditionType stringconditionType refers to a condition with matching type in the Cluster’s condition list.
If the conditions doesn’t exist, it will be treated as unknown.
Note: Both Cluster API conditions or conditions added by 3rd party controllers can be used as availability gates.
MaxLength: 316
MinLength: 1
Pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
Required: {}
polarity ConditionPolaritypolarity of the conditionType specified in this availabilityGate.
Valid values are Positive, Negative and omitted.
When omitted, the default behaviour will be Positive.
A positive polarity means that the condition should report a true status under normal conditions.
A negative polarity means that the condition should report a false status under normal conditions.
Enum: [Positive Negative]
Optional: {}

ClusterClass

ClusterClass is a template which can be used to create managed topologies. NOTE: This CRD can only be used if the ClusterTopology feature gate is enabled.

Appears in:

FieldDescriptionDefaultValidation
apiVersion stringcluster.x-k8s.io/v1beta2
kind stringClusterClass
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.MinProperties: 1
Optional: {}
spec ClusterClassSpecspec is the desired state of ClusterClass.Required: {}
status ClusterClassStatusstatus is the observed state of ClusterClass.MinProperties: 1
Optional: {}

ClusterClassDeprecatedStatus

ClusterClassDeprecatedStatus groups all the status fields that are deprecated and will be removed in a future version. See https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more context.

Appears in:

FieldDescriptionDefaultValidation
v1beta1 ClusterClassV1Beta1DeprecatedStatusv1beta1 groups all the status fields that are deprecated and will be removed when support for v1beta1 will be dropped.Optional: {}

ClusterClassList

ClusterClassList contains a list of Cluster.

FieldDescriptionDefaultValidation
apiVersion stringcluster.x-k8s.io/v1beta2
kind stringClusterClassList
metadata ListMetaRefer to Kubernetes API documentation for fields of metadata.Optional: {}
items ClusterClass arrayitems is the list of ClusterClasses.

ClusterClassPatch

ClusterClassPatch defines a patch which is applied to customize the referenced templates.

Appears in:

FieldDescriptionDefaultValidation
name stringname of the patch.MaxLength: 256
MinLength: 1
Required: {}
description stringdescription is a human-readable description of this patch.MaxLength: 1024
MinLength: 1
Optional: {}
enabledIf stringenabledIf is a Go template to be used to calculate if a patch should be enabled.
It can reference variables defined in .spec.variables and builtin variables.
The patch will be enabled if the template evaluates to true, otherwise it will
be disabled.
If EnabledIf is not set, the patch will be enabled per default.
MaxLength: 256
MinLength: 1
Optional: {}
definitions PatchDefinition arraydefinitions define inline patches.
Note: Patches will be applied in the order of the array.
Note: Exactly one of Definitions or External must be set.
MaxItems: 100
Optional: {}
external ExternalPatchDefinitionexternal defines an external patch.
Note: Exactly one of Definitions or External must be set.
Optional: {}

ClusterClassRef

ClusterClassRef is the ref to the ClusterClass that should be used for the topology.

Appears in:

FieldDescriptionDefaultValidation
name stringname is the name of the ClusterClass that should be used for the topology.
name must be a valid ClusterClass name and because of that be at most 253 characters in length
and it must consist only of lower case alphanumeric characters, hyphens (-) and periods (.), and must start
and end with an alphanumeric character.
MaxLength: 253
MinLength: 1
Pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
Required: {}
namespace stringnamespace is the namespace of the ClusterClass that should be used for the topology.
If namespace is empty or not set, it is defaulted to the namespace of the Cluster object.
namespace must be a valid namespace name and because of that be at most 63 characters in length
and it must consist only of lower case alphanumeric characters or hyphens (-), and must start
and end with an alphanumeric character.
MaxLength: 63
MinLength: 1
Pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
Optional: {}

ClusterClassSpec

ClusterClassSpec describes the desired state of the ClusterClass.

Appears in:

FieldDescriptionDefaultValidation
availabilityGates ClusterAvailabilityGate arrayavailabilityGates specifies additional conditions to include when evaluating Cluster Available condition.
NOTE: If a Cluster is using this ClusterClass, and this Cluster defines a custom list of availabilityGates,
such list overrides availabilityGates defined in this field.
MaxItems: 32
MinItems: 1
Optional: {}
infrastructure InfrastructureClassinfrastructure is a reference to a local struct that holds the details
for provisioning the infrastructure cluster for the Cluster.
Required: {}
controlPlane ControlPlaneClasscontrolPlane is a reference to a local struct that holds the details
for provisioning the Control Plane for the Cluster.
Required: {}
workers WorkersClassworkers describes the worker nodes for the cluster.
It is a collection of node types which can be used to create
the worker nodes of the cluster.
MinProperties: 1
Optional: {}
variables ClusterClassVariable arrayvariables defines the variables which can be configured
in the Cluster topology and are then used in patches.
MaxItems: 1000
MinItems: 1
Optional: {}
patches ClusterClassPatch arraypatches defines the patches which are applied to customize
referenced templates of a ClusterClass.
Note: Patches will be applied in the order of the array.
MaxItems: 1000
MinItems: 1
Optional: {}
upgrade ClusterClassUpgradeupgrade defines the upgrade configuration for clusters using this ClusterClass.MinProperties: 1
Optional: {}
kubernetesVersions string arraykubernetesVersions is the list of Kubernetes versions that can be
used for clusters using this ClusterClass.
The list of version must be ordered from the older to the newer version, and there should be
at least one version for every minor in between the first and the last version.
MaxItems: 100
MinItems: 1
items:MaxLength: 256
items:MinLength: 1
Optional: {}

ClusterClassStatus

ClusterClassStatus defines the observed state of the ClusterClass.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
conditions Condition arrayconditions represents the observations of a ClusterClass’s current state.
Known condition types are VariablesReady, RefVersionsUpToDate, Paused.
MaxItems: 32
Optional: {}
variables ClusterClassStatusVariable arrayvariables is a list of ClusterClassStatusVariable that are defined for the ClusterClass.MaxItems: 1000
Optional: {}
observedGeneration integerobservedGeneration is the latest generation observed by the controller.Minimum: 1
Optional: {}
deprecated ClusterClassDeprecatedStatusdeprecated groups all the status fields that are deprecated and will be removed when all the nested field are removed.Optional: {}

ClusterClassStatusVariable

ClusterClassStatusVariable defines a variable which appears in the status of a ClusterClass.

Appears in:

FieldDescriptionDefaultValidation
name stringname is the name of the variable.MaxLength: 256
MinLength: 1
Required: {}
definitionsConflict booleandefinitionsConflict specifies whether or not there are conflicting definitions for a single variable name.Optional: {}
definitions ClusterClassStatusVariableDefinition arraydefinitions is a list of definitions for a variable.MaxItems: 100
MinItems: 1
Required: {}

ClusterClassStatusVariableDefinition

ClusterClassStatusVariableDefinition defines a variable which appears in the status of a ClusterClass.

Appears in:

FieldDescriptionDefaultValidation
from stringfrom specifies the origin of the variable definition.
This will be inline for variables defined in the ClusterClass or the name of a patch defined in the ClusterClass
for variables discovered from a DiscoverVariables runtime extensions.
MaxLength: 256
MinLength: 1
Required: {}
required booleanrequired specifies if the variable is required.
Note: this applies to the variable as a whole and thus the
top-level object defined in the schema. If nested fields are
required, this will be specified inside the schema.
Required: {}
deprecatedV1Beta1Metadata ClusterClassVariableMetadatadeprecatedV1Beta1Metadata is the metadata of a variable.
It can be used to add additional data for higher level tools to
a ClusterClassVariable.
Deprecated: This field is deprecated and will be removed when support for v1beta1 will be dropped. Please use XMetadata in JSONSchemaProps instead.
MinProperties: 1
Optional: {}
schema VariableSchemaschema defines the schema of the variable.Required: {}

ClusterClassTemplateReference

ClusterClassTemplateReference is a reference to a ClusterClass template.

Appears in:

FieldDescriptionDefaultValidation
kind stringkind of the template.
kind must consist of alphanumeric characters or ‘-’, start with an alphabetic character, and end with an alphanumeric character.
MaxLength: 63
MinLength: 1
Pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
Required: {}
name stringname of the template.
name must consist of lower case alphanumeric characters, ‘-’ or ‘.’, and must start and end with an alphanumeric character.
MaxLength: 253
MinLength: 1
Pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
Required: {}
apiVersion stringapiVersion of the template.
apiVersion must be fully qualified domain name followed by / and a version.
MaxLength: 317
MinLength: 1
Pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\/[a-z]([-a-z0-9]*[a-z0-9])?$
Required: {}

ClusterClassUpgrade

ClusterClassUpgrade defines the upgrade configuration for clusters using the ClusterClass.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
external ClusterClassUpgradeExternalexternal defines external runtime extensions for upgrade operations.MinProperties: 1
Optional: {}

ClusterClassUpgradeExternal

ClusterClassUpgradeExternal defines external runtime extensions for upgrade operations.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
generateUpgradePlanExtension stringgenerateUpgradePlanExtension references an extension which is called to generate upgrade plan.MaxLength: 512
MinLength: 1
Optional: {}

ClusterClassV1Beta1DeprecatedStatus

ClusterClassV1Beta1DeprecatedStatus groups all the status fields that are deprecated and will be removed when support for v1beta1 will be dropped. See https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more context.

Appears in:

FieldDescriptionDefaultValidation
conditions Conditionsconditions defines current observed state of the ClusterClass.
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
Optional: {}

ClusterClassVariable

ClusterClassVariable defines a variable which can be configured in the Cluster topology and used in patches.

Appears in:

FieldDescriptionDefaultValidation
name stringname of the variable.MaxLength: 256
MinLength: 1
Required: {}
required booleanrequired specifies if the variable is required.
Note: this applies to the variable as a whole and thus the
top-level object defined in the schema. If nested fields are
required, this will be specified inside the schema.
Required: {}
deprecatedV1Beta1Metadata ClusterClassVariableMetadatadeprecatedV1Beta1Metadata is the metadata of a variable.
It can be used to add additional data for higher level tools to
a ClusterClassVariable.
Deprecated: This field is deprecated and will be removed when support for v1beta1 will be dropped. Please use XMetadata in JSONSchemaProps instead.
MinProperties: 1
Optional: {}
schema VariableSchemaschema defines the schema of the variable.Required: {}

ClusterClassVariableMetadata

ClusterClassVariableMetadata is the metadata of a variable. It can be used to add additional data for higher level tools to a ClusterClassVariable.

Deprecated: This struct is deprecated and is going to be removed in the next apiVersion.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
labels object (keys:string, values:string)labels is a map of string keys and values that can be used to organize and categorize
(scope and select) variables.
Optional: {}
annotations object (keys:string, values:string)annotations is an unstructured key value map that can be used to store and
retrieve arbitrary metadata.
They are not queryable.
Optional: {}

ClusterControlPlaneStatus

ClusterControlPlaneStatus groups all the observations about control plane current state.

Appears in:

FieldDescriptionDefaultValidation
desiredReplicas integerdesiredReplicas is the total number of desired control plane machines in this cluster.Optional: {}
replicas integerreplicas is the total number of control plane machines in this cluster.
NOTE: replicas also includes machines still being provisioned or being deleted.
Optional: {}
upToDateReplicas integerupToDateReplicas is the number of up-to-date control plane machines in this cluster. A machine is considered up-to-date when Machine’s UpToDate condition is true.Optional: {}
readyReplicas integerreadyReplicas is the total number of ready control plane machines in this cluster. A machine is considered ready when Machine’s Ready condition is true.Optional: {}
availableReplicas integeravailableReplicas is the total number of available control plane machines in this cluster. A machine is considered available when Machine’s Available condition is true.Optional: {}

ClusterDeprecatedStatus

ClusterDeprecatedStatus groups all the status fields that are deprecated and will be removed in a future version. See https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more context.

Appears in:

FieldDescriptionDefaultValidation
v1beta1 ClusterV1Beta1DeprecatedStatusv1beta1 groups all the status fields that are deprecated and will be removed when support for v1beta1 will be dropped.Optional: {}

ClusterInitializationStatus

ClusterInitializationStatus provides observations of the Cluster initialization process. NOTE: Fields in this struct are part of the Cluster API contract and are used to orchestrate initial Cluster provisioning.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
infrastructureProvisioned booleaninfrastructureProvisioned is true when the infrastructure provider reports that Cluster’s infrastructure is fully provisioned.
NOTE: this field is part of the Cluster API contract, and it is used to orchestrate provisioning.
The value of this field is never updated after provisioning is completed.
Optional: {}
controlPlaneInitialized booleancontrolPlaneInitialized denotes when the control plane is functional enough to accept requests.
This information is usually used as a signal for starting all the provisioning operations that depends on
a functional API server, but do not require a full HA control plane to exists, like e.g. join worker Machines,
install core addons like CNI, CPI, CSI etc.
NOTE: this field is part of the Cluster API contract, and it is used to orchestrate provisioning.
The value of this field is never updated after initialization is completed.
Optional: {}

ClusterList

ClusterList contains a list of Cluster.

FieldDescriptionDefaultValidation
apiVersion stringcluster.x-k8s.io/v1beta2
kind stringClusterList
metadata ListMetaRefer to Kubernetes API documentation for fields of metadata.Optional: {}
items Cluster arrayitems is the list of Clusters.

ClusterNetwork

ClusterNetwork specifies the different networking parameters for a cluster.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
apiServerPort integerapiServerPort specifies the port the API Server should bind to.
Defaults to 6443.
Maximum: 65535
Minimum: 1
Optional: {}
services NetworkRangesservices is the network ranges from which service VIPs are allocated.Optional: {}
pods NetworkRangespods is the network ranges from which Pod networks are allocated.Optional: {}
serviceDomain stringserviceDomain is the domain name for services.MaxLength: 253
MinLength: 1
Optional: {}

ClusterSpec

ClusterSpec defines the desired state of Cluster.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
paused booleanpaused can be used to prevent controllers from processing the Cluster and all its associated objects.Optional: {}
clusterNetwork ClusterNetworkclusterNetwork represents the cluster network configuration.MinProperties: 1
Optional: {}
controlPlaneEndpoint APIEndpointcontrolPlaneEndpoint represents the endpoint used to communicate with the control plane.MinProperties: 1
Optional: {}
controlPlaneRef ContractVersionedObjectReferencecontrolPlaneRef is an optional reference to a provider-specific resource that holds
the details for provisioning the Control Plane for a Cluster.
Optional: {}
infrastructureRef ContractVersionedObjectReferenceinfrastructureRef is a reference to a provider-specific resource that holds the details
for provisioning infrastructure for a cluster in said provider.
Optional: {}
topology Topologytopology encapsulates the topology for the cluster.
NOTE: It is required to enable the ClusterTopology
feature gate flag to activate managed topologies support.
Optional: {}
availabilityGates ClusterAvailabilityGate arrayavailabilityGates specifies additional conditions to include when evaluating Cluster Available condition.
If this field is not defined and the Cluster implements a managed topology, availabilityGates
from the corresponding ClusterClass will be used, if any.
MaxItems: 32
MinItems: 1
Optional: {}

ClusterStatus

ClusterStatus defines the observed state of Cluster.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
conditions Condition arrayconditions represents the observations of a Cluster’s current state.
Known condition types are Available, InfrastructureReady, ControlPlaneInitialized, ControlPlaneAvailable, WorkersAvailable, MachinesReady
MachinesUpToDate, RemoteConnectionProbe, ScalingUp, ScalingDown, Remediating, Deleting, Paused.
Additionally, a TopologyReconciled condition will be added in case the Cluster is referencing a ClusterClass / defining a managed Topology.
MaxItems: 32
Optional: {}
initialization ClusterInitializationStatusinitialization provides observations of the Cluster initialization process.
NOTE: Fields in this struct are part of the Cluster API contract and are used to orchestrate initial Cluster provisioning.
MinProperties: 1
Optional: {}
controlPlane ClusterControlPlaneStatuscontrolPlane groups all the observations about Cluster’s ControlPlane current state.Optional: {}
workers WorkersStatusworkers groups all the observations about Cluster’s Workers current state.Optional: {}
failureDomains FailureDomain arrayfailureDomains is a slice of failure domain objects synced from the infrastructure provider.MaxItems: 100
MinItems: 1
Optional: {}
phase stringphase represents the current phase of cluster actuation.Enum: [Pending Provisioning Provisioned Deleting Failed Unknown]
Optional: {}
observedGeneration integerobservedGeneration is the latest generation observed by the controller.Minimum: 1
Optional: {}
deprecated ClusterDeprecatedStatusdeprecated groups all the status fields that are deprecated and will be removed when all the nested field are removed.Optional: {}

ClusterV1Beta1DeprecatedStatus

ClusterV1Beta1DeprecatedStatus groups all the status fields that are deprecated and will be removed when support for v1beta1 will be dropped. See https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more context.

Appears in:

FieldDescriptionDefaultValidation
conditions Conditionsconditions defines current service state of the cluster.
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
Optional: {}
failureReason ClusterStatusErrorfailureReason indicates that there is a fatal problem reconciling the
state, and will be set to a token value suitable for
programmatic interpretation.
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
Optional: {}
failureMessage stringfailureMessage indicates that there is a fatal problem reconciling the
state, and will be set to a descriptive error message.
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
MaxLength: 10240
MinLength: 1
Optional: {}

ClusterVariable

ClusterVariable can be used to customize the Cluster through patches. Each ClusterVariable is associated with a Variable definition in the ClusterClass status variables.

Appears in:

FieldDescriptionDefaultValidation
name stringname of the variable.MaxLength: 256
MinLength: 1
Required: {}
value JSONvalue of the variable.
Note: the value will be validated against the schema of the corresponding ClusterClassVariable
from the ClusterClass.
Note: We have to use apiextensionsv1.JSON instead of a custom JSON type, because controller-tools has a
hard-coded schema for apiextensionsv1.JSON which cannot be produced by another type via controller-tools,
i.e. it is not possible to have no type field.
Ref: https://github.com/kubernetes-sigs/controller-tools/blob/d0e03a142d0ecdd5491593e941ee1d6b5d91dba6/pkg/crd/known_types.go#L106-L111
Required: {}

Condition

Condition defines an observation of a Cluster API resource operational state.

Deprecated: This type is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.

Appears in:

FieldDescriptionDefaultValidation
type ConditionTypetype of condition in CamelCase or in foo.example.com/CamelCase.
Many .condition.type values are consistent across resources like Available, but because arbitrary conditions
can be useful (see .node.status.conditions), the ability to deconflict is important.
MaxLength: 256
MinLength: 1
Required: {}
status ConditionStatusstatus of the condition, one of True, False, Unknown.Required: {}
severity ConditionSeverityseverity provides an explicit classification of Reason code, so the users or machines can immediately
understand the current situation and act accordingly.
The Severity field MUST be set only when Status=False.
MaxLength: 32
Optional: {}
reason stringreason is the reason for the condition’s last transition in CamelCase.
The specific API may choose whether or not this field is considered a guaranteed API.
This field may be empty.
MaxLength: 256
MinLength: 1
Optional: {}
message stringmessage is a human readable message indicating details about the transition.
This field may be empty.
MaxLength: 10240
MinLength: 1
Optional: {}

ConditionPolarity

Underlying type: string

ConditionPolarity defines the polarity for a metav1.Condition.

Validation:

  • Enum: [Positive Negative]

Appears in:

FieldDescription
PositivePositivePolarityCondition describe a condition with positive polarity, a condition
where the normal state is True. e.g. NetworkReady.
NegativeNegativePolarityCondition describe a condition with negative polarity, a condition
where the normal state is False. e.g. MemoryPressure.

ConditionSeverity

Underlying type: string

ConditionSeverity expresses the severity of a Condition Type failing.

Deprecated: This type is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.

Validation:

  • MaxLength: 32

Appears in:

FieldDescription
ErrorConditionSeverityError specifies that a condition with Status=False is an error.
WarningConditionSeverityWarning specifies that a condition with Status=False is a warning.
InfoConditionSeverityInfo specifies that a condition with Status=False is informative.
``ConditionSeverityNone should apply only to conditions with Status=True.

ConditionType

Underlying type: string

ConditionType is a valid value for Condition.Type.

Deprecated: This type is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.

Validation:

  • MaxLength: 256
  • MinLength: 1

Appears in:

FieldDescription
ReadyReadyV1Beta1Condition defines the Ready condition type that summarizes the operational state of a Cluster API object.
InfrastructureReadyInfrastructureReadyV1Beta1Condition reports a summary of current status of the infrastructure object defined for this cluster/machine/machinepool.
This condition is mirrored from the Ready condition in the infrastructure ref object, and
the absence of this condition might signal problems in the reconcile external loops or the fact that
the infrastructure provider does not implement the Ready condition yet.
VariablesReconciledClusterClassVariablesReconciledV1Beta1Condition reports if the ClusterClass variables, including both inline and external
variables, have been successfully reconciled.
This signals that the ClusterClass is ready to be used to default and validate variables on Clusters using
this ClusterClass.
ControlPlaneInitializedControlPlaneInitializedV1Beta1Condition reports if the cluster’s control plane has been initialized such that the
cluster’s apiserver is reachable. If no Control Plane provider is in use this condition reports that at least one
control plane Machine has a node reference. Once this Condition is marked true, its value is never changed. See
the ControlPlaneReady condition for an indication of the current readiness of the cluster’s control plane.
ControlPlaneReadyControlPlaneReadyV1Beta1Condition reports the ready condition from the control plane object defined for this cluster.
This condition is mirrored from the Ready condition in the control plane ref object, and
the absence of this condition might signal problems in the reconcile external loops or the fact that
the control plane provider does not implement the Ready condition yet.
BootstrapReadyBootstrapReadyV1Beta1Condition reports a summary of current status of the bootstrap object defined for this machine.
This condition is mirrored from the Ready condition in the bootstrap ref object, and
the absence of this condition might signal problems in the reconcile external loops or the fact that
the bootstrap provider does not implement the Ready condition yet.
DrainingSucceededDrainingSucceededV1Beta1Condition provide evidence of the status of the node drain operation which happens during the machine
deletion process.
PreDrainDeleteHookSucceededPreDrainDeleteHookSucceededV1Beta1Condition reports a machine waiting for a PreDrainDeleteHook before being delete.
PreTerminateDeleteHookSucceededPreTerminateDeleteHookSucceededV1Beta1Condition reports a machine waiting for a PreDrainDeleteHook before being delete.
VolumeDetachSucceededVolumeDetachSucceededV1Beta1Condition reports a machine waiting for volumes to be detached.
HealthCheckSucceededMachineHealthCheckSucceededV1Beta1Condition is set on machines that have passed a healthcheck by the MachineHealthCheck controller.
In the event that the health check fails it will be set to False.
OwnerRemediatedMachineOwnerRemediatedV1Beta1Condition is set on machines that have failed a healthcheck by the MachineHealthCheck controller.
MachineOwnerRemediatedV1Beta1Condition is set to False after a health check fails, but should be changed to True by the owning controller after remediation succeeds.
ExternalRemediationTemplateAvailableExternalRemediationTemplateAvailableV1Beta1Condition is set on machinehealthchecks when MachineHealthCheck controller uses external remediation.
ExternalRemediationTemplateAvailableV1Beta1Condition is set to false if external remediation template is not found.
ExternalRemediationRequestAvailableExternalRemediationRequestAvailableV1Beta1Condition is set on machinehealthchecks when MachineHealthCheck controller uses external remediation.
ExternalRemediationRequestAvailableV1Beta1Condition is set to false if creating external remediation request fails.
NodeHealthyMachineNodeHealthyV1Beta1Condition provides info about the operational state of the Kubernetes node hosted on the machine by summarizing node conditions.
If the conditions defined in a Kubernetes node (i.e., NodeReady, NodeMemoryPressure, NodeDiskPressure and NodePIDPressure) are in a healthy state, it will be set to True.
RemediationAllowedRemediationAllowedV1Beta1Condition is set on MachineHealthChecks to show the status of whether the MachineHealthCheck is
allowed to remediate any Machines or whether it is blocked from remediating any further.
AvailableMachineDeploymentAvailableV1Beta1Condition means the MachineDeployment is available, that is, at least the minimum available
machines required (i.e. Spec.Replicas-MaxUnavailable when spec.rollout.strategy.type = RollingUpdate) are up and running for at least minReadySeconds.
MachineSetReadyMachineSetReadyV1Beta1Condition reports a summary of current status of the MachineSet owned by the MachineDeployment.
MachinesCreatedMachinesCreatedV1Beta1Condition documents that the machines controlled by the MachineSet are created.
When this condition is false, it indicates that there was an error when cloning the infrastructure/bootstrap template or
when generating the machine object.
MachinesReadyMachinesReadyV1Beta1Condition reports an aggregate of current status of the machines controlled by the MachineSet.
ResizedResizedV1Beta1Condition documents a MachineSet is resizing the set of controlled machines.
TopologyReconciledTopologyReconciledV1Beta1Condition provides evidence about the reconciliation of a Cluster topology into
the managed objects of the Cluster.
Status false means that for any reason, the values defined in Cluster.spec.topology are not yet applied to
managed objects on the Cluster; status true means that Cluster.spec.topology have been applied to
the objects in the Cluster (but this does not imply those objects are already reconciled to the spec provided).
RefVersionsUpToDateClusterClassRefVersionsUpToDateV1Beta1Condition documents if the references in the ClusterClass are
up-to-date (i.e. they are using the latest apiVersion of the current Cluster API contract from
the corresponding CRD).
ReplicasReadyReplicasReadyV1Beta1Condition reports an aggregate of current status of the replicas controlled by the MachinePool.

Conditions

Underlying type: Condition

Conditions provide observations of the operational state of a Cluster API resource.

Deprecated: This type is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.

Appears in:

FieldDescriptionDefaultValidation
type ConditionTypetype of condition in CamelCase or in foo.example.com/CamelCase.
Many .condition.type values are consistent across resources like Available, but because arbitrary conditions
can be useful (see .node.status.conditions), the ability to deconflict is important.
MaxLength: 256
MinLength: 1
Required: {}
status ConditionStatusstatus of the condition, one of True, False, Unknown.Required: {}
severity ConditionSeverityseverity provides an explicit classification of Reason code, so the users or machines can immediately
understand the current situation and act accordingly.
The Severity field MUST be set only when Status=False.
MaxLength: 32
Optional: {}
reason stringreason is the reason for the condition’s last transition in CamelCase.
The specific API may choose whether or not this field is considered a guaranteed API.
This field may be empty.
MaxLength: 256
MinLength: 1
Optional: {}
message stringmessage is a human readable message indicating details about the transition.
This field may be empty.
MaxLength: 10240
MinLength: 1
Optional: {}

ContractVersionedObjectReference

ContractVersionedObjectReference is a reference to a resource for which the version is inferred from contract labels.

Appears in:

FieldDescriptionDefaultValidation
kind stringkind of the resource being referenced.
kind must consist of alphanumeric characters or ‘-’, start with an alphabetic character, and end with an alphanumeric character.
MaxLength: 63
MinLength: 1
Pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
Required: {}
name stringname of the resource being referenced.
name must consist of lower case alphanumeric characters, ‘-’ or ‘.’, and must start and end with an alphanumeric character.
MaxLength: 253
MinLength: 1
Pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
Required: {}
apiGroup stringapiGroup is the group of the resource being referenced.
apiGroup must be fully qualified domain name.
The corresponding version for this reference will be looked up from the contract
labels of the corresponding CRD of the resource being referenced.
MaxLength: 253
MinLength: 1
Pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
Required: {}

ControlPlaneClass

ControlPlaneClass defines the class for the control plane.

Appears in:

FieldDescriptionDefaultValidation
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.MinProperties: 1
Optional: {}
templateRef ClusterClassTemplateReferencetemplateRef contains the reference to a provider-specific control plane template.Required: {}
machineInfrastructure ControlPlaneClassMachineInfrastructureTemplatemachineInfrastructure defines the metadata and infrastructure information
for control plane machines.
This field is supported if and only if the control plane provider template
referenced above is Machine based and supports setting replicas.
Optional: {}
healthCheck ControlPlaneClassHealthCheckhealthCheck defines a MachineHealthCheck for this ControlPlaneClass.
This field is supported if and only if the ControlPlane provider template
referenced above is Machine based and supports setting replicas.
MinProperties: 1
Optional: {}
naming ControlPlaneClassNamingSpecnaming allows changing the naming pattern used when creating the control plane provider object.MinProperties: 1
Optional: {}
deletion ControlPlaneClassMachineDeletionSpecdeletion contains configuration options for Machine deletion.MinProperties: 1
Optional: {}
taints MachineTaint arraytaints are the node taints that Cluster API will manage.
This list is not necessarily complete: other Kubernetes components may add or remove other taints from nodes,
e.g. the node controller might add the node.kubernetes.io/not-ready taint.
Only those taints defined in this list will be added or removed by core Cluster API controllers.
There can be at most 64 taints.
A pod would have to tolerate all existing taints to run on the corresponding node.
NOTE: This list is implemented as a “map” type, meaning that individual elements can be managed by different owners.
MaxItems: 64
MinItems: 1
Optional: {}
readinessGates MachineReadinessGate arrayreadinessGates specifies additional conditions to include when evaluating Machine Ready condition.
This field can be used e.g. to instruct the machine controller to include in the computation for Machine’s ready
computation a condition, managed by an external controllers, reporting the status of special software/hardware installed on the Machine.
NOTE: If a Cluster defines a custom list of readinessGates for the control plane,
such list overrides readinessGates defined in this field.
NOTE: Specific control plane provider implementations might automatically extend the list of readinessGates;
e.g. the kubeadm control provider adds ReadinessGates for the APIServerPodHealthy, SchedulerPodHealthy conditions, etc.
MaxItems: 32
MinItems: 1
Optional: {}

ControlPlaneClassHealthCheck

ControlPlaneClassHealthCheck defines a MachineHealthCheck for control plane machines.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
checks ControlPlaneClassHealthCheckCheckschecks are the checks that are used to evaluate if a Machine is healthy.
Independent of this configuration the MachineHealthCheck controller will always
flag Machines with cluster.x-k8s.io/remediate-machine annotation and
Machines with deleted Nodes as unhealthy.
Furthermore, if checks.nodeStartupTimeoutSeconds is not set it
is defaulted to 10 minutes and evaluated accordingly.
MinProperties: 1
Optional: {}
remediation ControlPlaneClassHealthCheckRemediationremediation configures if and how remediations are triggered if a Machine is unhealthy.
If remediation or remediation.triggerIf is not set,
remediation will always be triggered for unhealthy Machines.
If remediation or remediation.templateRef is not set,
the OwnerRemediated condition will be set on unhealthy Machines to trigger remediation via
the owner of the Machines, for example a MachineSet or a KubeadmControlPlane.
MinProperties: 1
Optional: {}

ControlPlaneClassHealthCheckChecks

ControlPlaneClassHealthCheckChecks are the checks that are used to evaluate if a control plane Machine is healthy.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
nodeStartupTimeoutSeconds integernodeStartupTimeoutSeconds allows to set the maximum time for MachineHealthCheck
to consider a Machine unhealthy if a corresponding Node isn’t associated
through a Spec.ProviderID field.
The duration set in this field is compared to the greatest of:
- Cluster’s infrastructure ready condition timestamp (if and when available)
- Control Plane’s initialized condition timestamp (if and when available)
- Machine’s infrastructure ready condition timestamp (if and when available)
- Machine’s metadata creation timestamp
Defaults to 10 minutes.
If you wish to disable this feature, set the value explicitly to 0.
Minimum: 0
Optional: {}
unhealthyNodeConditions UnhealthyNodeCondition arrayunhealthyNodeConditions contains a list of conditions that determine
whether a node is considered unhealthy. The conditions are combined in a
logical OR, i.e. if any of the conditions is met, the node is unhealthy.
MaxItems: 100
MinItems: 1
Optional: {}
unhealthyMachineConditions UnhealthyMachineCondition arrayunhealthyMachineConditions contains a list of the machine conditions that determine
whether a machine is considered unhealthy. The conditions are combined in a
logical OR, i.e. if any of the conditions is met, the machine is unhealthy.
MaxItems: 100
MinItems: 1
Optional: {}

ControlPlaneClassHealthCheckRemediation

ControlPlaneClassHealthCheckRemediation configures if and how remediations are triggered if a control plane Machine is unhealthy.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
triggerIf ControlPlaneClassHealthCheckRemediationTriggerIftriggerIf configures if remediations are triggered.
If this field is not set, remediations are always triggered.
MinProperties: 1
Optional: {}
templateRef MachineHealthCheckRemediationTemplateReferencetemplateRef is a reference to a remediation template
provided by an infrastructure provider.
This field is completely optional, when filled, the MachineHealthCheck controller
creates a new object from the template referenced and hands off remediation of the machine to
a controller that lives outside of Cluster API.
Optional: {}

ControlPlaneClassHealthCheckRemediationTriggerIf

ControlPlaneClassHealthCheckRemediationTriggerIf configures if remediations are triggered.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
unhealthyLessThanOrEqualTo IntOrStringunhealthyLessThanOrEqualTo specifies that remediations are only triggered if the number of
unhealthy Machines is less than or equal to the configured value.
unhealthyInRange takes precedence if set.
Optional: {}
unhealthyInRange stringunhealthyInRange specifies that remediations are only triggered if the number of
unhealthy Machines is in the configured range.
Takes precedence over unhealthyLessThanOrEqualTo.
Eg. “[3-5]“ - This means that remediation will be allowed only when:
(a) there are at least 3 unhealthy Machines (and)
(b) there are at most 5 unhealthy Machines
MaxLength: 32
MinLength: 1
Pattern: ^\[[0-9]+-[0-9]+\]$
Optional: {}

ControlPlaneClassMachineDeletionSpec

ControlPlaneClassMachineDeletionSpec contains configuration options for Machine deletion.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
nodeDrainTimeoutSeconds integernodeDrainTimeoutSeconds is the total amount of time that the controller will spend on draining a node.
The default value is 0, meaning that the node can be drained without any time limitations.
NOTE: nodeDrainTimeoutSeconds is different from kubectl drain --timeout
NOTE: This value can be overridden while defining a Cluster.Topology.
Minimum: 0
Optional: {}
nodeVolumeDetachTimeoutSeconds integernodeVolumeDetachTimeoutSeconds is the total amount of time that the controller will spend on waiting for all volumes
to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations.
NOTE: This value can be overridden while defining a Cluster.Topology.
Minimum: 0
Optional: {}
nodeDeletionTimeoutSeconds integernodeDeletionTimeoutSeconds defines how long the controller will attempt to delete the Node that the Machine
hosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely.
Defaults to 10 seconds.
NOTE: This value can be overridden while defining a Cluster.Topology.
Minimum: 0
Optional: {}

ControlPlaneClassMachineInfrastructureTemplate

ControlPlaneClassMachineInfrastructureTemplate defines the template for a MachineInfrastructure of a ControlPlane.

Appears in:

FieldDescriptionDefaultValidation
templateRef ClusterClassTemplateReferencetemplateRef is a required reference to the template for a MachineInfrastructure of a ControlPlane.Required: {}

ControlPlaneClassNamingSpec

ControlPlaneClassNamingSpec defines the naming strategy for control plane objects.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
template stringtemplate defines the template to use for generating the name of the ControlPlane object.
If not defined, it will fallback to \{\{ .cluster.name \}\}-\{\{ .random \}\}.
If the templated string exceeds 63 characters, it will be trimmed to 58 characters and will
get concatenated with a random suffix of length 5.
The templating mechanism provides the following arguments:
* .cluster.name: The name of the cluster object.
* .random: A random alphanumeric string, without vowels, of length 5.
MaxLength: 1024
MinLength: 1
Optional: {}

ControlPlaneTopology

ControlPlaneTopology specifies the parameters for the control plane nodes in the cluster.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.MinProperties: 1
Optional: {}
replicas integerreplicas is the number of control plane nodes.
If the value is not set, the ControlPlane object is created without the number of Replicas
and it’s assumed that the control plane controller does not implement support for this field.
When specified against a control plane provider that lacks support for this field, this value will be ignored.
Optional: {}
rollout ControlPlaneTopologyRolloutSpecrollout allows you to configure the behavior of rolling updates to the control plane.MinProperties: 1
Optional: {}
healthCheck ControlPlaneTopologyHealthCheckhealthCheck allows to enable, disable and override control plane health check
configuration from the ClusterClass for this control plane.
MinProperties: 1
Optional: {}
deletion ControlPlaneTopologyMachineDeletionSpecdeletion contains configuration options for Machine deletion.MinProperties: 1
Optional: {}
taints MachineTaint arraytaints are the node taints that Cluster API will manage.
This list is not necessarily complete: other Kubernetes components may add or remove other taints from nodes,
e.g. the node controller might add the node.kubernetes.io/not-ready taint.
Only those taints defined in this list will be added or removed by core Cluster API controllers.
There can be at most 64 taints.
A pod would have to tolerate all existing taints to run on the corresponding node.
NOTE: This list is implemented as a “map” type, meaning that individual elements can be managed by different owners.
MaxItems: 64
MinItems: 1
Optional: {}
readinessGates MachineReadinessGate arrayreadinessGates specifies additional conditions to include when evaluating Machine Ready condition.
This field can be used e.g. to instruct the machine controller to include in the computation for Machine’s ready
computation a condition, managed by an external controllers, reporting the status of special software/hardware installed on the Machine.
If this field is not defined, readinessGates from the corresponding ControlPlaneClass will be used, if any.
NOTE: Specific control plane provider implementations might automatically extend the list of readinessGates;
e.g. the kubeadm control provider adds ReadinessGates for the APIServerPodHealthy, SchedulerPodHealthy conditions, etc.
MaxItems: 32
MinItems: 1
Optional: {}
variables ControlPlaneVariablesvariables can be used to customize the ControlPlane through patches.MinProperties: 1
Optional: {}

ControlPlaneTopologyHealthCheck

ControlPlaneTopologyHealthCheck defines a MachineHealthCheck for control plane machines.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
enabled booleanenabled controls if a MachineHealthCheck should be created for the target machines.
If false: No MachineHealthCheck will be created.
If not set(default): A MachineHealthCheck will be created if it is defined here or
in the associated ClusterClass. If no MachineHealthCheck is defined then none will be created.
If true: A MachineHealthCheck is guaranteed to be created. Cluster validation will
block if enable is true and no MachineHealthCheck definition is available.
Optional: {}
checks ControlPlaneTopologyHealthCheckCheckschecks are the checks that are used to evaluate if a Machine is healthy.
If one of checks and remediation fields are set, the system assumes that an healthCheck override is defined,
and as a consequence the checks and remediation fields from Cluster will be used instead of the
corresponding fields in ClusterClass.
Independent of this configuration the MachineHealthCheck controller will always
flag Machines with cluster.x-k8s.io/remediate-machine annotation and
Machines with deleted Nodes as unhealthy.
Furthermore, if checks.nodeStartupTimeoutSeconds is not set it
is defaulted to 10 minutes and evaluated accordingly.
MinProperties: 1
Optional: {}
remediation ControlPlaneTopologyHealthCheckRemediationremediation configures if and how remediations are triggered if a Machine is unhealthy.
If one of checks and remediation fields are set, the system assumes that an healthCheck override is defined,
and as a consequence the checks and remediation fields from cluster will be used instead of the
corresponding fields in ClusterClass.
If an health check override is defined and remediation or remediation.triggerIf is not set,
remediation will always be triggered for unhealthy Machines.
If an health check override is defined and remediation or remediation.templateRef is not set,
the OwnerRemediated condition will be set on unhealthy Machines to trigger remediation via
the owner of the Machines, for example a MachineSet or a KubeadmControlPlane.
MinProperties: 1
Optional: {}

ControlPlaneTopologyHealthCheckChecks

ControlPlaneTopologyHealthCheckChecks are the checks that are used to evaluate if a control plane Machine is healthy.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
nodeStartupTimeoutSeconds integernodeStartupTimeoutSeconds allows to set the maximum time for MachineHealthCheck
to consider a Machine unhealthy if a corresponding Node isn’t associated
through a Spec.ProviderID field.
The duration set in this field is compared to the greatest of:
- Cluster’s infrastructure ready condition timestamp (if and when available)
- Control Plane’s initialized condition timestamp (if and when available)
- Machine’s infrastructure ready condition timestamp (if and when available)
- Machine’s metadata creation timestamp
Defaults to 10 minutes.
If you wish to disable this feature, set the value explicitly to 0.
Minimum: 0
Optional: {}
unhealthyNodeConditions UnhealthyNodeCondition arrayunhealthyNodeConditions contains a list of conditions that determine
whether a node is considered unhealthy. The conditions are combined in a
logical OR, i.e. if any of the conditions is met, the node is unhealthy.
MaxItems: 100
MinItems: 1
Optional: {}
unhealthyMachineConditions UnhealthyMachineCondition arrayunhealthyMachineConditions contains a list of the machine conditions that determine
whether a machine is considered unhealthy. The conditions are combined in a
logical OR, i.e. if any of the conditions is met, the machine is unhealthy.
MaxItems: 100
MinItems: 1
Optional: {}

ControlPlaneTopologyHealthCheckRemediation

ControlPlaneTopologyHealthCheckRemediation configures if and how remediations are triggered if a control plane Machine is unhealthy.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
triggerIf ControlPlaneTopologyHealthCheckRemediationTriggerIftriggerIf configures if remediations are triggered.
If this field is not set, remediations are always triggered.
MinProperties: 1
Optional: {}
templateRef MachineHealthCheckRemediationTemplateReferencetemplateRef is a reference to a remediation template
provided by an infrastructure provider.
This field is completely optional, when filled, the MachineHealthCheck controller
creates a new object from the template referenced and hands off remediation of the machine to
a controller that lives outside of Cluster API.
Optional: {}

ControlPlaneTopologyHealthCheckRemediationTriggerIf

ControlPlaneTopologyHealthCheckRemediationTriggerIf configures if remediations are triggered.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
unhealthyLessThanOrEqualTo IntOrStringunhealthyLessThanOrEqualTo specifies that remediations are only triggered if the number of
unhealthy Machines is less than or equal to the configured value.
unhealthyInRange takes precedence if set.
Optional: {}
unhealthyInRange stringunhealthyInRange specifies that remediations are only triggered if the number of
unhealthy Machines is in the configured range.
Takes precedence over unhealthyLessThanOrEqualTo.
Eg. “[3-5]“ - This means that remediation will be allowed only when:
(a) there are at least 3 unhealthy Machines (and)
(b) there are at most 5 unhealthy Machines
MaxLength: 32
MinLength: 1
Pattern: ^\[[0-9]+-[0-9]+\]$
Optional: {}

ControlPlaneTopologyMachineDeletionSpec

ControlPlaneTopologyMachineDeletionSpec contains configuration options for Machine deletion.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
nodeDrainTimeoutSeconds integernodeDrainTimeoutSeconds is the total amount of time that the controller will spend on draining a node.
The default value is 0, meaning that the node can be drained without any time limitations.
NOTE: nodeDrainTimeoutSeconds is different from kubectl drain --timeout
Minimum: 0
Optional: {}
nodeVolumeDetachTimeoutSeconds integernodeVolumeDetachTimeoutSeconds is the total amount of time that the controller will spend on waiting for all volumes
to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations.
Minimum: 0
Optional: {}
nodeDeletionTimeoutSeconds integernodeDeletionTimeoutSeconds defines how long the controller will attempt to delete the Node that the Machine
hosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely.
Defaults to 10 seconds.
Minimum: 0
Optional: {}

ControlPlaneTopologyRolloutSpec

ControlPlaneTopologyRolloutSpec defines the rollout behavior.

Validation:

  • MinProperties: 1

Appears in:

ControlPlaneVariables

ControlPlaneVariables can be used to provide variables for the ControlPlane.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
overrides ClusterVariable arrayoverrides can be used to override Cluster level variables.MaxItems: 1000
MinItems: 1
Optional: {}

ExternalPatchDefinition

ExternalPatchDefinition defines an external patch. Note: At least one of GeneratePatchesExtension or ValidateTopologyExtension must be set.

Appears in:

FieldDescriptionDefaultValidation
generatePatchesExtension stringgeneratePatchesExtension references an extension which is called to generate patches.MaxLength: 512
MinLength: 1
Optional: {}
validateTopologyExtension stringvalidateTopologyExtension references an extension which is called to validate the topology.MaxLength: 512
MinLength: 1
Optional: {}
discoverVariablesExtension stringdiscoverVariablesExtension references an extension which is called to discover variables.MaxLength: 512
MinLength: 1
Optional: {}
settings object (keys:string, values:string)settings defines key value pairs to be passed to the extensions.
Values defined here take precedence over the values defined in the
corresponding ExtensionConfig.
Optional: {}

FailureDomain

FailureDomain is the Schema for Cluster API failure domains. It allows controllers to understand how many failure domains a cluster can optionally span across.

Appears in:

FieldDescriptionDefaultValidation
name stringname is the name of the failure domain.MaxLength: 256
MinLength: 1
Required: {}
controlPlane booleancontrolPlane determines if this failure domain is suitable for use by control plane machines.Optional: {}
attributes object (keys:string, values:string)attributes is a free form map of attributes an infrastructure provider might use or require.Optional: {}

FieldValueErrorReason

Underlying type: string

FieldValueErrorReason is a machine-readable value providing more detail about why a field failed the validation.

Appears in:

FieldDescription
FieldValueRequiredFieldValueRequired is used to report required values that are not
provided (e.g. empty strings, null values, or empty arrays).
FieldValueDuplicateFieldValueDuplicate is used to report collisions of values that must be
unique (e.g. unique IDs).
FieldValueInvalidFieldValueInvalid is used to report malformed values (e.g. failed regex
match, too long, out of bounds).
FieldValueForbiddenFieldValueForbidden is used to report valid (as per formatting rules)
values which would be accepted under some conditions, but which are not
permitted by the current conditions (such as security policy).

InfrastructureClass

InfrastructureClass defines the class for the infrastructure cluster.

Appears in:

FieldDescriptionDefaultValidation
templateRef ClusterClassTemplateReferencetemplateRef contains the reference to a provider-specific infrastructure cluster template.Required: {}
naming InfrastructureClassNamingSpecnaming allows changing the naming pattern used when creating the infrastructure cluster object.MinProperties: 1
Optional: {}

InfrastructureClassNamingSpec

InfrastructureClassNamingSpec defines the naming strategy for infrastructure objects.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
template stringtemplate defines the template to use for generating the name of the Infrastructure object.
If not defined, it will fallback to \{\{ .cluster.name \}\}-\{\{ .random \}\}.
If the templated string exceeds 63 characters, it will be trimmed to 58 characters and will
get concatenated with a random suffix of length 5.
The templating mechanism provides the following arguments:
* .cluster.name: The name of the cluster object.
* .random: A random alphanumeric string, without vowels, of length 5.
MaxLength: 1024
MinLength: 1
Optional: {}

JSONPatch

JSONPatch defines a JSON patch.

Appears in:

FieldDescriptionDefaultValidation
op stringop defines the operation of the patch.
Note: Only add, replace and remove are supported.
Enum: [add replace remove]
Required: {}
path stringpath defines the path of the patch.
Note: Only the spec of a template can be patched, thus the path has to start with /spec/.
Note: For now the only allowed array modifications are append and prepend, i.e.:
* for op: add: only index 0 (prepend) and - (append) are allowed
* for op: replace or remove: no indexes are allowed
MaxLength: 512
MinLength: 1
Required: {}
value JSONvalue defines the value of the patch.
Note: Either Value or ValueFrom is required for add and replace
operations. Only one of them is allowed to be set at the same time.
Note: We have to use apiextensionsv1.JSON instead of our JSON type,
because controller-tools has a hard-coded schema for apiextensionsv1.JSON
which cannot be produced by another type (unset type field).
Ref: https://github.com/kubernetes-sigs/controller-tools/blob/d0e03a142d0ecdd5491593e941ee1d6b5d91dba6/pkg/crd/known_types.go#L106-L111
Optional: {}
valueFrom JSONPatchValuevalueFrom defines the value of the patch.
Note: Either Value or ValueFrom is required for add and replace
operations. Only one of them is allowed to be set at the same time.
Optional: {}

JSONPatchValue

JSONPatchValue defines the value of a patch. Note: Only one of the fields is allowed to be set at the same time.

Appears in:

FieldDescriptionDefaultValidation
variable stringvariable is the variable to be used as value.
Variable can be one of the variables defined in .spec.variables or a builtin variable.
MaxLength: 256
MinLength: 1
Optional: {}
template stringtemplate is the Go template to be used to calculate the value.
A template can reference variables defined in .spec.variables and builtin variables.
Note: The template must evaluate to a valid YAML or JSON value.
MaxLength: 10240
MinLength: 1
Optional: {}

JSONSchemaProps

JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/). This struct has been initially copied from apiextensionsv1.JSONSchemaProps, but all fields which are not supported in CAPI have been removed.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
description stringdescription is a human-readable description of this variable.MaxLength: 4096
MinLength: 1
Optional: {}
example JSONexample is an example for this variable.Optional: {}
type stringtype is the type of the variable.
Valid values are: object, array, string, integer, number or boolean.
Enum: [object array string integer number boolean]
Optional: {}
properties object (keys:string, values:JSONSchemaProps)properties specifies fields of an object.
NOTE: Can only be set if type is object.
NOTE: Properties is mutually exclusive with AdditionalProperties.
NOTE: This field uses PreserveUnknownFields and Schemaless,
because recursive validation is not possible.
Schemaless: {}
Optional: {}
additionalProperties JSONSchemaPropsadditionalProperties specifies the schema of values in a map (keys are always strings).
NOTE: Can only be set if type is object.
NOTE: AdditionalProperties is mutually exclusive with Properties.
NOTE: This field uses PreserveUnknownFields and Schemaless,
because recursive validation is not possible.
MinProperties: 1
Schemaless: {}
Optional: {}
maxProperties integermaxProperties is the maximum amount of entries in a map or properties in an object.
NOTE: Can only be set if type is object.
Optional: {}
minProperties integerminProperties is the minimum amount of entries in a map or properties in an object.
NOTE: Can only be set if type is object.
Optional: {}
required string arrayrequired specifies which fields of an object are required.
NOTE: Can only be set if type is object.
MaxItems: 1000
MinItems: 1
items:MaxLength: 256
items:MinLength: 1
Optional: {}
items JSONSchemaPropsitems specifies fields of an array.
NOTE: Can only be set if type is array.
NOTE: This field uses PreserveUnknownFields and Schemaless,
because recursive validation is not possible.
MinProperties: 1
Schemaless: {}
Optional: {}
maxItems integermaxItems is the max length of an array variable.
NOTE: Can only be set if type is array.
Optional: {}
minItems integerminItems is the min length of an array variable.
NOTE: Can only be set if type is array.
Optional: {}
uniqueItems booleanuniqueItems specifies if items in an array must be unique.
NOTE: Can only be set if type is array.
Optional: {}
format stringformat is an OpenAPI v3 format string. Unknown formats are ignored.
For a list of supported formats please see: (of the k8s.io/apiextensions-apiserver version we’re currently using)
https://github.com/kubernetes/apiextensions-apiserver/blob/master/pkg/apiserver/validation/formats.go
NOTE: Can only be set if type is string.
MaxLength: 32
MinLength: 1
Optional: {}
maxLength integermaxLength is the max length of a string variable.
NOTE: Can only be set if type is string.
Optional: {}
minLength integerminLength is the min length of a string variable.
NOTE: Can only be set if type is string.
Optional: {}
pattern stringpattern is the regex which a string variable must match.
NOTE: Can only be set if type is string.
MaxLength: 512
MinLength: 1
Optional: {}
maximum integermaximum is the maximum of an integer or number variable.
If ExclusiveMaximum is false, the variable is valid if it is lower than, or equal to, the value of Maximum.
If ExclusiveMaximum is true, the variable is valid if it is strictly lower than the value of Maximum.
NOTE: Can only be set if type is integer or number.
Optional: {}
exclusiveMaximum booleanexclusiveMaximum specifies if the Maximum is exclusive.
NOTE: Can only be set if type is integer or number.
Optional: {}
minimum integerminimum is the minimum of an integer or number variable.
If ExclusiveMinimum is false, the variable is valid if it is greater than, or equal to, the value of Minimum.
If ExclusiveMinimum is true, the variable is valid if it is strictly greater than the value of Minimum.
NOTE: Can only be set if type is integer or number.
Optional: {}
exclusiveMinimum booleanexclusiveMinimum specifies if the Minimum is exclusive.
NOTE: Can only be set if type is integer or number.
Optional: {}
x-kubernetes-preserve-unknown-fields booleanx-kubernetes-preserve-unknown-fields allows setting fields in a variable object
which are not defined in the variable schema. This affects fields recursively,
except if nested properties or additionalProperties are specified in the schema.
Optional: {}
enum JSON arrayenum is the list of valid values of the variable.
NOTE: Can be set for all types.
MaxItems: 100
Optional: {}
default JSONdefault is the default value of the variable.
NOTE: Can be set for all types.
Optional: {}
x-kubernetes-validations ValidationRule arrayx-kubernetes-validations describes a list of validation rules written in the CEL expression language.MaxItems: 100
MinItems: 1
Optional: {}
x-metadata VariableSchemaMetadatax-metadata is the metadata of a variable or a nested field within a variable.
It can be used to add additional data for higher level tools.
MinProperties: 1
Optional: {}
x-kubernetes-int-or-string booleanx-kubernetes-int-or-string specifies that this value is
either an integer or a string. If this is true, an empty
type is allowed and type as child of anyOf is permitted
if following one of the following patterns:
1) anyOf:
- type: integer
- type: string
2) allOf:
- anyOf:
- type: integer
- type: string
- ... zero or more
Optional: {}
allOf JSONSchemaProps arrayallOf specifies that the variable must validate against all of the subschemas in the array.
NOTE: This field uses PreserveUnknownFields and Schemaless,
because recursive validation is not possible.
MinProperties: 1
Schemaless: {}
Optional: {}
oneOf JSONSchemaProps arrayoneOf specifies that the variable must validate against exactly one of the subschemas in the array.
NOTE: This field uses PreserveUnknownFields and Schemaless,
because recursive validation is not possible.
MinProperties: 1
Schemaless: {}
Optional: {}
anyOf JSONSchemaProps arrayanyOf specifies that the variable must validate against one or more of the subschemas in the array.
NOTE: This field uses PreserveUnknownFields and Schemaless,
because recursive validation is not possible.
MinProperties: 1
Schemaless: {}
Optional: {}
not JSONSchemaPropsnot specifies that the variable must not validate against the subschema.
NOTE: This field uses PreserveUnknownFields and Schemaless,
because recursive validation is not possible.
MinProperties: 1
Schemaless: {}
Optional: {}

Machine

Machine is the Schema for the machines API.

Appears in:

FieldDescriptionDefaultValidation
apiVersion stringcluster.x-k8s.io/v1beta2
kind stringMachine
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.MinProperties: 1
Optional: {}
spec MachineSpecspec is the desired state of Machine.Required: {}
status MachineStatusstatus is the observed state of Machine.MinProperties: 1
Optional: {}

MachineAddress

MachineAddress contains information for the node’s address.

Appears in:

FieldDescriptionDefaultValidation
type MachineAddressTypetype is the machine address type, one of Hostname, ExternalIP, InternalIP, ExternalDNS or InternalDNS.Enum: [Hostname ExternalIP InternalIP ExternalDNS InternalDNS]
Required: {}
address stringaddress is the machine address.MaxLength: 256
MinLength: 1
Required: {}

MachineAddressType

Underlying type: string

MachineAddressType describes a valid MachineAddress type.

Validation:

  • Enum: [Hostname ExternalIP InternalIP ExternalDNS InternalDNS]

Appears in:

FieldDescription
Hostname
ExternalIP
InternalIP
ExternalDNS
InternalDNS

MachineAddresses

Underlying type: MachineAddress

MachineAddresses is a slice of MachineAddress items to be used by infrastructure providers.

Validation:

  • MaxItems: 256

Appears in:

FieldDescriptionDefaultValidation
type MachineAddressTypetype is the machine address type, one of Hostname, ExternalIP, InternalIP, ExternalDNS or InternalDNS.Enum: [Hostname ExternalIP InternalIP ExternalDNS InternalDNS]
Required: {}
address stringaddress is the machine address.MaxLength: 256
MinLength: 1
Required: {}

MachineDeletionSpec

MachineDeletionSpec contains configuration options for Machine deletion.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
nodeDrainTimeoutSeconds integernodeDrainTimeoutSeconds is the total amount of time that the controller will spend on draining a node.
The default value is 0, meaning that the node can be drained without any time limitations.
NOTE: nodeDrainTimeoutSeconds is different from kubectl drain --timeout
Minimum: 0
Optional: {}
nodeVolumeDetachTimeoutSeconds integernodeVolumeDetachTimeoutSeconds is the total amount of time that the controller will spend on waiting for all volumes
to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations.
Minimum: 0
Optional: {}
nodeDeletionTimeoutSeconds integernodeDeletionTimeoutSeconds defines how long the controller will attempt to delete the Node that the Machine
hosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely.
Defaults to 10 seconds.
Minimum: 0
Optional: {}

MachineDeletionStatus

MachineDeletionStatus is the deletion state of the Machine.

Appears in:

MachineDeployment

MachineDeployment is the Schema for the machinedeployments API.

Appears in:

FieldDescriptionDefaultValidation
apiVersion stringcluster.x-k8s.io/v1beta2
kind stringMachineDeployment
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.MinProperties: 1
Optional: {}
spec MachineDeploymentSpecspec is the desired state of MachineDeployment.Required: {}
status MachineDeploymentStatusstatus is the observed state of MachineDeployment.MinProperties: 1
Optional: {}

MachineDeploymentClass

MachineDeploymentClass serves as a template to define a set of worker nodes of the cluster provisioned using the ClusterClass.

Appears in:

FieldDescriptionDefaultValidation
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.MinProperties: 1
Optional: {}
class stringclass denotes a type of worker node present in the cluster,
this name MUST be unique within a ClusterClass and can be referenced
in the Cluster to create a managed MachineDeployment.
MaxLength: 256
MinLength: 1
Required: {}
bootstrap MachineDeploymentClassBootstrapTemplatebootstrap contains the bootstrap template reference to be used
for the creation of worker Machines.
Required: {}
infrastructure MachineDeploymentClassInfrastructureTemplateinfrastructure contains the infrastructure template reference to be used
for the creation of worker Machines.
Required: {}
healthCheck MachineDeploymentClassHealthCheckhealthCheck defines a MachineHealthCheck for this MachineDeploymentClass.MinProperties: 1
Optional: {}
failureDomain stringfailureDomain is the failure domain the machines will be created in.
Must match the name of a FailureDomain from the Cluster status.
NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass.
MaxLength: 256
MinLength: 1
Optional: {}
naming MachineDeploymentClassNamingSpecnaming allows changing the naming pattern used when creating the MachineDeployment.MinProperties: 1
Optional: {}
deletion MachineDeploymentClassMachineDeletionSpecdeletion contains configuration options for Machine deletion.MinProperties: 1
Optional: {}
taints MachineTaint arraytaints are the node taints that Cluster API will manage.
This list is not necessarily complete: other Kubernetes components may add or remove other taints from nodes,
e.g. the node controller might add the node.kubernetes.io/not-ready taint.
Only those taints defined in this list will be added or removed by core Cluster API controllers.
There can be at most 64 taints.
A pod would have to tolerate all existing taints to run on the corresponding node.
NOTE: This list is implemented as a “map” type, meaning that individual elements can be managed by different owners.
MaxItems: 64
MinItems: 1
Optional: {}
minReadySeconds integerminReadySeconds is the minimum number of seconds for which a newly created machine should
be ready.
Defaults to 0 (machine will be considered available as soon as it
is ready)
NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass.
Minimum: 0
Optional: {}
readinessGates MachineReadinessGate arrayreadinessGates specifies additional conditions to include when evaluating Machine Ready condition.
This field can be used e.g. to instruct the machine controller to include in the computation for Machine’s ready
computation a condition, managed by an external controllers, reporting the status of special software/hardware installed on the Machine.
NOTE: If a Cluster defines a custom list of readinessGates for a MachineDeployment using this MachineDeploymentClass,
such list overrides readinessGates defined in this field.
MaxItems: 32
MinItems: 1
Optional: {}
rollout MachineDeploymentClassRolloutSpecrollout allows you to configure the behaviour of rolling updates to the MachineDeployment Machines.
It allows you to define the strategy used during rolling replacements.
MinProperties: 1
Optional: {}

MachineDeploymentClassBootstrapTemplate

MachineDeploymentClassBootstrapTemplate defines the BootstrapTemplate for a MachineDeployment.

Appears in:

FieldDescriptionDefaultValidation
templateRef ClusterClassTemplateReferencetemplateRef is a required reference to the BootstrapTemplate for a MachineDeployment.Required: {}

MachineDeploymentClassHealthCheck

MachineDeploymentClassHealthCheck defines a MachineHealthCheck for MachineDeployment machines.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
checks MachineDeploymentClassHealthCheckCheckschecks are the checks that are used to evaluate if a Machine is healthy.
Independent of this configuration the MachineHealthCheck controller will always
flag Machines with cluster.x-k8s.io/remediate-machine annotation and
Machines with deleted Nodes as unhealthy.
Furthermore, if checks.nodeStartupTimeoutSeconds is not set it
is defaulted to 10 minutes and evaluated accordingly.
MinProperties: 1
Optional: {}
remediation MachineDeploymentClassHealthCheckRemediationremediation configures if and how remediations are triggered if a Machine is unhealthy.
If remediation or remediation.triggerIf is not set,
remediation will always be triggered for unhealthy Machines.
If remediation or remediation.templateRef is not set,
the OwnerRemediated condition will be set on unhealthy Machines to trigger remediation via
the owner of the Machines, for example a MachineSet or a KubeadmControlPlane.
MinProperties: 1
Optional: {}

MachineDeploymentClassHealthCheckChecks

MachineDeploymentClassHealthCheckChecks are the checks that are used to evaluate if a MachineDeployment Machine is healthy.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
nodeStartupTimeoutSeconds integernodeStartupTimeoutSeconds allows to set the maximum time for MachineHealthCheck
to consider a Machine unhealthy if a corresponding Node isn’t associated
through a Spec.ProviderID field.
The duration set in this field is compared to the greatest of:
- Cluster’s infrastructure ready condition timestamp (if and when available)
- Control Plane’s initialized condition timestamp (if and when available)
- Machine’s infrastructure ready condition timestamp (if and when available)
- Machine’s metadata creation timestamp
Defaults to 10 minutes.
If you wish to disable this feature, set the value explicitly to 0.
Minimum: 0
Optional: {}
unhealthyNodeConditions UnhealthyNodeCondition arrayunhealthyNodeConditions contains a list of conditions that determine
whether a node is considered unhealthy. The conditions are combined in a
logical OR, i.e. if any of the conditions is met, the node is unhealthy.
MaxItems: 100
MinItems: 1
Optional: {}
unhealthyMachineConditions UnhealthyMachineCondition arrayunhealthyMachineConditions contains a list of the machine conditions that determine
whether a machine is considered unhealthy. The conditions are combined in a
logical OR, i.e. if any of the conditions is met, the machine is unhealthy.
MaxItems: 100
MinItems: 1
Optional: {}

MachineDeploymentClassHealthCheckRemediation

MachineDeploymentClassHealthCheckRemediation configures if and how remediations are triggered if a MachineDeployment Machine is unhealthy.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
maxInFlight IntOrStringmaxInFlight determines how many in flight remediations should happen at the same time.
Remediation only happens on the MachineSet with the most current revision, while
older MachineSets (usually present during rollout operations) aren’t allowed to remediate.
Note: In general (independent of remediations), unhealthy machines are always
prioritized during scale down operations over healthy ones.
MaxInFlight can be set to a fixed number or a percentage.
Example: when this is set to 20%, the MachineSet controller deletes at most 20% of
the desired replicas.
If not set, remediation is limited to all machines (bounded by replicas)
under the active MachineSet’s management.
Optional: {}
triggerIf MachineDeploymentClassHealthCheckRemediationTriggerIftriggerIf configures if remediations are triggered.
If this field is not set, remediations are always triggered.
MinProperties: 1
Optional: {}
templateRef MachineHealthCheckRemediationTemplateReferencetemplateRef is a reference to a remediation template
provided by an infrastructure provider.
This field is completely optional, when filled, the MachineHealthCheck controller
creates a new object from the template referenced and hands off remediation of the machine to
a controller that lives outside of Cluster API.
Optional: {}

MachineDeploymentClassHealthCheckRemediationTriggerIf

MachineDeploymentClassHealthCheckRemediationTriggerIf configures if remediations are triggered.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
unhealthyLessThanOrEqualTo IntOrStringunhealthyLessThanOrEqualTo specifies that remediations are only triggered if the number of
unhealthy Machines is less than or equal to the configured value.
unhealthyInRange takes precedence if set.
Optional: {}
unhealthyInRange stringunhealthyInRange specifies that remediations are only triggered if the number of
unhealthy Machines is in the configured range.
Takes precedence over unhealthyLessThanOrEqualTo.
Eg. “[3-5]“ - This means that remediation will be allowed only when:
(a) there are at least 3 unhealthy Machines (and)
(b) there are at most 5 unhealthy Machines
MaxLength: 32
MinLength: 1
Pattern: ^\[[0-9]+-[0-9]+\]$
Optional: {}

MachineDeploymentClassInfrastructureTemplate

MachineDeploymentClassInfrastructureTemplate defines the InfrastructureTemplate for a MachineDeployment.

Appears in:

FieldDescriptionDefaultValidation
templateRef ClusterClassTemplateReferencetemplateRef is a required reference to the InfrastructureTemplate for a MachineDeployment.Required: {}

MachineDeploymentClassMachineDeletionSpec

MachineDeploymentClassMachineDeletionSpec contains configuration options for Machine deletion.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
order MachineSetDeletionOrderorder defines the order in which Machines are deleted when downscaling.
Defaults to “Random”. Valid values are “Random, “Newest”, “Oldest”
Enum: [Random Newest Oldest]
Optional: {}
nodeDrainTimeoutSeconds integernodeDrainTimeoutSeconds is the total amount of time that the controller will spend on draining a node.
The default value is 0, meaning that the node can be drained without any time limitations.
NOTE: nodeDrainTimeoutSeconds is different from kubectl drain --timeout
NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass.
Minimum: 0
Optional: {}
nodeVolumeDetachTimeoutSeconds integernodeVolumeDetachTimeoutSeconds is the total amount of time that the controller will spend on waiting for all volumes
to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations.
NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass.
Minimum: 0
Optional: {}
nodeDeletionTimeoutSeconds integernodeDeletionTimeoutSeconds defines how long the controller will attempt to delete the Node that the Machine
hosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely.
Defaults to 10 seconds.
NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass.
Minimum: 0
Optional: {}

MachineDeploymentClassNamingSpec

MachineDeploymentClassNamingSpec defines the naming strategy for machine deployment objects.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
template stringtemplate defines the template to use for generating the name of the MachineDeployment object.
If not defined, it will fallback to \{\{ .cluster.name \}\}-\{\{ .machineDeployment.topologyName \}\}-\{\{ .random \}\}.
If the templated string exceeds 63 characters, it will be trimmed to 58 characters and will
get concatenated with a random suffix of length 5.
The templating mechanism provides the following arguments:
* .cluster.name: The name of the cluster object.
* .random: A random alphanumeric string, without vowels, of length 5.
* .machineDeployment.topologyName: The name of the MachineDeployment topology (Cluster.spec.topology.workers.machineDeployments[].name).
MaxLength: 1024
MinLength: 1
Optional: {}

MachineDeploymentClassRolloutSpec

MachineDeploymentClassRolloutSpec defines the rollout behavior.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
strategy MachineDeploymentClassRolloutStrategystrategy specifies how to roll out control plane Machines.MinProperties: 1
Optional: {}

MachineDeploymentClassRolloutStrategy

MachineDeploymentClassRolloutStrategy describes how to replace existing machines with new ones.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
type MachineDeploymentRolloutStrategyTypetype of rollout. Allowed values are RollingUpdate and OnDelete.
Default is RollingUpdate.
Enum: [RollingUpdate OnDelete]
Required: {}
rollingUpdate MachineDeploymentClassRolloutStrategyRollingUpdaterollingUpdate is the rolling update config params. Present only if
type = RollingUpdate.
MinProperties: 1
Optional: {}

MachineDeploymentClassRolloutStrategyRollingUpdate

MachineDeploymentClassRolloutStrategyRollingUpdate is used to control the desired behavior of rolling update.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
maxUnavailable IntOrStringmaxUnavailable is the maximum number of machines that can be unavailable during the update.
Value can be an absolute number (ex: 5) or a percentage of desired
machines (ex: 10%).
Absolute number is calculated from percentage by rounding down.
This can not be 0 if MaxSurge is 0.
Defaults to 0.
Example: when this is set to 30%, the old MachineSet can be scaled
down to 70% of desired machines immediately when the rolling update
starts. Once new machines are ready, old MachineSet can be scaled
down further, followed by scaling up the new MachineSet, ensuring
that the total number of machines available at all times
during the update is at least 70% of desired machines.
Optional: {}
maxSurge IntOrStringmaxSurge is the maximum number of machines that can be scheduled above the
desired number of machines.
Value can be an absolute number (ex: 5) or a percentage of
desired machines (ex: 10%).
This can not be 0 if MaxUnavailable is 0.
Absolute number is calculated from percentage by rounding up.
Defaults to 1.
Example: when this is set to 30%, the new MachineSet can be scaled
up immediately when the rolling update starts, such that the total
number of old and new machines do not exceed 130% of desired
machines. Once old machines have been killed, new MachineSet can
be scaled up further, ensuring that total number of machines running
at any time during the update is at most 130% of desired machines.
Optional: {}

MachineDeploymentDeletionSpec

MachineDeploymentDeletionSpec contains configuration options for MachineDeployment deletion.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
order MachineSetDeletionOrderorder defines the order in which Machines are deleted when downscaling.
Defaults to “Random”. Valid values are “Random, “Newest”, “Oldest”
Enum: [Random Newest Oldest]
Optional: {}

MachineDeploymentDeprecatedStatus

MachineDeploymentDeprecatedStatus groups all the status fields that are deprecated and will be removed in a future version. See https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more context.

Appears in:

FieldDescriptionDefaultValidation
v1beta1 MachineDeploymentV1Beta1DeprecatedStatusv1beta1 groups all the status fields that are deprecated and will be removed when support for v1beta1 will be dropped.Optional: {}

MachineDeploymentList

MachineDeploymentList contains a list of MachineDeployment.

FieldDescriptionDefaultValidation
apiVersion stringcluster.x-k8s.io/v1beta2
kind stringMachineDeploymentList
metadata ListMetaRefer to Kubernetes API documentation for fields of metadata.Optional: {}
items MachineDeployment arrayitems is the list of MachineDeployments.

MachineDeploymentRemediationSpec

MachineDeploymentRemediationSpec controls how unhealthy Machines are remediated.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
maxInFlight IntOrStringmaxInFlight determines how many in flight remediations should happen at the same time.
Remediation only happens on the MachineSet with the most current revision, while
older MachineSets (usually present during rollout operations) aren’t allowed to remediate.
Note: In general (independent of remediations), unhealthy machines are always
prioritized during scale down operations over healthy ones.
MaxInFlight can be set to a fixed number or a percentage.
Example: when this is set to 20%, the MachineSet controller deletes at most 20% of
the desired replicas.
If not set, remediation is limited to all machines (bounded by replicas)
under the active MachineSet’s management.
Optional: {}

MachineDeploymentRolloutSpec

MachineDeploymentRolloutSpec defines the rollout behavior.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
strategy MachineDeploymentRolloutStrategystrategy specifies how to roll out control plane Machines.MinProperties: 1
Optional: {}

MachineDeploymentRolloutStrategy

MachineDeploymentRolloutStrategy describes how to replace existing machines with new ones.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
type MachineDeploymentRolloutStrategyTypetype of rollout. Allowed values are RollingUpdate and OnDelete.
Default is RollingUpdate.
Enum: [RollingUpdate OnDelete]
Required: {}
rollingUpdate MachineDeploymentRolloutStrategyRollingUpdaterollingUpdate is the rolling update config params. Present only if
type = RollingUpdate.
MinProperties: 1
Optional: {}

MachineDeploymentRolloutStrategyRollingUpdate

MachineDeploymentRolloutStrategyRollingUpdate is used to control the desired behavior of rolling update.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
maxUnavailable IntOrStringmaxUnavailable is the maximum number of machines that can be unavailable during the update.
Value can be an absolute number (ex: 5) or a percentage of desired
machines (ex: 10%).
Absolute number is calculated from percentage by rounding down.
This can not be 0 if MaxSurge is 0.
Defaults to 0.
Example: when this is set to 30%, the old MachineSet can be scaled
down to 70% of desired machines immediately when the rolling update
starts. Once new machines are ready, old MachineSet can be scaled
down further, followed by scaling up the new MachineSet, ensuring
that the total number of machines available at all times
during the update is at least 70% of desired machines.
Optional: {}
maxSurge IntOrStringmaxSurge is the maximum number of machines that can be scheduled above the
desired number of machines.
Value can be an absolute number (ex: 5) or a percentage of
desired machines (ex: 10%).
This can not be 0 if MaxUnavailable is 0.
Absolute number is calculated from percentage by rounding up.
Defaults to 1.
Example: when this is set to 30%, the new MachineSet can be scaled
up immediately when the rolling update starts, such that the total
number of old and new machines do not exceed 130% of desired
machines. Once old machines have been killed, new MachineSet can
be scaled up further, ensuring that total number of machines running
at any time during the update is at most 130% of desired machines.
Optional: {}

MachineDeploymentRolloutStrategyType

Underlying type: string

MachineDeploymentRolloutStrategyType defines the type of MachineDeployment rollout strategies.

Validation:

  • Enum: [RollingUpdate OnDelete]

Appears in:

FieldDescription
RollingUpdateRollingUpdateMachineDeploymentStrategyType replaces the old MachineSet by new one using rolling update
i.e. gradually scale down the old MachineSet and scale up the new one.
OnDeleteOnDeleteMachineDeploymentStrategyType replaces old MachineSets when the deletion of the associated machines are completed.

MachineDeploymentSpec

MachineDeploymentSpec defines the desired state of MachineDeployment.

Appears in:

FieldDescriptionDefaultValidation
clusterName stringclusterName is the name of the Cluster this object belongs to.MaxLength: 63
MinLength: 1
Required: {}
replicas integerreplicas is the number of desired machines.
This is a pointer to distinguish between explicit zero and not specified.
Defaults to:
* if the Kubernetes autoscaler min size and max size annotations are set:
- if it’s a new MachineDeployment, use min size
- if the replicas field of the old MachineDeployment is < min size, use min size
- if the replicas field of the old MachineDeployment is > max size, use max size
- if the replicas field of the old MachineDeployment is in the (min size, max size) range, keep the value from the oldMD
* otherwise use 1
Note: Defaulting will be run whenever the replicas field is not set:
* A new MachineDeployment is created with replicas not set.
* On an existing MachineDeployment the replicas field was first set and is now unset.
Those cases are especially relevant for the following Kubernetes autoscaler use cases:
* A new MachineDeployment is created and replicas should be managed by the autoscaler
* An existing MachineDeployment which initially wasn’t controlled by the autoscaler
should be later controlled by the autoscaler
Optional: {}
rollout MachineDeploymentRolloutSpecrollout allows you to configure the behaviour of rolling updates to the MachineDeployment Machines.
It allows you to require that all Machines are replaced after a certain time,
and allows you to define the strategy used during rolling replacements.
MinProperties: 1
Optional: {}
selector LabelSelectorselector is the label selector for machines. Existing MachineSets whose machines are
selected by this will be the ones affected by this deployment.
It must match the machine template’s labels.
Required: {}
template MachineTemplateSpectemplate describes the machines that will be created.Required: {}
machineNaming MachineNamingSpecmachineNaming allows changing the naming pattern used when creating Machines.
Note: InfraMachines & BootstrapConfigs will use the same name as the corresponding Machines.
MinProperties: 1
Optional: {}
remediation MachineDeploymentRemediationSpecremediation controls how unhealthy Machines are remediated.MinProperties: 1
Optional: {}
deletion MachineDeploymentDeletionSpecdeletion contains configuration options for MachineDeployment deletion.MinProperties: 1
Optional: {}
paused booleanpaused indicates that the deployment is paused.Optional: {}

MachineDeploymentStatus

MachineDeploymentStatus defines the observed state of MachineDeployment.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
conditions Condition arrayconditions represents the observations of a MachineDeployment’s current state.
Known condition types are Available, MachinesReady, MachinesUpToDate, ScalingUp, ScalingDown, Remediating, Deleting, Paused.
MaxItems: 32
Optional: {}
observedGeneration integerobservedGeneration is the generation observed by the deployment controller.Minimum: 1
Optional: {}
selector stringselector is the same as the label selector but in the string format to avoid introspection
by clients. The string will be in the same format as the query-param syntax.
More info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors
MaxLength: 4096
MinLength: 1
Optional: {}
replicas integerreplicas is the total number of non-terminated machines targeted by this deployment
(their labels match the selector).
Optional: {}
readyReplicas integerreadyReplicas is the number of ready replicas for this MachineDeployment. A machine is considered ready when Machine’s Ready condition is true.Optional: {}
availableReplicas integeravailableReplicas is the number of available replicas for this MachineDeployment. A machine is considered available when Machine’s Available condition is true.Optional: {}
upToDateReplicas integerupToDateReplicas is the number of up-to-date replicas targeted by this deployment. A machine is considered up-to-date when Machine’s UpToDate condition is true.Optional: {}
phase stringphase represents the current phase of a MachineDeployment (ScalingUp, ScalingDown, Running, Failed, or Unknown).Enum: [ScalingUp ScalingDown Running Failed Unknown]
Optional: {}
deprecated MachineDeploymentDeprecatedStatusdeprecated groups all the status fields that are deprecated and will be removed when all the nested field are removed.Optional: {}

MachineDeploymentTopology

MachineDeploymentTopology specifies the different parameters for a set of worker nodes in the topology. This set of nodes is managed by a MachineDeployment object whose lifecycle is managed by the Cluster controller.

Appears in:

FieldDescriptionDefaultValidation
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.MinProperties: 1
Optional: {}
class stringclass is the name of the MachineDeploymentClass used to create the set of worker nodes.
This should match one of the deployment classes defined in the ClusterClass object
mentioned in the Cluster.Spec.Class field.
MaxLength: 256
MinLength: 1
Required: {}
name stringname is the unique identifier for this MachineDeploymentTopology.
The value is used with other unique identifiers to create a MachineDeployment’s Name
(e.g. cluster’s name, etc). In case the name is greater than the allowed maximum length,
the values are hashed together.
MaxLength: 63
MinLength: 1
Pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
Required: {}
failureDomain stringfailureDomain is the failure domain the machines will be created in.
Must match a key in the FailureDomains map stored on the cluster object.
MaxLength: 256
MinLength: 1
Optional: {}
replicas integerreplicas is the number of worker nodes belonging to this set.
If the value is nil, the MachineDeployment is created without the number of Replicas (defaulting to 1)
and it’s assumed that an external entity (like cluster autoscaler) is responsible for the management
of this value.
Optional: {}
healthCheck MachineDeploymentTopologyHealthCheckhealthCheck allows to enable, disable and override MachineDeployment health check
configuration from the ClusterClass for this MachineDeployment.
MinProperties: 1
Optional: {}
deletion MachineDeploymentTopologyMachineDeletionSpecdeletion contains configuration options for Machine deletion.MinProperties: 1
Optional: {}
taints MachineTaint arraytaints are the node taints that Cluster API will manage.
This list is not necessarily complete: other Kubernetes components may add or remove other taints from nodes,
e.g. the node controller might add the node.kubernetes.io/not-ready taint.
Only those taints defined in this list will be added or removed by core Cluster API controllers.
There can be at most 64 taints.
A pod would have to tolerate all existing taints to run on the corresponding node.
NOTE: This list is implemented as a “map” type, meaning that individual elements can be managed by different owners.
MaxItems: 64
MinItems: 1
Optional: {}
minReadySeconds integerminReadySeconds is the minimum number of seconds for which a newly created machine should
be ready.
Defaults to 0 (machine will be considered available as soon as it
is ready)
Minimum: 0
Optional: {}
readinessGates MachineReadinessGate arrayreadinessGates specifies additional conditions to include when evaluating Machine Ready condition.
This field can be used e.g. to instruct the machine controller to include in the computation for Machine’s ready
computation a condition, managed by an external controllers, reporting the status of special software/hardware installed on the Machine.
If this field is not defined, readinessGates from the corresponding MachineDeploymentClass will be used, if any.
MaxItems: 32
MinItems: 1
Optional: {}
rollout MachineDeploymentTopologyRolloutSpecrollout allows you to configure the behaviour of rolling updates to the MachineDeployment Machines.
It allows you to define the strategy used during rolling replacements.
MinProperties: 1
Optional: {}
variables MachineDeploymentVariablesvariables can be used to customize the MachineDeployment through patches.MinProperties: 1
Optional: {}

MachineDeploymentTopologyHealthCheck

MachineDeploymentTopologyHealthCheck defines a MachineHealthCheck for MachineDeployment machines.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
enabled booleanenabled controls if a MachineHealthCheck should be created for the target machines.
If false: No MachineHealthCheck will be created.
If not set(default): A MachineHealthCheck will be created if it is defined here or
in the associated ClusterClass. If no MachineHealthCheck is defined then none will be created.
If true: A MachineHealthCheck is guaranteed to be created. Cluster validation will
block if enable is true and no MachineHealthCheck definition is available.
Optional: {}
checks MachineDeploymentTopologyHealthCheckCheckschecks are the checks that are used to evaluate if a Machine is healthy.
If one of checks and remediation fields are set, the system assumes that an healthCheck override is defined,
and as a consequence the checks and remediation fields from Cluster will be used instead of the
corresponding fields in ClusterClass.
Independent of this configuration the MachineHealthCheck controller will always
flag Machines with cluster.x-k8s.io/remediate-machine annotation and
Machines with deleted Nodes as unhealthy.
Furthermore, if checks.nodeStartupTimeoutSeconds is not set it
is defaulted to 10 minutes and evaluated accordingly.
MinProperties: 1
Optional: {}
remediation MachineDeploymentTopologyHealthCheckRemediationremediation configures if and how remediations are triggered if a Machine is unhealthy.
If one of checks and remediation fields are set, the system assumes that an healthCheck override is defined,
and as a consequence the checks and remediation fields from cluster will be used instead of the
corresponding fields in ClusterClass.
If an health check override is defined and remediation or remediation.triggerIf is not set,
remediation will always be triggered for unhealthy Machines.
If an health check override is defined and remediation or remediation.templateRef is not set,
the OwnerRemediated condition will be set on unhealthy Machines to trigger remediation via
the owner of the Machines, for example a MachineSet or a KubeadmControlPlane.
MinProperties: 1
Optional: {}

MachineDeploymentTopologyHealthCheckChecks

MachineDeploymentTopologyHealthCheckChecks are the checks that are used to evaluate if a MachineDeployment Machine is healthy.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
nodeStartupTimeoutSeconds integernodeStartupTimeoutSeconds allows to set the maximum time for MachineHealthCheck
to consider a Machine unhealthy if a corresponding Node isn’t associated
through a Spec.ProviderID field.
The duration set in this field is compared to the greatest of:
- Cluster’s infrastructure ready condition timestamp (if and when available)
- Control Plane’s initialized condition timestamp (if and when available)
- Machine’s infrastructure ready condition timestamp (if and when available)
- Machine’s metadata creation timestamp
Defaults to 10 minutes.
If you wish to disable this feature, set the value explicitly to 0.
Minimum: 0
Optional: {}
unhealthyNodeConditions UnhealthyNodeCondition arrayunhealthyNodeConditions contains a list of conditions that determine
whether a node is considered unhealthy. The conditions are combined in a
logical OR, i.e. if any of the conditions is met, the node is unhealthy.
MaxItems: 100
MinItems: 1
Optional: {}
unhealthyMachineConditions UnhealthyMachineCondition arrayunhealthyMachineConditions contains a list of the machine conditions that determine
whether a machine is considered unhealthy. The conditions are combined in a
logical OR, i.e. if any of the conditions is met, the machine is unhealthy.
MaxItems: 100
MinItems: 1
Optional: {}

MachineDeploymentTopologyHealthCheckRemediation

MachineDeploymentTopologyHealthCheckRemediation configures if and how remediations are triggered if a MachineDeployment Machine is unhealthy.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
maxInFlight IntOrStringmaxInFlight determines how many in flight remediations should happen at the same time.
Remediation only happens on the MachineSet with the most current revision, while
older MachineSets (usually present during rollout operations) aren’t allowed to remediate.
Note: In general (independent of remediations), unhealthy machines are always
prioritized during scale down operations over healthy ones.
MaxInFlight can be set to a fixed number or a percentage.
Example: when this is set to 20%, the MachineSet controller deletes at most 20% of
the desired replicas.
If not set, remediation is limited to all machines (bounded by replicas)
under the active MachineSet’s management.
Optional: {}
triggerIf MachineDeploymentTopologyHealthCheckRemediationTriggerIftriggerIf configures if remediations are triggered.
If this field is not set, remediations are always triggered.
MinProperties: 1
Optional: {}
templateRef MachineHealthCheckRemediationTemplateReferencetemplateRef is a reference to a remediation template
provided by an infrastructure provider.
This field is completely optional, when filled, the MachineHealthCheck controller
creates a new object from the template referenced and hands off remediation of the machine to
a controller that lives outside of Cluster API.
Optional: {}

MachineDeploymentTopologyHealthCheckRemediationTriggerIf

MachineDeploymentTopologyHealthCheckRemediationTriggerIf configures if remediations are triggered.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
unhealthyLessThanOrEqualTo IntOrStringunhealthyLessThanOrEqualTo specifies that remediations are only triggered if the number of
unhealthy Machines is less than or equal to the configured value.
unhealthyInRange takes precedence if set.
Optional: {}
unhealthyInRange stringunhealthyInRange specifies that remediations are only triggered if the number of
unhealthy Machines is in the configured range.
Takes precedence over unhealthyLessThanOrEqualTo.
Eg. “[3-5]“ - This means that remediation will be allowed only when:
(a) there are at least 3 unhealthy Machines (and)
(b) there are at most 5 unhealthy Machines
MaxLength: 32
MinLength: 1
Pattern: ^\[[0-9]+-[0-9]+\]$
Optional: {}

MachineDeploymentTopologyMachineDeletionSpec

MachineDeploymentTopologyMachineDeletionSpec contains configuration options for Machine deletion.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
order MachineSetDeletionOrderorder defines the order in which Machines are deleted when downscaling.
Defaults to “Random”. Valid values are “Random, “Newest”, “Oldest”
Enum: [Random Newest Oldest]
Optional: {}
nodeDrainTimeoutSeconds integernodeDrainTimeoutSeconds is the total amount of time that the controller will spend on draining a node.
The default value is 0, meaning that the node can be drained without any time limitations.
NOTE: nodeDrainTimeoutSeconds is different from kubectl drain --timeout
Minimum: 0
Optional: {}
nodeVolumeDetachTimeoutSeconds integernodeVolumeDetachTimeoutSeconds is the total amount of time that the controller will spend on waiting for all volumes
to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations.
Minimum: 0
Optional: {}
nodeDeletionTimeoutSeconds integernodeDeletionTimeoutSeconds defines how long the controller will attempt to delete the Node that the Machine
hosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely.
Defaults to 10 seconds.
Minimum: 0
Optional: {}

MachineDeploymentTopologyRolloutSpec

MachineDeploymentTopologyRolloutSpec defines the rollout behavior.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
strategy MachineDeploymentTopologyRolloutStrategystrategy specifies how to roll out control plane Machines.MinProperties: 1
Optional: {}

MachineDeploymentTopologyRolloutStrategy

MachineDeploymentTopologyRolloutStrategy describes how to replace existing machines with new ones.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
type MachineDeploymentRolloutStrategyTypetype of rollout. Allowed values are RollingUpdate and OnDelete.
Default is RollingUpdate.
Enum: [RollingUpdate OnDelete]
Required: {}
rollingUpdate MachineDeploymentTopologyRolloutStrategyRollingUpdaterollingUpdate is the rolling update config params. Present only if
type = RollingUpdate.
MinProperties: 1
Optional: {}

MachineDeploymentTopologyRolloutStrategyRollingUpdate

MachineDeploymentTopologyRolloutStrategyRollingUpdate is used to control the desired behavior of rolling update.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
maxUnavailable IntOrStringmaxUnavailable is the maximum number of machines that can be unavailable during the update.
Value can be an absolute number (ex: 5) or a percentage of desired
machines (ex: 10%).
Absolute number is calculated from percentage by rounding down.
This can not be 0 if MaxSurge is 0.
Defaults to 0.
Example: when this is set to 30%, the old MachineSet can be scaled
down to 70% of desired machines immediately when the rolling update
starts. Once new machines are ready, old MachineSet can be scaled
down further, followed by scaling up the new MachineSet, ensuring
that the total number of machines available at all times
during the update is at least 70% of desired machines.
Optional: {}
maxSurge IntOrStringmaxSurge is the maximum number of machines that can be scheduled above the
desired number of machines.
Value can be an absolute number (ex: 5) or a percentage of
desired machines (ex: 10%).
This can not be 0 if MaxUnavailable is 0.
Absolute number is calculated from percentage by rounding up.
Defaults to 1.
Example: when this is set to 30%, the new MachineSet can be scaled
up immediately when the rolling update starts, such that the total
number of old and new machines do not exceed 130% of desired
machines. Once old machines have been killed, new MachineSet can
be scaled up further, ensuring that total number of machines running
at any time during the update is at most 130% of desired machines.
Optional: {}

MachineDeploymentV1Beta1DeprecatedStatus

MachineDeploymentV1Beta1DeprecatedStatus groups all the status fields that are deprecated and will be removed when support for v1beta1 will be dropped. See https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more context.

Appears in:

FieldDescriptionDefaultValidation
conditions Conditionsconditions defines current service state of the MachineDeployment.
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
Optional: {}
updatedReplicas integerupdatedReplicas is the total number of non-terminated machines targeted by this deployment
that have the desired template spec.
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
Optional: {}
readyReplicas integerreadyReplicas is the total number of ready machines targeted by this deployment.
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
Optional: {}
availableReplicas integeravailableReplicas is the total number of available machines (ready for at least minReadySeconds)
targeted by this deployment.
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
Optional: {}
unavailableReplicas integerunavailableReplicas is the total number of unavailable machines targeted by this deployment.
This is the total number of machines that are still required for
the deployment to have 100% available capacity. They may either
be machines that are running but not yet available or machines
that still have not been created.
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
Optional: {}

MachineDeploymentVariables

MachineDeploymentVariables can be used to provide variables for a specific MachineDeployment.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
overrides ClusterVariable arrayoverrides can be used to override Cluster level variables.MaxItems: 1000
MinItems: 1
Optional: {}

MachineDeprecatedStatus

MachineDeprecatedStatus groups all the status fields that are deprecated and will be removed in a future version. See https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more context.

Appears in:

FieldDescriptionDefaultValidation
v1beta1 MachineV1Beta1DeprecatedStatusv1beta1 groups all the status fields that are deprecated and will be removed when support for v1beta1 will be dropped.
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
Optional: {}

MachineDrainRule

MachineDrainRule is the Schema for the MachineDrainRule API.

Appears in:

FieldDescriptionDefaultValidation
apiVersion stringcluster.x-k8s.io/v1beta2
kind stringMachineDrainRule
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.MinProperties: 1
Required: {}
spec MachineDrainRuleSpecspec defines the spec of a MachineDrainRule.Required: {}

MachineDrainRuleDrainBehavior

Underlying type: string

MachineDrainRuleDrainBehavior defines the drain behavior. Can be either “Drain”, “Skip”, or “WaitCompleted”.

Validation:

  • Enum: [Drain Skip WaitCompleted]

Appears in:

FieldDescription
DrainMachineDrainRuleDrainBehaviorDrain means a Pod should be drained.
SkipMachineDrainRuleDrainBehaviorSkip means the drain for a Pod should be skipped.
WaitCompletedMachineDrainRuleDrainBehaviorWaitCompleted means the Pod should not be evicted,
but overall drain should wait until the Pod completes.

MachineDrainRuleDrainConfig

MachineDrainRuleDrainConfig configures if and how Pods are drained.

Appears in:

FieldDescriptionDefaultValidation
behavior MachineDrainRuleDrainBehaviorbehavior defines the drain behavior.
Can be either “Drain”, “Skip”, or “WaitCompleted”.
“Drain” means that the Pods to which this MachineDrainRule applies will be drained.
If behavior is set to “Drain” the order in which Pods are drained can be configured
with the order field. When draining Pods of a Node the Pods will be grouped by order
and one group after another will be drained (by increasing order). Cluster API will
wait until all Pods of a group are terminated / removed from the Node before starting
with the next group.
“Skip” means that the Pods to which this MachineDrainRule applies will be skipped during drain.
“WaitCompleted” means that the pods to which this MachineDrainRule applies will never be evicted
and we wait for them to be completed, it is enforced that pods marked with this behavior always have Order=0.
Enum: [Drain Skip WaitCompleted]
Required: {}
order integerorder defines the order in which Pods are drained.
Pods with higher order are drained after Pods with lower order.
order can only be set if behavior is set to “Drain”.
If order is not set, 0 will be used.
Valid values for order are from -2147483648 to 2147483647 (inclusive).
Optional: {}

MachineDrainRuleList

MachineDrainRuleList contains a list of MachineDrainRules.

FieldDescriptionDefaultValidation
apiVersion stringcluster.x-k8s.io/v1beta2
kind stringMachineDrainRuleList
metadata ListMetaRefer to Kubernetes API documentation for fields of metadata.Required: {}
items MachineDrainRule arrayitems contains the items of the MachineDrainRuleList.

MachineDrainRuleMachineSelector

MachineDrainRuleMachineSelector defines to which Machines this MachineDrainRule should be applied.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
selector LabelSelectorselector is a label selector which selects Machines by their labels.
This field follows standard label selector semantics; if not present or
empty, it selects all Machines.
If clusterSelector is also set, then the selector as a whole selects
Machines matching selector belonging to Clusters selected by clusterSelector.
If clusterSelector is not set, it selects all Machines matching selector in
all Clusters.
Optional: {}
clusterSelector LabelSelectorclusterSelector is a label selector which selects Machines by the labels of
their Clusters.
This field follows standard label selector semantics; if not present or
empty, it selects Machines of all Clusters.
If selector is also set, then the selector as a whole selects
Machines matching selector belonging to Clusters selected by clusterSelector.
If selector is not set, it selects all Machines belonging to Clusters
selected by clusterSelector.
Optional: {}

MachineDrainRulePodSelector

MachineDrainRulePodSelector defines to which Pods this MachineDrainRule should be applied.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
selector LabelSelectorselector is a label selector which selects Pods by their labels.
This field follows standard label selector semantics; if not present or
empty, it selects all Pods.
If namespaceSelector is also set, then the selector as a whole selects
Pods matching selector in Namespaces selected by namespaceSelector.
If namespaceSelector is not set, it selects all Pods matching selector in
all Namespaces.
Optional: {}
namespaceSelector LabelSelectornamespaceSelector is a label selector which selects Pods by the labels of
their Namespaces.
This field follows standard label selector semantics; if not present or
empty, it selects Pods of all Namespaces.
If selector is also set, then the selector as a whole selects
Pods matching selector in Namespaces selected by namespaceSelector.
If selector is not set, it selects all Pods in Namespaces selected by
namespaceSelector.
Optional: {}

MachineDrainRuleSpec

MachineDrainRuleSpec defines the spec of a MachineDrainRule.

Appears in:

FieldDescriptionDefaultValidation
drain MachineDrainRuleDrainConfigdrain configures if and how Pods are drained.Required: {}
machines MachineDrainRuleMachineSelector arraymachines defines to which Machines this MachineDrainRule should be applied.
If machines is not set, the MachineDrainRule applies to all Machines in the Namespace.
If machines contains multiple selectors, the results are ORed.
Within a single Machine selector the results of selector and clusterSelector are ANDed.
Machines will be selected from all Clusters in the Namespace unless otherwise
restricted with the clusterSelector.
Example: Selects control plane Machines in all Clusters or
Machines with label “os” == “linux” in Clusters with label
“stage” == “production”.
- selector:
matchExpressions:
- key: cluster.x-k8s.io/control-plane
operator: Exists
- selector:
matchLabels:
os: linux
clusterSelector:
matchExpressions:
- key: stage
operator: In
values:
- production
MaxItems: 32
MinItems: 1
MinProperties: 1
Optional: {}
pods MachineDrainRulePodSelector arraypods defines to which Pods this MachineDrainRule should be applied.
If pods is not set, the MachineDrainRule applies to all Pods in all Namespaces.
If pods contains multiple selectors, the results are ORed.
Within a single Pod selector the results of selector and namespaceSelector are ANDed.
Pods will be selected from all Namespaces unless otherwise
restricted with the namespaceSelector.
Example: Selects Pods with label “app” == “logging” in all Namespaces or
Pods with label “app” == “prometheus” in the “monitoring”
Namespace.
- selector:
matchExpressions:
- key: app
operator: In
values:
- logging
- selector:
matchLabels:
app: prometheus
namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: monitoring
MaxItems: 32
MinItems: 1
MinProperties: 1
Optional: {}

MachineHealthCheck

MachineHealthCheck is the Schema for the machinehealthchecks API.

Appears in:

FieldDescriptionDefaultValidation
apiVersion stringcluster.x-k8s.io/v1beta2
kind stringMachineHealthCheck
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.MinProperties: 1
Optional: {}
spec MachineHealthCheckSpecspec is the specification of machine health check policyRequired: {}
status MachineHealthCheckStatusstatus is the most recently observed status of MachineHealthCheck resourceMinProperties: 1
Optional: {}

MachineHealthCheckChecks

MachineHealthCheckChecks are the checks that are used to evaluate if a Machine is healthy.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
nodeStartupTimeoutSeconds integernodeStartupTimeoutSeconds allows to set the maximum time for MachineHealthCheck
to consider a Machine unhealthy if a corresponding Node isn’t associated
through a Spec.ProviderID field.
The duration set in this field is compared to the greatest of:
- Cluster’s infrastructure ready condition timestamp (if and when available)
- Control Plane’s initialized condition timestamp (if and when available)
- Machine’s infrastructure ready condition timestamp (if and when available)
- Machine’s metadata creation timestamp
Defaults to 10 minutes.
If you wish to disable this feature, set the value explicitly to 0.
Minimum: 0
Optional: {}
unhealthyNodeConditions UnhealthyNodeCondition arrayunhealthyNodeConditions contains a list of conditions that determine
whether a node is considered unhealthy. The conditions are combined in a
logical OR, i.e. if any of the conditions is met, the node is unhealthy.
MaxItems: 100
MinItems: 1
Optional: {}
unhealthyMachineConditions UnhealthyMachineCondition arrayunhealthyMachineConditions contains a list of the machine conditions that determine
whether a machine is considered unhealthy. The conditions are combined in a
logical OR, i.e. if any of the conditions is met, the machine is unhealthy.
MaxItems: 100
MinItems: 1
Optional: {}

MachineHealthCheckDeprecatedStatus

MachineHealthCheckDeprecatedStatus groups all the status fields that are deprecated and will be removed in a future version. See https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more context.

Appears in:

FieldDescriptionDefaultValidation
v1beta1 MachineHealthCheckV1Beta1DeprecatedStatusv1beta1 groups all the status fields that are deprecated and will be removed when support for v1beta1 will be dropped.Optional: {}

MachineHealthCheckList

MachineHealthCheckList contains a list of MachineHealthCheck.

FieldDescriptionDefaultValidation
apiVersion stringcluster.x-k8s.io/v1beta2
kind stringMachineHealthCheckList
metadata ListMetaRefer to Kubernetes API documentation for fields of metadata.Optional: {}
items MachineHealthCheck arrayitems is the list of MachineHealthChecks.

MachineHealthCheckRemediation

MachineHealthCheckRemediation configures if and how remediations are triggered if a Machine is unhealthy.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
triggerIf MachineHealthCheckRemediationTriggerIftriggerIf configures if remediations are triggered.
If this field is not set, remediations are always triggered.
MinProperties: 1
Optional: {}
templateRef MachineHealthCheckRemediationTemplateReferencetemplateRef is a reference to a remediation template
provided by an infrastructure provider.
This field is completely optional, when filled, the MachineHealthCheck controller
creates a new object from the template referenced and hands off remediation of the machine to
a controller that lives outside of Cluster API.
Optional: {}

MachineHealthCheckRemediationTemplateReference

MachineHealthCheckRemediationTemplateReference is a reference to a remediation template.

Appears in:

FieldDescriptionDefaultValidation
kind stringkind of the remediation template.
kind must consist of alphanumeric characters or ‘-’, start with an alphabetic character, and end with an alphanumeric character.
MaxLength: 63
MinLength: 1
Pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
Required: {}
name stringname of the remediation template.
name must consist of lower case alphanumeric characters, ‘-’ or ‘.’, and must start and end with an alphanumeric character.
MaxLength: 253
MinLength: 1
Pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
Required: {}
apiVersion stringapiVersion of the remediation template.
apiVersion must be fully qualified domain name followed by / and a version.
NOTE: This field must be kept in sync with the APIVersion of the remediation template.
MaxLength: 317
MinLength: 1
Pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\/[a-z]([-a-z0-9]*[a-z0-9])?$
Required: {}

MachineHealthCheckRemediationTriggerIf

MachineHealthCheckRemediationTriggerIf configures if remediations are triggered.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
unhealthyLessThanOrEqualTo IntOrStringunhealthyLessThanOrEqualTo specifies that remediations are only triggered if the number of
unhealthy Machines is less than or equal to the configured value.
unhealthyInRange takes precedence if set.
Optional: {}
unhealthyInRange stringunhealthyInRange specifies that remediations are only triggered if the number of
unhealthy Machines is in the configured range.
Takes precedence over unhealthyLessThanOrEqualTo.
Eg. “[3-5]“ - This means that remediation will be allowed only when:
(a) there are at least 3 unhealthy Machines (and)
(b) there are at most 5 unhealthy Machines
MaxLength: 32
MinLength: 1
Pattern: ^\[[0-9]+-[0-9]+\]$
Optional: {}

MachineHealthCheckSpec

MachineHealthCheckSpec defines the desired state of MachineHealthCheck.

Appears in:

FieldDescriptionDefaultValidation
clusterName stringclusterName is the name of the Cluster this object belongs to.MaxLength: 63
MinLength: 1
Required: {}
selector LabelSelectorselector is a label selector to match machines whose health will be exercisedRequired: {}
checks MachineHealthCheckCheckschecks are the checks that are used to evaluate if a Machine is healthy.
Independent of this configuration the MachineHealthCheck controller will always
flag Machines with cluster.x-k8s.io/remediate-machine annotation and
Machines with deleted Nodes as unhealthy.
Furthermore, if checks.nodeStartupTimeoutSeconds is not set it
is defaulted to 10 minutes and evaluated accordingly.
MinProperties: 1
Optional: {}
remediation MachineHealthCheckRemediationremediation configures if and how remediations are triggered if a Machine is unhealthy.
If remediation or remediation.triggerIf is not set,
remediation will always be triggered for unhealthy Machines.
If remediation or remediation.templateRef is not set,
the OwnerRemediated condition will be set on unhealthy Machines to trigger remediation via
the owner of the Machines, for example a MachineSet or a KubeadmControlPlane.
MinProperties: 1
Optional: {}

MachineHealthCheckStatus

MachineHealthCheckStatus defines the observed state of MachineHealthCheck.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
conditions Condition arrayconditions represents the observations of a MachineHealthCheck’s current state.
Known condition types are RemediationAllowed, Paused.
MaxItems: 32
Optional: {}
expectedMachines integerexpectedMachines is the total number of machines counted by this machine health checkMinimum: 0
Optional: {}
currentHealthy integercurrentHealthy is the total number of healthy machines counted by this machine health checkMinimum: 0
Optional: {}
remediationsAllowed integerremediationsAllowed is the number of further remediations allowed by this machine health check before
maxUnhealthy short circuiting will be applied
Minimum: 0
Optional: {}
observedGeneration integerobservedGeneration is the latest generation observed by the controller.Minimum: 1
Optional: {}
targets string arraytargets shows the current list of machines the machine health check is watchingMaxItems: 10000
items:MaxLength: 253
items:MinLength: 1
Optional: {}
deprecated MachineHealthCheckDeprecatedStatusdeprecated groups all the status fields that are deprecated and will be removed when all the nested field are removed.Optional: {}

MachineHealthCheckV1Beta1DeprecatedStatus

MachineHealthCheckV1Beta1DeprecatedStatus groups all the status fields that are deprecated and will be removed when support for v1beta1 will be dropped. See https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more context.

Appears in:

FieldDescriptionDefaultValidation
conditions Conditionsconditions defines current service state of the MachineHealthCheck.
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
Optional: {}

MachineInitializationStatus

MachineInitializationStatus provides observations of the Machine initialization process. NOTE: Fields in this struct are part of the Cluster API contract and are used to orchestrate initial Machine provisioning.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
infrastructureProvisioned booleaninfrastructureProvisioned is true when the infrastructure provider reports that Machine’s infrastructure is fully provisioned.
NOTE: this field is part of the Cluster API contract, and it is used to orchestrate provisioning.
The value of this field is never updated after provisioning is completed.
Optional: {}
bootstrapDataSecretCreated booleanbootstrapDataSecretCreated is true when the bootstrap provider reports that the Machine’s boostrap secret is created.
NOTE: this field is part of the Cluster API contract, and it is used to orchestrate provisioning.
The value of this field is never updated after provisioning is completed.
Optional: {}

MachineList

MachineList contains a list of Machine.

FieldDescriptionDefaultValidation
apiVersion stringcluster.x-k8s.io/v1beta2
kind stringMachineList
metadata ListMetaRefer to Kubernetes API documentation for fields of metadata.Optional: {}
items Machine arrayitems is the list of Machines.

MachineNamingSpec

MachineNamingSpec allows changing the naming pattern used when creating Machines. Note: InfraMachines & BootstrapConfigs will use the same name as the corresponding Machines.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
template stringtemplate defines the template to use for generating the names of the
Machine objects.
If not defined, it will fallback to \{\{ .machineSet.name \}\}-\{\{ .random \}\}.
If the generated name string exceeds 63 characters, it will be trimmed to
58 characters and will
get concatenated with a random suffix of length 5.
Length of the template string must not exceed 256 characters.
The template allows the following variables .cluster.name,
.machineSet.name and .random.
The variable .cluster.name retrieves the name of the cluster object
that owns the Machines being created.
The variable .machineSet.name retrieves the name of the MachineSet
object that owns the Machines being created.
The variable .random is substituted with random alphanumeric string,
without vowels, of length 5. This variable is required part of the
template. If not provided, validation will fail.
MaxLength: 256
MinLength: 1
Optional: {}

MachineNodeReference

MachineNodeReference is a reference to the node running on the machine.

Appears in:

FieldDescriptionDefaultValidation
name stringname of the node.
name must consist of lower case alphanumeric characters, ‘-’ or ‘.’, and must start and end with an alphanumeric character.
MaxLength: 253
MinLength: 1
Pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
Required: {}

MachinePool

MachinePool is the Schema for the machinepools API. NOTE: This CRD can only be used if the MachinePool feature gate is enabled.

Appears in:

FieldDescriptionDefaultValidation
apiVersion stringcluster.x-k8s.io/v1beta2
kind stringMachinePool
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.MinProperties: 1
Optional: {}
spec MachinePoolSpecspec is the desired state of MachinePool.Required: {}
status MachinePoolStatusstatus is the observed state of MachinePool.MinProperties: 1
Optional: {}

MachinePoolClass

MachinePoolClass serves as a template to define a pool of worker nodes of the cluster provisioned using ClusterClass.

Appears in:

FieldDescriptionDefaultValidation
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.MinProperties: 1
Optional: {}
class stringclass denotes a type of machine pool present in the cluster,
this name MUST be unique within a ClusterClass and can be referenced
in the Cluster to create a managed MachinePool.
MaxLength: 256
MinLength: 1
Required: {}
bootstrap MachinePoolClassBootstrapTemplatebootstrap contains the bootstrap template reference to be used
for the creation of the Machines in the MachinePool.
Required: {}
infrastructure MachinePoolClassInfrastructureTemplateinfrastructure contains the infrastructure template reference to be used
for the creation of the MachinePool.
Required: {}
failureDomains string arrayfailureDomains is the list of failure domains the MachinePool should be attached to.
Must match a key in the FailureDomains map stored on the cluster object.
NOTE: This value can be overridden while defining a Cluster.Topology using this MachinePoolClass.
MaxItems: 100
items:MaxLength: 256
items:MinLength: 1
Optional: {}
naming MachinePoolClassNamingSpecnaming allows changing the naming pattern used when creating the MachinePool.MinProperties: 1
Optional: {}
deletion MachinePoolClassMachineDeletionSpecdeletion contains configuration options for Machine deletion.MinProperties: 1
Optional: {}
taints MachineTaint arraytaints are the node taints that Cluster API will manage.
This list is not necessarily complete: other Kubernetes components may add or remove other taints from nodes,
e.g. the node controller might add the node.kubernetes.io/not-ready taint.
Only those taints defined in this list will be added or removed by core Cluster API controllers.
There can be at most 64 taints.
A pod would have to tolerate all existing taints to run on the corresponding node.
NOTE: This list is implemented as a “map” type, meaning that individual elements can be managed by different owners.
MaxItems: 64
MinItems: 1
Optional: {}
minReadySeconds integerminReadySeconds is the minimum number of seconds for which a newly created machine pool should
be ready.
Defaults to 0 (machine will be considered available as soon as it
is ready)
NOTE: This value can be overridden while defining a Cluster.Topology using this MachinePoolClass.
Minimum: 0
Optional: {}

MachinePoolClassBootstrapTemplate

MachinePoolClassBootstrapTemplate defines the BootstrapTemplate for a MachinePool.

Appears in:

FieldDescriptionDefaultValidation
templateRef ClusterClassTemplateReferencetemplateRef is a required reference to the BootstrapTemplate for a MachinePool.Required: {}

MachinePoolClassInfrastructureTemplate

MachinePoolClassInfrastructureTemplate defines the InfrastructureTemplate for a MachinePool.

Appears in:

FieldDescriptionDefaultValidation
templateRef ClusterClassTemplateReferencetemplateRef is a required reference to the InfrastructureTemplate for a MachinePool.Required: {}

MachinePoolClassMachineDeletionSpec

MachinePoolClassMachineDeletionSpec contains configuration options for Machine deletion.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
nodeDrainTimeoutSeconds integernodeDrainTimeoutSeconds is the total amount of time that the controller will spend on draining a node.
The default value is 0, meaning that the node can be drained without any time limitations.
NOTE: nodeDrainTimeoutSeconds is different from kubectl drain --timeout
NOTE: This value can be overridden while defining a Cluster.Topology using this MachinePoolClass.
Minimum: 0
Optional: {}
nodeVolumeDetachTimeoutSeconds integernodeVolumeDetachTimeoutSeconds is the total amount of time that the controller will spend on waiting for all volumes
to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations.
NOTE: This value can be overridden while defining a Cluster.Topology using this MachinePoolClass.
Minimum: 0
Optional: {}
nodeDeletionTimeoutSeconds integernodeDeletionTimeoutSeconds defines how long the controller will attempt to delete the Node that the Machine
hosts after the Machine Pool is marked for deletion. A duration of 0 will retry deletion indefinitely.
Defaults to 10 seconds.
NOTE: This value can be overridden while defining a Cluster.Topology using this MachinePoolClass.
Minimum: 0
Optional: {}

MachinePoolClassNamingSpec

MachinePoolClassNamingSpec defines the naming strategy for MachinePool objects.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
template stringtemplate defines the template to use for generating the name of the MachinePool object.
If not defined, it will fallback to \{\{ .cluster.name \}\}-\{\{ .machinePool.topologyName \}\}-\{\{ .random \}\}.
If the templated string exceeds 63 characters, it will be trimmed to 58 characters and will
get concatenated with a random suffix of length 5.
The templating mechanism provides the following arguments:
* .cluster.name: The name of the cluster object.
* .random: A random alphanumeric string, without vowels, of length 5.
* .machinePool.topologyName: The name of the MachinePool topology (Cluster.spec.topology.workers.machinePools[].name).
MaxLength: 1024
MinLength: 1
Optional: {}

MachinePoolDeprecatedStatus

MachinePoolDeprecatedStatus groups all the status fields that are deprecated and will be removed in a future version. See https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more context.

Appears in:

FieldDescriptionDefaultValidation
v1beta1 MachinePoolV1Beta1DeprecatedStatusv1beta1 groups all the status fields that are deprecated and will be removed when support for v1beta1 will be dropped.Optional: {}

MachinePoolInitializationStatus

MachinePoolInitializationStatus provides observations of the MachinePool initialization process. NOTE: Fields in this struct are part of the Cluster API contract and are used to orchestrate initial MachinePool provisioning.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
infrastructureProvisioned booleaninfrastructureProvisioned is true when the infrastructure provider reports that MachinePool’s infrastructure is fully provisioned.
NOTE: this field is part of the Cluster API contract, and it is used to orchestrate provisioning.
The value of this field is never updated after provisioning is completed.
Optional: {}
bootstrapDataSecretCreated booleanbootstrapDataSecretCreated is true when the bootstrap provider reports that the MachinePool’s boostrap secret is created.
NOTE: this field is part of the Cluster API contract, and it is used to orchestrate provisioning.
The value of this field is never updated after provisioning is completed.
Optional: {}

MachinePoolList

MachinePoolList contains a list of MachinePool.

FieldDescriptionDefaultValidation
apiVersion stringcluster.x-k8s.io/v1beta2
kind stringMachinePoolList
metadata ListMetaRefer to Kubernetes API documentation for fields of metadata.Optional: {}
items MachinePool arrayitems is the list of MachinePools.

MachinePoolSpec

MachinePoolSpec defines the desired state of MachinePool.

Appears in:

FieldDescriptionDefaultValidation
clusterName stringclusterName is the name of the Cluster this object belongs to.MaxLength: 63
MinLength: 1
Required: {}
replicas integerreplicas is the number of desired machines. Defaults to 1.
This is a pointer to distinguish between explicit zero and not specified.
Optional: {}
template MachineTemplateSpectemplate describes the machines that will be created.Required: {}
providerIDList string arrayproviderIDList are the identification IDs of machine instances provided by the provider.
This field must match the provider IDs as seen on the node objects corresponding to a machine pool’s machine instances.
MaxItems: 10000
items:MaxLength: 512
items:MinLength: 1
Optional: {}
failureDomains string arrayfailureDomains is the list of failure domains this MachinePool should be attached to.MaxItems: 100
items:MaxLength: 256
items:MinLength: 1
Optional: {}

MachinePoolStatus

MachinePoolStatus defines the observed state of MachinePool.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
conditions Condition arrayconditions represents the observations of a MachinePool’s current state.
Known condition types are Available, BootstrapConfigReady, InfrastructureReady, MachinesReady, MachinesUpToDate,
ScalingUp, ScalingDown, Remediating, Deleting, Paused.
MaxItems: 32
Optional: {}
initialization MachinePoolInitializationStatusinitialization provides observations of the MachinePool initialization process.
NOTE: Fields in this struct are part of the Cluster API contract and are used to orchestrate initial MachinePool provisioning.
MinProperties: 1
Optional: {}
nodeRefs ObjectReference arraynodeRefs will point to the corresponding Nodes if it they exist.MaxItems: 10000
Optional: {}
replicas integerreplicas is the most recently observed number of replicas.Optional: {}
readyReplicas integerreadyReplicas is the number of ready replicas for this MachinePool. A machine is considered ready when Machine’s Ready condition is true.Optional: {}
availableReplicas integeravailableReplicas is the number of available replicas for this MachinePool. A machine is considered available when Machine’s Available condition is true.Optional: {}
upToDateReplicas integerupToDateReplicas is the number of up-to-date replicas targeted by this MachinePool. A machine is considered up-to-date when Machine’s UpToDate condition is true.Optional: {}
phase stringphase represents the current phase of cluster actuation.Enum: [Pending Provisioning Provisioned Running ScalingUp ScalingDown Scaling Deleting Failed Unknown]
Optional: {}
observedGeneration integerobservedGeneration is the latest generation observed by the controller.Minimum: 1
Optional: {}
deprecated MachinePoolDeprecatedStatusdeprecated groups all the status fields that are deprecated and will be removed when all the nested field are removed.Optional: {}

MachinePoolTopology

MachinePoolTopology specifies the different parameters for a pool of worker nodes in the topology. This pool of nodes is managed by a MachinePool object whose lifecycle is managed by the Cluster controller.

Appears in:

FieldDescriptionDefaultValidation
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.MinProperties: 1
Optional: {}
class stringclass is the name of the MachinePoolClass used to create the pool of worker nodes.
This should match one of the deployment classes defined in the ClusterClass object
mentioned in the Cluster.Spec.Class field.
MaxLength: 256
MinLength: 1
Required: {}
name stringname is the unique identifier for this MachinePoolTopology.
The value is used with other unique identifiers to create a MachinePool’s Name
(e.g. cluster’s name, etc). In case the name is greater than the allowed maximum length,
the values are hashed together.
MaxLength: 63
MinLength: 1
Pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
Required: {}
failureDomains string arrayfailureDomains is the list of failure domains the machine pool will be created in.
Must match a key in the FailureDomains map stored on the cluster object.
MaxItems: 100
MinItems: 1
items:MaxLength: 256
items:MinLength: 1
Optional: {}
deletion MachinePoolTopologyMachineDeletionSpecdeletion contains configuration options for Machine deletion.MinProperties: 1
Optional: {}
taints MachineTaint arraytaints are the node taints that Cluster API will manage.
This list is not necessarily complete: other Kubernetes components may add or remove other taints from nodes,
e.g. the node controller might add the node.kubernetes.io/not-ready taint.
Only those taints defined in this list will be added or removed by core Cluster API controllers.
There can be at most 64 taints.
A pod would have to tolerate all existing taints to run on the corresponding node.
NOTE: This list is implemented as a “map” type, meaning that individual elements can be managed by different owners.
MaxItems: 64
MinItems: 1
Optional: {}
minReadySeconds integerminReadySeconds is the minimum number of seconds for which a newly created machine pool should
be ready.
Defaults to 0 (machine will be considered available as soon as it
is ready)
Minimum: 0
Optional: {}
replicas integerreplicas is the number of nodes belonging to this pool.
If the value is nil, the MachinePool is created without the number of Replicas (defaulting to 1)
and it’s assumed that an external entity (like cluster autoscaler) is responsible for the management
of this value.
Optional: {}
variables MachinePoolVariablesvariables can be used to customize the MachinePool through patches.MinProperties: 1
Optional: {}

MachinePoolTopologyMachineDeletionSpec

MachinePoolTopologyMachineDeletionSpec contains configuration options for Machine deletion.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
nodeDrainTimeoutSeconds integernodeDrainTimeoutSeconds is the total amount of time that the controller will spend on draining a node.
The default value is 0, meaning that the node can be drained without any time limitations.
NOTE: nodeDrainTimeoutSeconds is different from kubectl drain --timeout
Minimum: 0
Optional: {}
nodeVolumeDetachTimeoutSeconds integernodeVolumeDetachTimeoutSeconds is the total amount of time that the controller will spend on waiting for all volumes
to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations.
Minimum: 0
Optional: {}
nodeDeletionTimeoutSeconds integernodeDeletionTimeoutSeconds defines how long the controller will attempt to delete the Node that the MachinePool
hosts after the MachinePool is marked for deletion. A duration of 0 will retry deletion indefinitely.
Defaults to 10 seconds.
Minimum: 0
Optional: {}

MachinePoolV1Beta1DeprecatedStatus

MachinePoolV1Beta1DeprecatedStatus groups all the status fields that are deprecated and will be removed when support for v1beta1 will be dropped. See https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more context.

Appears in:

FieldDescriptionDefaultValidation
conditions Conditionsconditions define the current service state of the MachinePool.
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
Optional: {}
failureReason MachinePoolStatusFailurefailureReason indicates that there is a problem reconciling the state, and
will be set to a token value suitable for programmatic interpretation.
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
Optional: {}
failureMessage stringfailureMessage indicates that there is a problem reconciling the state,
and will be set to a descriptive error message.
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
MaxLength: 10240
MinLength: 1
Optional: {}
readyReplicas integerreadyReplicas is the number of ready replicas for this MachinePool. A machine is considered ready when the node has been created and is “Ready”.
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
Optional: {}
availableReplicas integeravailableReplicas is the number of available replicas (ready for at least minReadySeconds) for this MachinePool.
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
Optional: {}
unavailableReplicas integerunavailableReplicas is the total number of unavailable machine instances targeted by this machine pool.
This is the total number of machine instances that are still required for
the machine pool to have 100% available capacity. They may either
be machine instances that are running but not yet available or machine instances
that still have not been created.
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
Optional: {}

MachinePoolVariables

MachinePoolVariables can be used to provide variables for a specific MachinePool.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
overrides ClusterVariable arrayoverrides can be used to override Cluster level variables.MaxItems: 1000
MinItems: 1
Optional: {}

MachineReadinessGate

MachineReadinessGate contains the type of a Machine condition to be used as a readiness gate.

Appears in:

FieldDescriptionDefaultValidation
conditionType stringconditionType refers to a condition with matching type in the Machine’s condition list.
If the conditions doesn’t exist, it will be treated as unknown.
Note: Both Cluster API conditions or conditions added by 3rd party controllers can be used as readiness gates.
MaxLength: 316
MinLength: 1
Pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
Required: {}
polarity ConditionPolaritypolarity of the conditionType specified in this readinessGate.
Valid values are Positive, Negative and omitted.
When omitted, the default behaviour will be Positive.
A positive polarity means that the condition should report a true status under normal conditions.
A negative polarity means that the condition should report a false status under normal conditions.
Enum: [Positive Negative]
Optional: {}

MachineSet

MachineSet is the Schema for the machinesets API.

Appears in:

FieldDescriptionDefaultValidation
apiVersion stringcluster.x-k8s.io/v1beta2
kind stringMachineSet
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.MinProperties: 1
Optional: {}
spec MachineSetSpecspec is the desired state of MachineSet.Required: {}
status MachineSetStatusstatus is the observed state of MachineSet.MinProperties: 1
Optional: {}

MachineSetDeletionOrder

Underlying type: string

MachineSetDeletionOrder defines how priority is assigned to nodes to delete when downscaling a MachineSet. Defaults to “Random”.

Validation:

  • Enum: [Random Newest Oldest]

Appears in:

FieldDescription
RandomRandomMachineSetDeletionOrder prioritizes both Machines that have the annotation
“cluster.x-k8s.io/delete-machine=yes” and Machines that are unhealthy
(Status.FailureReason or Status.FailureMessage are set to a non-empty value
or NodeHealthy type of Status.Conditions is not true).
Finally, it picks Machines at random to delete.
NewestNewestMachineSetDeletionOrder prioritizes both Machines that have the annotation
“cluster.x-k8s.io/delete-machine=yes” and Machines that are unhealthy
(Status.FailureReason or Status.FailureMessage are set to a non-empty value
or NodeHealthy type of Status.Conditions is not true).
It then prioritizes the newest Machines for deletion based on the Machine’s CreationTimestamp.
OldestOldestMachineSetDeletionOrder prioritizes both Machines that have the annotation
“cluster.x-k8s.io/delete-machine=yes” and Machines that are unhealthy
(Status.FailureReason or Status.FailureMessage are set to a non-empty value
or NodeHealthy type of Status.Conditions is not true).
It then prioritizes the oldest Machines for deletion based on the Machine’s CreationTimestamp.

MachineSetDeletionSpec

MachineSetDeletionSpec contains configuration options for MachineSet deletion.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
order MachineSetDeletionOrderorder defines the order in which Machines are deleted when downscaling.
Defaults to “Random”. Valid values are “Random, “Newest”, “Oldest”
Enum: [Random Newest Oldest]
Optional: {}

MachineSetDeprecatedStatus

MachineSetDeprecatedStatus groups all the status fields that are deprecated and will be removed in a future version. See https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more context.

Appears in:

FieldDescriptionDefaultValidation
v1beta1 MachineSetV1Beta1DeprecatedStatusv1beta1 groups all the status fields that are deprecated and will be removed when support for v1beta1 will be dropped.Optional: {}

MachineSetList

MachineSetList contains a list of MachineSet.

FieldDescriptionDefaultValidation
apiVersion stringcluster.x-k8s.io/v1beta2
kind stringMachineSetList
metadata ListMetaRefer to Kubernetes API documentation for fields of metadata.Optional: {}
items MachineSet arrayitems is the list of MachineSets.

MachineSetSpec

MachineSetSpec defines the desired state of MachineSet.

Appears in:

FieldDescriptionDefaultValidation
clusterName stringclusterName is the name of the Cluster this object belongs to.MaxLength: 63
MinLength: 1
Required: {}
replicas integerreplicas is the number of desired replicas.
This is a pointer to distinguish between explicit zero and unspecified.
Defaults to:
* if the Kubernetes autoscaler min size and max size annotations are set:
- if it’s a new MachineSet, use min size
- if the replicas field of the old MachineSet is < min size, use min size
- if the replicas field of the old MachineSet is > max size, use max size
- if the replicas field of the old MachineSet is in the (min size, max size) range, keep the value from the oldMS
* otherwise use 1
Note: Defaulting will be run whenever the replicas field is not set:
* A new MachineSet is created with replicas not set.
* On an existing MachineSet the replicas field was first set and is now unset.
Those cases are especially relevant for the following Kubernetes autoscaler use cases:
* A new MachineSet is created and replicas should be managed by the autoscaler
* An existing MachineSet which initially wasn’t controlled by the autoscaler
should be later controlled by the autoscaler
Optional: {}
selector LabelSelectorselector is a label query over machines that should match the replica count.
Label keys and values that must match in order to be controlled by this MachineSet.
It must match the machine template’s labels.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
Required: {}
template MachineTemplateSpectemplate is the object that describes the machine that will be created if
insufficient replicas are detected.
Object references to custom resources are treated as templates.
Required: {}
machineNaming MachineNamingSpecmachineNaming allows changing the naming pattern used when creating Machines.
Note: InfraMachines & BootstrapConfigs will use the same name as the corresponding Machines.
MinProperties: 1
Optional: {}
deletion MachineSetDeletionSpecdeletion contains configuration options for MachineSet deletion.MinProperties: 1
Optional: {}

MachineSetStatus

MachineSetStatus defines the observed state of MachineSet.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
conditions Condition arrayconditions represents the observations of a MachineSet’s current state.
Known condition types are MachinesReady, MachinesUpToDate, ScalingUp, ScalingDown, Remediating, Deleting, Paused.
MaxItems: 32
Optional: {}
selector stringselector is the same as the label selector but in the string format to avoid introspection
by clients. The string will be in the same format as the query-param syntax.
More info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors
MaxLength: 4096
MinLength: 1
Optional: {}
replicas integerreplicas is the most recently observed number of replicas.Optional: {}
readyReplicas integerreadyReplicas is the number of ready replicas for this MachineSet. A machine is considered ready when Machine’s Ready condition is true.Optional: {}
availableReplicas integeravailableReplicas is the number of available replicas for this MachineSet. A machine is considered available when Machine’s Available condition is true.Optional: {}
upToDateReplicas integerupToDateReplicas is the number of up-to-date replicas for this MachineSet. A machine is considered up-to-date when Machine’s UpToDate condition is true.Optional: {}
observedGeneration integerobservedGeneration reflects the generation of the most recently observed MachineSet.Minimum: 1
Optional: {}
deprecated MachineSetDeprecatedStatusdeprecated groups all the status fields that are deprecated and will be removed when all the nested field are removed.Optional: {}

MachineSetV1Beta1DeprecatedStatus

MachineSetV1Beta1DeprecatedStatus groups all the status fields that are deprecated and will be removed when support for v1beta1 will be dropped. See https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more context.

Appears in:

FieldDescriptionDefaultValidation
conditions Conditionsconditions defines current service state of the MachineSet.
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
Optional: {}
failureReason MachineSetStatusErrorfailureReason will be set in the event that there is a terminal problem
reconciling the Machine and will contain a succinct value suitable
for machine interpretation.
In the event that there is a terminal problem reconciling the
replicas, both FailureReason and FailureMessage will be set. FailureReason
will be populated with a succinct value suitable for machine
interpretation, while FailureMessage will contain a more verbose
string suitable for logging and human consumption.
These fields should not be set for transitive errors that a
controller faces that are expected to be fixed automatically over
time (like service outages), but instead indicate that something is
fundamentally wrong with the MachineTemplate’s spec or the configuration of
the machine controller, and that manual intervention is required. Examples
of terminal errors would be invalid combinations of settings in the
spec, values that are unsupported by the machine controller, or the
responsible machine controller itself being critically misconfigured.
Any transient errors that occur during the reconciliation of Machines
can be added as events to the MachineSet object and/or logged in the
controller’s output.
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
Optional: {}
failureMessage stringfailureMessage will be set in the event that there is a terminal problem
reconciling the Machine and will contain a more verbose string suitable
for logging and human consumption.
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
MaxLength: 10240
MinLength: 1
Optional: {}
fullyLabeledReplicas integerfullyLabeledReplicas is the number of replicas that have labels matching the labels of the machine template of the MachineSet.
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
Optional: {}
readyReplicas integerreadyReplicas is the number of ready replicas for this MachineSet. A machine is considered ready when the node has been created and is “Ready”.
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
Optional: {}
availableReplicas integeravailableReplicas is the number of available replicas (ready for at least minReadySeconds) for this MachineSet.
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
Optional: {}

MachineSpec

MachineSpec defines the desired state of Machine.

Appears in:

FieldDescriptionDefaultValidation
clusterName stringclusterName is the name of the Cluster this object belongs to.MaxLength: 63
MinLength: 1
Required: {}
bootstrap Bootstrapbootstrap is a reference to a local struct which encapsulates
fields to configure the Machine’s bootstrapping mechanism.
Required: {}
infrastructureRef ContractVersionedObjectReferenceinfrastructureRef is a required reference to a custom resource
offered by an infrastructure provider.
Required: {}
version stringversion defines the desired Kubernetes version.
This field is meant to be optionally used by bootstrap providers.
MaxLength: 256
MinLength: 1
Optional: {}
providerID stringproviderID 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.
MaxLength: 512
MinLength: 1
Optional: {}
failureDomain stringfailureDomain is the failure domain the machine will be created in.
Must match the name of a FailureDomain from the Cluster status.
MaxLength: 256
MinLength: 1
Optional: {}
minReadySeconds integerminReadySeconds is the minimum number of seconds for which a Machine should be ready before considering it available.
Defaults to 0 (Machine will be considered available as soon as the Machine is ready)
Minimum: 0
Optional: {}
readinessGates MachineReadinessGate arrayreadinessGates specifies additional conditions to include when evaluating Machine Ready condition.
This field can be used e.g. by Cluster API control plane providers to extend the semantic of the
Ready condition for the Machine they control, like the kubeadm control provider adding ReadinessGates
for the APIServerPodHealthy, SchedulerPodHealthy conditions, etc.
Another example are external controllers, e.g. responsible to install special software/hardware on the Machines;
they can include the status of those components with a new condition and add this condition to ReadinessGates.
NOTE: In case readinessGates conditions start with the APIServer, ControllerManager, Scheduler prefix, and all those
readiness gates condition are reporting the same message, when computing the Machine’s Ready condition those
readinessGates will be replaced by a single entry reporting “Control plane components: “ + message.
This helps to improve readability of conditions bubbling up to the Machine’s owner resource / to the Cluster).
MaxItems: 32
MinItems: 1
Optional: {}
deletion MachineDeletionSpecdeletion contains configuration options for Machine deletion.MinProperties: 1
Optional: {}
taints MachineTaint arraytaints are the node taints that Cluster API will manage.
This list is not necessarily complete: other Kubernetes components may add or remove other taints from nodes,
e.g. the node controller might add the node.kubernetes.io/not-ready taint.
Only those taints defined in this list will be added or removed by core Cluster API controllers.
There can be at most 64 taints.
A pod would have to tolerate all existing taints to run on the corresponding node.
NOTE: This list is implemented as a “map” type, meaning that individual elements can be managed by different owners.
MaxItems: 64
MinItems: 1
Optional: {}

MachineStatus

MachineStatus defines the observed state of Machine.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
conditions Condition arrayconditions represents the observations of a Machine’s current state.
Known condition types are Available, Ready, UpToDate, BootstrapConfigReady, InfrastructureReady, NodeReady,
NodeHealthy, Updating, Deleting, Paused.
If a MachineHealthCheck is targeting this machine, also HealthCheckSucceeded, OwnerRemediated conditions are added.
Additionally control plane Machines controlled by KubeadmControlPlane will have following additional conditions:
APIServerPodHealthy, ControllerManagerPodHealthy, SchedulerPodHealthy, EtcdPodHealthy, EtcdMemberHealthy, NodeKubeadmLabelsAndTaintsSet.
MaxItems: 32
Optional: {}
initialization MachineInitializationStatusinitialization provides observations of the Machine initialization process.
NOTE: Fields in this struct are part of the Cluster API contract and are used to orchestrate initial Machine provisioning.
MinProperties: 1
Optional: {}
nodeRef MachineNodeReferencenodeRef will point to the corresponding Node if it exists.Optional: {}
nodeInfo NodeSystemInfonodeInfo is a set of ids/uuids to uniquely identify the node.
More info: https://kubernetes.io/docs/concepts/nodes/node/#info
Optional: {}
addresses MachineAddressesaddresses is a list of addresses assigned to the machine.
This field is copied from the infrastructure provider reference.
MaxItems: 256
Optional: {}
failureDomain stringfailureDomain is the failure domain where the Machine has been scheduled.MaxLength: 256
MinLength: 1
Optional: {}
phase stringphase represents the current phase of machine actuation.Enum: [Pending Provisioning Provisioned Running Updating Deleting Deleted Failed Unknown]
Optional: {}
observedGeneration integerobservedGeneration is the latest generation observed by the controller.Minimum: 1
Optional: {}
deletion MachineDeletionStatusdeletion contains information relating to removal of the Machine.
Only present when the Machine has a deletionTimestamp and drain or wait for volume detach started.
Optional: {}
deprecated MachineDeprecatedStatusdeprecated groups all the status fields that are deprecated and will be removed when all the nested field are removed.Optional: {}

MachineTaint

MachineTaint defines a taint equivalent to corev1.Taint, but additionally having a propagation field.

Appears in:

FieldDescriptionDefaultValidation
key stringkey is the taint key to be applied to a node.
Must be a valid qualified name of maximum size 63 characters
with an optional subdomain prefix of maximum size 253 characters,
separated by a /.
MaxLength: 317
MinLength: 1
Pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\/)?([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]$
Required: {}
value stringvalue is the taint value corresponding to the taint key.
It must be a valid label value of maximum size 63 characters.
MaxLength: 63
MinLength: 1
Pattern: ^(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?$
Optional: {}
effect TaintEffecteffect is the effect for the taint. Valid values are NoSchedule, PreferNoSchedule and NoExecute.Enum: [NoSchedule PreferNoSchedule NoExecute]
Required: {}
propagation MachineTaintPropagationpropagation defines how this taint should be propagated to nodes.
Valid values are ‘Always’ and ‘OnInitialization’.
Always: The taint will be continuously reconciled. If it is not set for a node, it will be added during reconciliation.
OnInitialization: The taint will be added during node initialization. If it gets removed from the node later on it will not get added again.
Enum: [Always OnInitialization]
Required: {}

MachineTaintPropagation

Underlying type: string

MachineTaintPropagation defines when a taint should be propagated to nodes.

Validation:

  • Enum: [Always OnInitialization]

Appears in:

FieldDescription
AlwaysMachineTaintPropagationAlways means the taint should be continuously reconciled and kept on the node.
- If an Always taint is added to the Machine, the taint will be added to the node.
- If an Always taint is removed from the Machine, the taint will be removed from the node.
- If an OnInitialization taint is changed to Always, the Machine controller will ensure the taint is set on the node.
- If an Always taint is removed from the node, it will be re-added during reconciliation.
OnInitializationMachineTaintPropagationOnInitialization means the taint should be set once during initialization and then
left alone.
- If an OnInitialization taint is added to the Machine, the taint will only be added to the node on initialization.
- If an OnInitialization taint is removed from the Machine nothing will be changed on the node.
- If an Always taint is changed to OnInitialization, the taint will only be added to the node on initialization.
- If an OnInitialization taint is removed from the node, it will not be re-added during reconciliation.

MachineTemplateSpec

MachineTemplateSpec describes the data needed to create a Machine from a template.

Appears in:

FieldDescriptionDefaultValidation
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.MinProperties: 1
Optional: {}
spec MachineSpecspec is the specification of the desired behavior of the machine.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
Required: {}

MachineV1Beta1DeprecatedStatus

MachineV1Beta1DeprecatedStatus groups all the status fields that are deprecated and will be removed when support for v1beta1 will be dropped. See https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more context.

Appears in:

FieldDescriptionDefaultValidation
conditions Conditionsconditions defines current service state of the Machine.
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
Optional: {}
failureReason MachineStatusErrorfailureReason will be set in the event that there is a terminal problem
reconciling the Machine and will contain a succinct value suitable
for machine interpretation.
This field should not be set for transitive errors that a controller
faces that are expected to be fixed automatically over
time (like service outages), but instead indicate that something is
fundamentally wrong with the Machine’s spec or the configuration of
the controller, and that manual intervention is required. Examples
of terminal errors would be invalid combinations of settings in the
spec, values that are unsupported by the controller, or the
responsible controller itself being critically misconfigured.
Any transient errors that occur during the reconciliation of Machines
can be added as events to the Machine object and/or logged in the
controller’s output.
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
Optional: {}
failureMessage stringfailureMessage will be set in the event that there is a terminal problem
reconciling the Machine and will contain a more verbose string suitable
for logging and human consumption.
This field should not be set for transitive errors that a controller
faces that are expected to be fixed automatically over
time (like service outages), but instead indicate that something is
fundamentally wrong with the Machine’s spec or the configuration of
the controller, and that manual intervention is required. Examples
of terminal errors would be invalid combinations of settings in the
spec, values that are unsupported by the controller, or the
responsible controller itself being critically misconfigured.
Any transient errors that occur during the reconciliation of Machines
can be added as events to the Machine object and/or logged in the
controller’s output.
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
MaxLength: 10240
MinLength: 1
Optional: {}

NetworkRanges

NetworkRanges represents ranges of network addresses.

Appears in:

FieldDescriptionDefaultValidation
cidrBlocks string arraycidrBlocks is a list of CIDR blocks.MaxItems: 100
MinItems: 1
items:MaxLength: 43
items:MinLength: 1
Required: {}

ObjectMeta

ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create. This is a copy of customizable fields from metav1.ObjectMeta.

ObjectMeta is embedded in Machine.Spec, MachineDeployment.Template and MachineSet.Template, which are not top-level Kubernetes objects. Given that metav1.ObjectMeta has lots of special cases and read-only fields which end up in the generated CRD validation, having it as a subset simplifies the API and some issues that can impact user experience.

During the upgrade to controller-tools@v2 for v1alpha2, we noticed a failure would occur running Cluster API test suite against the new CRDs, specifically spec.metadata.creationTimestamp in body must be of type string: "null". The investigation showed that controller-tools@v2 behaves differently than its previous version when handling types from metav1 package.

In more details, we found that embedded (non-top level) types that embedded metav1.ObjectMeta had validation properties, including for creationTimestamp (metav1.Time). The metav1.Time type specifies a custom json marshaller that, when IsZero() is true, returns null which breaks validation because the field isn’t marked as nullable.

In future versions, controller-tools@v2 might allow overriding the type and validation for embedded types. When that happens, this hack should be revisited.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
labels object (keys:string, values:string)labels is a 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
Optional: {}
annotations object (keys:string, values:string)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
Optional: {}

PatchDefinition

PatchDefinition defines a patch which is applied to customize the referenced templates.

Appears in:

FieldDescriptionDefaultValidation
selector PatchSelectorselector defines on which templates the patch should be applied.Required: {}
jsonPatches JSONPatch arrayjsonPatches defines the patches which should be applied on the templates
matching the selector.
Note: Patches will be applied in the order of the array.
MaxItems: 100
MinItems: 1
Required: {}

PatchSelector

PatchSelector defines on which templates the patch should be applied. Note: Matching on APIVersion and Kind is mandatory, to enforce that the patches are written for the correct version. The version of the references in the ClusterClass may be automatically updated during reconciliation if there is a newer version for the same contract. Note: The results of selection based on the individual fields are ANDed.

Appears in:

FieldDescriptionDefaultValidation
apiVersion stringapiVersion filters templates by apiVersion.
apiVersion must be fully qualified domain name followed by / and a version.
MaxLength: 317
MinLength: 1
Pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\/[a-z]([-a-z0-9]*[a-z0-9])?$
Required: {}
kind stringkind filters templates by kind.
kind must consist of alphanumeric characters or ‘-’, start with an alphabetic character, and end with an alphanumeric character.
MaxLength: 63
MinLength: 1
Pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
Required: {}
matchResources PatchSelectorMatchmatchResources selects templates based on where they are referenced.MinProperties: 1
Required: {}

PatchSelectorMatch

PatchSelectorMatch selects templates based on where they are referenced. Note: The selector must match at least one template. Note: The results of selection based on the individual fields are ORed.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
controlPlane booleancontrolPlane selects templates referenced in .spec.ControlPlane.
Note: this will match the controlPlane and also the controlPlane
machineInfrastructure (depending on the kind and apiVersion).
Optional: {}
infrastructureCluster booleaninfrastructureCluster selects templates referenced in .spec.infrastructure.Optional: {}
machineDeploymentClass PatchSelectorMatchMachineDeploymentClassmachineDeploymentClass selects templates referenced in specific MachineDeploymentClasses in
.spec.workers.machineDeployments.
Optional: {}
machinePoolClass PatchSelectorMatchMachinePoolClassmachinePoolClass selects templates referenced in specific MachinePoolClasses in
.spec.workers.machinePools.
Optional: {}

PatchSelectorMatchMachineDeploymentClass

PatchSelectorMatchMachineDeploymentClass selects templates referenced in specific MachineDeploymentClasses in .spec.workers.machineDeployments.

Appears in:

FieldDescriptionDefaultValidation
names string arraynames selects templates by class names.MaxItems: 100
items:MaxLength: 256
items:MinLength: 1
Optional: {}

PatchSelectorMatchMachinePoolClass

PatchSelectorMatchMachinePoolClass selects templates referenced in specific MachinePoolClasses in .spec.workers.machinePools.

Appears in:

FieldDescriptionDefaultValidation
names string arraynames selects templates by class names.MaxItems: 100
items:MaxLength: 256
items:MinLength: 1
Optional: {}

Topology

Topology encapsulates the information of the managed resources.

Appears in:

FieldDescriptionDefaultValidation
classRef ClusterClassRefclassRef is the ref to the ClusterClass that should be used for the topology.Required: {}
version stringversion is the Kubernetes version of the cluster.MaxLength: 256
MinLength: 1
Required: {}
controlPlane ControlPlaneTopologycontrolPlane describes the cluster control plane.MinProperties: 1
Optional: {}
workers WorkersTopologyworkers encapsulates the different constructs that form the worker nodes
for the cluster.
MinProperties: 1
Optional: {}
variables ClusterVariable arrayvariables can be used to customize the Cluster through
patches. They must comply to the corresponding
VariableClasses defined in the ClusterClass.
MaxItems: 1000
MinItems: 1
Optional: {}

UnhealthyMachineCondition

UnhealthyMachineCondition represents a Machine condition type and value with a timeout specified as a duration. When the named condition has been in the given status for at least the timeout value, a machine is considered unhealthy.

Appears in:

FieldDescriptionDefaultValidation
type stringtype of Machine conditionMaxLength: 316
MinLength: 1
Pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
Required: {}
status ConditionStatusstatus of the condition, one of True, False, Unknown.Enum: [True False Unknown]
Required: {}
timeoutSeconds integertimeoutSeconds is the duration that a machine must be in a given status for,
after which the machine is considered unhealthy.
For example, with a value of “3600”, the machine must match the status
for at least 1 hour before being considered unhealthy.
Minimum: 0
Required: {}

UnhealthyNodeCondition

UnhealthyNodeCondition represents a Node condition type and value with a timeout specified as a duration. When the named condition has been in the given status for at least the timeout value, a node is considered unhealthy.

Appears in:

FieldDescriptionDefaultValidation
type NodeConditionTypetype of Node conditionMinLength: 1
Type: string
Required: {}
status ConditionStatusstatus of the condition, one of True, False, Unknown.MinLength: 1
Type: string
Required: {}
timeoutSeconds integertimeoutSeconds is the duration that a node must be in a given status for,
after which the node is considered unhealthy.
For example, with a value of “3600”, the node must match the status
for at least 1 hour before being considered unhealthy.
Minimum: 0
Required: {}

VariableSchema

VariableSchema defines the schema of a variable.

Appears in:

FieldDescriptionDefaultValidation
openAPIV3Schema JSONSchemaPropsopenAPIV3Schema defines the schema of a variable via OpenAPI v3
schema. The schema is a subset of the schema used in
Kubernetes CRDs.
MinProperties: 1
Required: {}

VariableSchemaMetadata

Underlying type: struct{Labels map[string]string “json:“labels,omitempty“”; Annotations map[string]string “json:“annotations,omitempty“”}

VariableSchemaMetadata is the metadata of a variable or a nested field within a variable. It can be used to add additional data for higher level tools.

Validation:

  • MinProperties: 1

Appears in:

WorkersClass

WorkersClass is a collection of deployment classes.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
machineDeployments MachineDeploymentClass arraymachineDeployments is a list of machine deployment classes that can be used to create
a set of worker nodes.
MaxItems: 100
MinItems: 1
Optional: {}
machinePools MachinePoolClass arraymachinePools is a list of machine pool classes that can be used to create
a set of worker nodes.
MaxItems: 100
MinItems: 1
Optional: {}

WorkersStatus

WorkersStatus groups all the observations about workers current state.

Appears in:

FieldDescriptionDefaultValidation
desiredReplicas integerdesiredReplicas is the total number of desired worker machines in this cluster.Optional: {}
replicas integerreplicas is the total number of worker machines in this cluster.
NOTE: replicas also includes machines still being provisioned or being deleted.
Optional: {}
upToDateReplicas integerupToDateReplicas is the number of up-to-date worker machines in this cluster. A machine is considered up-to-date when Machine’s UpToDate condition is true.Optional: {}
readyReplicas integerreadyReplicas is the total number of ready worker machines in this cluster. A machine is considered ready when Machine’s Ready condition is true.Optional: {}
availableReplicas integeravailableReplicas is the total number of available worker machines in this cluster. A machine is considered available when Machine’s Available condition is true.Optional: {}

WorkersTopology

WorkersTopology represents the different sets of worker nodes in the cluster.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
machineDeployments MachineDeploymentTopology arraymachineDeployments is a list of machine deployments in the cluster.MaxItems: 2000
MinItems: 1
Optional: {}
machinePools MachinePoolTopology arraymachinePools is a list of machine pools in the cluster.MaxItems: 2000
MinItems: 1
Optional: {}

controlplane.cluster.x-k8s.io/v1beta2

Package v1beta2 contains API Schema definitions for the kubeadm v1beta2 API group.

Resource Types

KubeadmControlPlane

KubeadmControlPlane is the Schema for the KubeadmControlPlane API.

Appears in:

FieldDescriptionDefaultValidation
apiVersion stringcontrolplane.cluster.x-k8s.io/v1beta2
kind stringKubeadmControlPlane
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.MinProperties: 1
Optional: {}
spec KubeadmControlPlaneSpecspec is the desired state of KubeadmControlPlane.Required: {}
status KubeadmControlPlaneStatusstatus is the observed state of KubeadmControlPlane.MinProperties: 1
Optional: {}

KubeadmControlPlaneDeprecatedStatus

KubeadmControlPlaneDeprecatedStatus groups all the status fields that are deprecated and will be removed in a future version. See https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more context.

Appears in:

FieldDescriptionDefaultValidation
v1beta1 KubeadmControlPlaneV1Beta1DeprecatedStatusv1beta1 groups all the status fields that are deprecated and will be removed when support for v1beta1 will be dropped.Optional: {}

KubeadmControlPlaneInitializationStatus

KubeadmControlPlaneInitializationStatus provides observations of the KubeadmControlPlane initialization process.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
controlPlaneInitialized booleancontrolPlaneInitialized is true when the KubeadmControlPlane provider reports that the Kubernetes control plane is initialized;
A control plane is considered initialized when it can accept requests, no matter if this happens before
the control plane is fully provisioned or not.
NOTE: this field is part of the Cluster API contract, and it is used to orchestrate initial Machine provisioning.
Optional: {}

KubeadmControlPlaneList

KubeadmControlPlaneList contains a list of KubeadmControlPlane.

FieldDescriptionDefaultValidation
apiVersion stringcontrolplane.cluster.x-k8s.io/v1beta2
kind stringKubeadmControlPlaneList
metadata ListMetaRefer to Kubernetes API documentation for fields of metadata.Optional: {}
items KubeadmControlPlane arrayitems is the list of KubeadmControlPlanes.

KubeadmControlPlaneMachineTemplate

KubeadmControlPlaneMachineTemplate defines the template for Machines in a KubeadmControlPlane object.

Appears in:

FieldDescriptionDefaultValidation
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.MinProperties: 1
Optional: {}
spec KubeadmControlPlaneMachineTemplateSpecspec defines the spec for Machines
in a KubeadmControlPlane object.
Required: {}

KubeadmControlPlaneMachineTemplateDeletionSpec

KubeadmControlPlaneMachineTemplateDeletionSpec contains configuration options for Machine deletion.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
nodeDrainTimeoutSeconds integernodeDrainTimeoutSeconds is the total amount of time that the controller will spend on draining a controlplane node
The default value is 0, meaning that the node can be drained without any time limitations.
NOTE: nodeDrainTimeoutSeconds is different from kubectl drain --timeout
Minimum: 0
Optional: {}
nodeVolumeDetachTimeoutSeconds integernodeVolumeDetachTimeoutSeconds is the total amount of time that the controller will spend on waiting for all volumes
to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations.
Minimum: 0
Optional: {}
nodeDeletionTimeoutSeconds integernodeDeletionTimeoutSeconds defines how long the machine controller will attempt to delete the Node that the Machine
hosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely.
If no value is provided, the default value for this property of the Machine resource will be used.
Minimum: 0
Optional: {}

KubeadmControlPlaneMachineTemplateSpec

KubeadmControlPlaneMachineTemplateSpec defines the spec for Machines in a KubeadmControlPlane object.

Appears in:

FieldDescriptionDefaultValidation
infrastructureRef ContractVersionedObjectReferenceinfrastructureRef is a required reference to a custom resource
offered by an infrastructure provider.
Required: {}
readinessGates MachineReadinessGate arrayreadinessGates specifies additional conditions to include when evaluating Machine Ready condition;
KubeadmControlPlane will always add readinessGates for the condition it is setting on the Machine:
NodeKubeadmLabelsAndTaintsSet, APIServerPodHealthy, SchedulerPodHealthy, ControllerManagerPodHealthy, and if etcd is managed by CKP also
EtcdPodHealthy, EtcdMemberHealthy.
This field can be used e.g. to instruct the machine controller to include in the computation for Machine’s ready
computation a condition, managed by an external controllers, reporting the status of special software/hardware installed on the Machine.
MaxItems: 32
MinItems: 1
Optional: {}
deletion KubeadmControlPlaneMachineTemplateDeletionSpecdeletion contains configuration options for Machine deletion.MinProperties: 1
Optional: {}
taints MachineTaint arraytaints are the node taints that Cluster API will manage.
This list is not necessarily complete: other Kubernetes components may add or remove other taints from nodes,
e.g. the node controller might add the node.kubernetes.io/not-ready taint.
Only those taints defined in this list will be added or removed by core Cluster API controllers.
There can be at most 64 taints.
A pod would have to tolerate all existing taints to run on the corresponding node.
NOTE: This list is implemented as a “map” type, meaning that individual elements can be managed by different owners.
MaxItems: 64
MinItems: 1
Optional: {}

KubeadmControlPlaneRemediationSpec

KubeadmControlPlaneRemediationSpec controls how unhealthy control plane Machines are remediated.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
maxRetry integermaxRetry is the Max number of retries while attempting to remediate an unhealthy machine.
A retry happens when a machine that was created as a replacement for an unhealthy machine also fails.
For example, given a control plane with three machines M1, M2, M3:
M1 become unhealthy; remediation happens, and M1-1 is created as a replacement.
If M1-1 (replacement of M1) has problems while bootstrapping it will become unhealthy, and then be
remediated; such operation is considered a retry, remediation-retry #1.
If M1-2 (replacement of M1-1) becomes unhealthy, remediation-retry #2 will happen, etc.
A retry could happen only after retryPeriodSeconds from the previous retry.
If a machine is marked as unhealthy after minHealthyPeriodSeconds from the previous remediation expired,
this is not considered a retry anymore because the new issue is assumed unrelated from the previous one.
If not set, the remedation will be retried infinitely.
Optional: {}
retryPeriodSeconds integerretryPeriodSeconds is the duration that KCP should wait before remediating a machine being created as a replacement
for an unhealthy machine (a retry).
If not set, a retry will happen immediately.
Minimum: 0
Optional: {}
minHealthyPeriodSeconds integerminHealthyPeriodSeconds defines the duration after which KCP will consider any failure to a machine unrelated
from the previous one. In this case the remediation is not considered a retry anymore, and thus the retry
counter restarts from 0. For example, assuming minHealthyPeriodSeconds is set to 1h (default)
M1 become unhealthy; remediation happens, and M1-1 is created as a replacement.
If M1-1 (replacement of M1) has problems within the 1hr after the creation, also
this machine will be remediated and this operation is considered a retry - a problem related
to the original issue happened to M1 -.
If instead the problem on M1-1 is happening after minHealthyPeriodSeconds expired, e.g. four days after
m1-1 has been created as a remediation of M1, the problem on M1-1 is considered unrelated to
the original issue happened to M1.
If not set, this value is defaulted to 1h.
Minimum: 0
Optional: {}

KubeadmControlPlaneRolloutBeforeSpec

KubeadmControlPlaneRolloutBeforeSpec describes when a rollout should be performed on the KCP machines.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
certificatesExpiryDays integercertificatesExpiryDays indicates a rollout needs to be performed if the
certificates of the machine will expire within the specified days.
The minimum for this field is 7.
Minimum: 7
Optional: {}

KubeadmControlPlaneRolloutSpec

KubeadmControlPlaneRolloutSpec allows you to configure the behaviour of rolling updates to the control plane Machines. It allows you to require that all Machines are replaced before or after a certain time, and allows you to define the strategy used during rolling replacements.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
before KubeadmControlPlaneRolloutBeforeSpecbefore is a field to indicate a rollout should be performed
if the specified criteria is met.
MinProperties: 1
Optional: {}
strategy KubeadmControlPlaneRolloutStrategystrategy specifies how to roll out control plane Machines.MinProperties: 1
Optional: {}

KubeadmControlPlaneRolloutStrategy

KubeadmControlPlaneRolloutStrategy describes how to replace existing machines with new ones.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
type KubeadmControlPlaneRolloutStrategyTypetype of rollout. Currently the only supported strategy is
“RollingUpdate”.
Default is RollingUpdate.
Enum: [RollingUpdate]
Required: {}
rollingUpdate KubeadmControlPlaneRolloutStrategyRollingUpdaterollingUpdate is the rolling update config params. Present only if
type = RollingUpdate.
MinProperties: 1
Optional: {}

KubeadmControlPlaneRolloutStrategyRollingUpdate

KubeadmControlPlaneRolloutStrategyRollingUpdate is used to control the desired behavior of rolling update.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
maxSurge IntOrStringmaxSurge is the maximum number of control planes that can be scheduled above or under the
desired number of control planes.
Value can be an absolute number 1 or 0.
Defaults to 1.
Example: when this is set to 1, the control plane can be scaled
up immediately when the rolling update starts.
Optional: {}

KubeadmControlPlaneRolloutStrategyType

Underlying type: string

KubeadmControlPlaneRolloutStrategyType defines the rollout strategies for a KubeadmControlPlane.

Validation:

  • Enum: [RollingUpdate]

Appears in:

FieldDescription
RollingUpdateRollingUpdateStrategyType replaces the old control planes by new one using rolling update
i.e. gradually scale up or down the old control planes and scale up or down the new one.

KubeadmControlPlaneSpec

KubeadmControlPlaneSpec defines the desired state of KubeadmControlPlane.

Appears in:

FieldDescriptionDefaultValidation
replicas integerreplicas is the number of desired machines. Defaults to 1. When stacked etcd is used only
odd numbers are permitted, as per etcd best practice.
This is a pointer to distinguish between explicit zero and not specified.
Optional: {}
version stringversion defines the desired Kubernetes version.MaxLength: 256
MinLength: 1
Required: {}
machineTemplate KubeadmControlPlaneMachineTemplatemachineTemplate contains information about how machines
should be shaped when creating or updating a control plane.
Required: {}
kubeadmConfigSpec KubeadmConfigSpeckubeadmConfigSpec is a KubeadmConfigSpec
to use for initializing and joining machines to the control plane.
MinProperties: 1
Optional: {}
rollout KubeadmControlPlaneRolloutSpecrollout allows you to configure the behaviour of rolling updates to the control plane Machines.
It allows you to require that all Machines are replaced before or after a certain time,
and allows you to define the strategy used during rolling replacements.
MinProperties: 1
Optional: {}
remediation KubeadmControlPlaneRemediationSpecremediation controls how unhealthy Machines are remediated.MinProperties: 1
Optional: {}
machineNaming MachineNamingSpecmachineNaming allows changing the naming pattern used when creating Machines.
InfraMachines & KubeadmConfigs will use the same name as the corresponding Machines.
MinProperties: 1
Optional: {}

KubeadmControlPlaneStatus

KubeadmControlPlaneStatus defines the observed state of KubeadmControlPlane.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
conditions Condition arrayconditions represents the observations of a KubeadmControlPlane’s current state.
Known condition types are Available, CertificatesAvailable, EtcdClusterAvailable, MachinesReady, MachinesUpToDate,
ScalingUp, ScalingDown, Remediating, Deleting, Paused.
MaxItems: 32
Optional: {}
initialization KubeadmControlPlaneInitializationStatusinitialization provides observations of the KubeadmControlPlane initialization process.
NOTE: Fields in this struct are part of the Cluster API contract and are used to orchestrate initial Machine provisioning.
MinProperties: 1
Optional: {}
selector stringselector is the label selector in string format to avoid introspection
by clients, and is used to provide the CRD-based integration for the
scale subresource and additional integrations for things like kubectl
describe.. The string will be in the same format as the query-param syntax.
More info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors
MaxLength: 4096
MinLength: 1
Optional: {}
replicas integerreplicas is the total number of non-terminated machines targeted by this control plane
(their labels match the selector).
Optional: {}
readyReplicas integerreadyReplicas is the number of ready replicas for this KubeadmControlPlane. A machine is considered ready when Machine’s Ready condition is true.Optional: {}
availableReplicas integeravailableReplicas is the number of available replicas targeted by this KubeadmControlPlane. A machine is considered available when Machine’s Available condition is true.Optional: {}
upToDateReplicas integerupToDateReplicas is the number of up-to-date replicas targeted by this KubeadmControlPlane. A machine is considered up-to-date when Machine’s UpToDate condition is true.Optional: {}
version stringversion represents the minimum Kubernetes version for the control plane machines
in the cluster.
MaxLength: 256
MinLength: 1
Optional: {}
observedGeneration integerobservedGeneration is the latest generation observed by the controller.Minimum: 1
Optional: {}
lastRemediation LastRemediationStatuslastRemediation stores info about last remediation performed.Optional: {}
deprecated KubeadmControlPlaneDeprecatedStatusdeprecated groups all the status fields that are deprecated and will be removed when all the nested field are removed.Optional: {}

KubeadmControlPlaneTemplate

KubeadmControlPlaneTemplate is the Schema for the kubeadmcontrolplanetemplates API. NOTE: This CRD can only be used if the ClusterTopology feature gate is enabled.

Appears in:

FieldDescriptionDefaultValidation
apiVersion stringcontrolplane.cluster.x-k8s.io/v1beta2
kind stringKubeadmControlPlaneTemplate
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.MinProperties: 1
Optional: {}
spec KubeadmControlPlaneTemplateSpecspec is the desired state of KubeadmControlPlaneTemplate.Optional: {}

KubeadmControlPlaneTemplateList

KubeadmControlPlaneTemplateList contains a list of KubeadmControlPlaneTemplate.

FieldDescriptionDefaultValidation
apiVersion stringcontrolplane.cluster.x-k8s.io/v1beta2
kind stringKubeadmControlPlaneTemplateList
metadata ListMetaRefer to Kubernetes API documentation for fields of metadata.Optional: {}
items KubeadmControlPlaneTemplate arrayitems is the list of KubeadmControlPlaneTemplates.

KubeadmControlPlaneTemplateMachineTemplate

KubeadmControlPlaneTemplateMachineTemplate defines the template for Machines in a KubeadmControlPlaneTemplate object. NOTE: KubeadmControlPlaneTemplateMachineTemplate is similar to KubeadmControlPlaneMachineTemplate but omits ObjectMeta and InfrastructureRef fields. These fields do not make sense on the KubeadmControlPlaneTemplate, because they are calculated by the Cluster topology reconciler during reconciliation and thus cannot be configured on the KubeadmControlPlaneTemplate.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.MinProperties: 1
Optional: {}
spec KubeadmControlPlaneTemplateMachineTemplateSpecspec defines the spec for Machines
in a KubeadmControlPlane object.
MinProperties: 1
Optional: {}

KubeadmControlPlaneTemplateMachineTemplateDeletionSpec

KubeadmControlPlaneTemplateMachineTemplateDeletionSpec contains configuration options for Machine deletion.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
nodeDrainTimeoutSeconds integernodeDrainTimeoutSeconds is the total amount of time that the controller will spend on draining a controlplane node
The default value is 0, meaning that the node can be drained without any time limitations.
NOTE: nodeDrainTimeoutSeconds is different from kubectl drain --timeout
Minimum: 0
Optional: {}
nodeVolumeDetachTimeoutSeconds integernodeVolumeDetachTimeoutSeconds is the total amount of time that the controller will spend on waiting for all volumes
to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations.
Minimum: 0
Optional: {}
nodeDeletionTimeoutSeconds integernodeDeletionTimeoutSeconds defines how long the machine controller will attempt to delete the Node that the Machine
hosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely.
If no value is provided, the default value for this property of the Machine resource will be used.
Minimum: 0
Optional: {}

KubeadmControlPlaneTemplateMachineTemplateSpec

KubeadmControlPlaneTemplateMachineTemplateSpec defines the spec for Machines in a KubeadmControlPlane object.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
deletion KubeadmControlPlaneTemplateMachineTemplateDeletionSpecdeletion contains configuration options for Machine deletion.MinProperties: 1
Optional: {}
taints MachineTaint arraytaints are the node taints that Cluster API will manage.
This list is not necessarily complete: other Kubernetes components may add or remove other taints from nodes,
e.g. the node controller might add the node.kubernetes.io/not-ready taint.
Only those taints defined in this list will be added or removed by core Cluster API controllers.
There can be at most 64 taints.
A pod would have to tolerate all existing taints to run on the corresponding node.
NOTE: This list is implemented as a “map” type, meaning that individual elements can be managed by different owners.
MaxItems: 64
MinItems: 1
Optional: {}

KubeadmControlPlaneTemplateResource

KubeadmControlPlaneTemplateResource describes the data needed to create a KubeadmControlPlane from a template.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.MinProperties: 1
Optional: {}
spec KubeadmControlPlaneTemplateResourceSpecspec is the desired state of KubeadmControlPlaneTemplateResource.MinProperties: 1
Optional: {}

KubeadmControlPlaneTemplateResourceSpec

KubeadmControlPlaneTemplateResourceSpec defines the desired state of KubeadmControlPlane. NOTE: KubeadmControlPlaneTemplateResourceSpec is similar to KubeadmControlPlaneSpec but omits Replicas and Version fields. These fields do not make sense on the KubeadmControlPlaneTemplate, because they are calculated by the Cluster topology reconciler during reconciliation and thus cannot be configured on the KubeadmControlPlaneTemplate.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
machineTemplate KubeadmControlPlaneTemplateMachineTemplatemachineTemplate contains information about how machines
should be shaped when creating or updating a control plane.
MinProperties: 1
Optional: {}
kubeadmConfigSpec KubeadmConfigSpeckubeadmConfigSpec is a KubeadmConfigSpec
to use for initializing and joining machines to the control plane.
MinProperties: 1
Optional: {}
rollout KubeadmControlPlaneRolloutSpecrollout allows you to configure the behaviour of rolling updates to the control plane Machines.
It allows you to require that all Machines are replaced before or after a certain time,
and allows you to define the strategy used during rolling replacements.
MinProperties: 1
Optional: {}
remediation KubeadmControlPlaneRemediationSpecremediation controls how unhealthy Machines are remediated.MinProperties: 1
Optional: {}
machineNaming MachineNamingSpecmachineNaming allows changing the naming pattern used when creating Machines.
InfraMachines & KubeadmConfigs will use the same name as the corresponding Machines.
MinProperties: 1
Optional: {}

KubeadmControlPlaneTemplateSpec

KubeadmControlPlaneTemplateSpec defines the desired state of KubeadmControlPlaneTemplate.

Appears in:

FieldDescriptionDefaultValidation
template KubeadmControlPlaneTemplateResourcetemplate defines the desired state of KubeadmControlPlaneTemplate.MinProperties: 1
Required: {}

KubeadmControlPlaneV1Beta1DeprecatedStatus

KubeadmControlPlaneV1Beta1DeprecatedStatus groups all the status fields that are deprecated and will be removed when support for v1beta1 will be dropped. See https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more context.

Appears in:

FieldDescriptionDefaultValidation
conditions Conditionsconditions defines current service state of the KubeadmControlPlane.
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
Optional: {}
failureReason KubeadmControlPlaneStatusErrorfailureReason indicates that there is a terminal problem reconciling the
state, and will be set to a token value suitable for
programmatic interpretation.
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
Optional: {}
failureMessage stringfailureMessage indicates that there is a terminal problem reconciling the
state, and will be set to a descriptive error message.
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
MaxLength: 10240
MinLength: 1
Optional: {}
updatedReplicas integerupdatedReplicas is the total number of non-terminated machines targeted by this control plane
that have the desired template spec.
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
Optional: {}
readyReplicas integerreadyReplicas is the total number of fully running and ready control plane machines.
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
Optional: {}
unavailableReplicas integerunavailableReplicas is the total number of unavailable machines targeted by this control plane.
This is the total number of machines that are still required for
the deployment to have 100% available capacity. They may either
be machines that are running but not yet ready or machines
that still have not been created.
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
Optional: {}

LastRemediationStatus

LastRemediationStatus stores info about last remediation performed. NOTE: if for any reason information about last remediation are lost, RetryCount is going to restart from 0 and thus more remediations than expected might happen.

Appears in:

FieldDescriptionDefaultValidation
machine stringmachine is the machine name of the latest machine being remediated.MaxLength: 253
MinLength: 1
Required: {}
retryCount integerretryCount used to keep track of remediation retry for the last remediated machine.
A retry happens when a machine that was created as a replacement for an unhealthy machine also fails.
Minimum: 0
Required: {}

MachineNamingSpec

MachineNamingSpec allows changing the naming pattern used when creating Machines. InfraMachines & KubeadmConfigs will use the same name as the corresponding Machines.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
template stringtemplate defines the template to use for generating the names of the Machine objects.
If not defined, it will fallback to \{\{ .kubeadmControlPlane.name \}\}-\{\{ .random \}\}.
If the generated name string exceeds 63 characters, it will be trimmed to 58 characters and will
get concatenated with a random suffix of length 5.
Length of the template string must not exceed 256 characters.
The template allows the following variables .cluster.name, .kubeadmControlPlane.name and .random.
The variable .cluster.name retrieves the name of the cluster object that owns the Machines being created.
The variable .kubeadmControlPlane.name retrieves the name of the KubeadmControlPlane object that owns the Machines being created.
The variable .random is substituted with random alphanumeric string, without vowels, of length 5. This variable is required
part of the template. If not provided, validation will fail.
MaxLength: 256
MinLength: 1
Optional: {}

ipam.cluster.x-k8s.io/v1alpha1

Package v1alpha1 contains API Schema definitions for the exp v1alpha1 IPAM API.

Deprecated: This package is deprecated and is going to be removed when support for v1beta1 will be dropped.

Resource Types

IPAddress

IPAddress is the Schema for the ipaddress API.

Appears in:

FieldDescriptionDefaultValidation
apiVersion stringipam.cluster.x-k8s.io/v1alpha1
kind stringIPAddress
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.MinProperties: 1
Optional: {}
spec IPAddressSpecspec is the desired state of IPAddress.Optional: {}

IPAddressClaim

IPAddressClaim is the Schema for the ipaddressclaim API.

Appears in:

FieldDescriptionDefaultValidation
apiVersion stringipam.cluster.x-k8s.io/v1alpha1
kind stringIPAddressClaim
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.MinProperties: 1
Optional: {}
spec IPAddressClaimSpecspec is the desired state of IPAddressClaim.Optional: {}
status IPAddressClaimStatusstatus is the observed state of IPAddressClaim.Optional: {}

IPAddressClaimList

IPAddressClaimList is a list of IPAddressClaims.

FieldDescriptionDefaultValidation
apiVersion stringipam.cluster.x-k8s.io/v1alpha1
kind stringIPAddressClaimList
metadata ListMetaRefer to Kubernetes API documentation for fields of metadata.Optional: {}
items IPAddressClaim arrayitems is the list of IPAddressClaims.

IPAddressClaimSpec

IPAddressClaimSpec is the desired state of an IPAddressClaim.

Appears in:

FieldDescriptionDefaultValidation
poolRef TypedLocalObjectReferencepoolRef is a reference to the pool from which an IP address should be created.Required: {}

IPAddressClaimStatus

IPAddressClaimStatus is the observed status of a IPAddressClaim.

Appears in:

FieldDescriptionDefaultValidation
addressRef LocalObjectReferenceaddressRef is a reference to the address that was created for this claim.Optional: {}
conditions Conditionsconditions summarises the current state of the IPAddressClaimOptional: {}

IPAddressList

IPAddressList is a list of IPAddress.

FieldDescriptionDefaultValidation
apiVersion stringipam.cluster.x-k8s.io/v1alpha1
kind stringIPAddressList
metadata ListMetaRefer to Kubernetes API documentation for fields of metadata.Optional: {}
items IPAddress arrayitems is the list of IPAddresses.

IPAddressSpec

IPAddressSpec is the desired state of an IPAddress.

Appears in:

FieldDescriptionDefaultValidation
claimRef LocalObjectReferenceclaimRef is a reference to the claim this IPAddress was created for.Required: {}
poolRef TypedLocalObjectReferencepoolRef is a reference to the pool that this IPAddress was created from.Required: {}
address stringaddress is the IP address.MaxLength: 39
MinLength: 1
Required: {}
prefix integerprefix is the prefix of the address.Required: {}
gateway stringgateway is the network gateway of the network the address is from.MaxLength: 39
MinLength: 1
Optional: {}

ipam.cluster.x-k8s.io/v1beta2

Package v1beta2 contains API Schema definitions for the v1beta2 IPAM API.

Resource Types

IPAddress

IPAddress is the Schema for the ipaddress API.

Appears in:

FieldDescriptionDefaultValidation
apiVersion stringipam.cluster.x-k8s.io/v1beta2
kind stringIPAddress
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.MinProperties: 1
Optional: {}
spec IPAddressSpecspec is the desired state of IPAddress.Required: {}

IPAddressClaim

IPAddressClaim is the Schema for the ipaddressclaim API.

Appears in:

FieldDescriptionDefaultValidation
apiVersion stringipam.cluster.x-k8s.io/v1beta2
kind stringIPAddressClaim
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.MinProperties: 1
Optional: {}
spec IPAddressClaimSpecspec is the desired state of IPAddressClaim.Required: {}
status IPAddressClaimStatusstatus is the observed state of IPAddressClaim.MinProperties: 1
Optional: {}

IPAddressClaimDeprecatedStatus

IPAddressClaimDeprecatedStatus groups all the status fields that are deprecated and will be removed in a future version. See https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more context.

Appears in:

FieldDescriptionDefaultValidation
v1beta1 IPAddressClaimV1Beta1DeprecatedStatusv1beta1 groups all the status fields that are deprecated and will be removed when support for v1beta1 will be dropped.Optional: {}

IPAddressClaimList

IPAddressClaimList is a list of IPAddressClaims.

FieldDescriptionDefaultValidation
apiVersion stringipam.cluster.x-k8s.io/v1beta2
kind stringIPAddressClaimList
metadata ListMetaRefer to Kubernetes API documentation for fields of metadata.Optional: {}
items IPAddressClaim arrayitems is the list of IPAddressClaims.

IPAddressClaimReference

IPAddressClaimReference is a reference to an IPAddressClaim.

Appears in:

FieldDescriptionDefaultValidation
name stringname of the IPAddressClaim.
name must consist of lower case alphanumeric characters, ‘-’ or ‘.’, and must start and end with an alphanumeric character.
MaxLength: 253
MinLength: 1
Pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
Required: {}

IPAddressClaimSpec

IPAddressClaimSpec is the desired state of an IPAddressClaim.

Appears in:

FieldDescriptionDefaultValidation
clusterName stringclusterName is the name of the Cluster this object belongs to.MaxLength: 63
MinLength: 1
Optional: {}
poolRef IPPoolReferencepoolRef is a reference to the pool from which an IP address should be created.Required: {}

IPAddressClaimStatus

IPAddressClaimStatus is the observed status of a IPAddressClaim.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
conditions Condition arrayconditions represents the observations of a IPAddressClaim’s current state.
Known condition types are Ready.
MaxItems: 32
Optional: {}
addressRef IPAddressReferenceaddressRef is a reference to the address that was created for this claim.Optional: {}
deprecated IPAddressClaimDeprecatedStatusdeprecated groups all the status fields that are deprecated and will be removed when all the nested field are removed.Optional: {}

IPAddressClaimV1Beta1DeprecatedStatus

IPAddressClaimV1Beta1DeprecatedStatus groups all the status fields that are deprecated and will be removed when support for v1beta1 will be dropped. See https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more context.

Appears in:

FieldDescriptionDefaultValidation
conditions Conditionsconditions summarises the current state of the IPAddressClaim
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
Optional: {}

IPAddressList

IPAddressList is a list of IPAddress.

FieldDescriptionDefaultValidation
apiVersion stringipam.cluster.x-k8s.io/v1beta2
kind stringIPAddressList
metadata ListMetaRefer to Kubernetes API documentation for fields of metadata.Optional: {}
items IPAddress arrayitems is the list of IPAddresses.

IPAddressReference

IPAddressReference is a reference to an IPAddress.

Appears in:

FieldDescriptionDefaultValidation
name stringname of the IPAddress.
name must consist of lower case alphanumeric characters, ‘-’ or ‘.’, and must start and end with an alphanumeric character.
MaxLength: 253
MinLength: 1
Pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
Required: {}

IPAddressSpec

IPAddressSpec is the desired state of an IPAddress.

Appears in:

FieldDescriptionDefaultValidation
claimRef IPAddressClaimReferenceclaimRef is a reference to the claim this IPAddress was created for.Required: {}
poolRef IPPoolReferencepoolRef is a reference to the pool that this IPAddress was created from.Required: {}
address stringaddress is the IP address.MaxLength: 39
MinLength: 1
Required: {}
prefix integerprefix is the prefix of the address.Maximum: 128
Minimum: 0
Required: {}
gateway stringgateway is the network gateway of the network the address is from.MaxLength: 39
MinLength: 1
Optional: {}

IPPoolReference

IPPoolReference is a reference to an IPPool.

Appears in:

FieldDescriptionDefaultValidation
name stringname of the IPPool.
name must consist of lower case alphanumeric characters, ‘-’ or ‘.’, and must start and end with an alphanumeric character.
MaxLength: 253
MinLength: 1
Pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
Required: {}
kind stringkind of the IPPool.
kind must consist of alphanumeric characters or ‘-’, start with an alphabetic character, and end with an alphanumeric character.
MaxLength: 63
MinLength: 1
Pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
Required: {}
apiGroup stringapiGroup of the IPPool.
apiGroup must be fully qualified domain name.
MaxLength: 253
MinLength: 1
Pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
Required: {}

runtime.cluster.x-k8s.io/v1alpha1

Package v1alpha1 contains the v1alpha1 implementation of ExtensionConfig.

Deprecated: This package is deprecated and is going to be removed when support for v1beta1 will be dropped.

Resource Types

ClientConfig

ClientConfig contains the information to make a client connection with an Extension server.

Appears in:

FieldDescriptionDefaultValidation
url stringurl gives the location of the Extension server, in standard URL form
(scheme://host:port/path).
Note: Exactly one of url or service must be specified.
The scheme must be “https”.
The host should not refer to a service running in the cluster; use
the service field instead.
A path is optional, and if present may be any string permissible in
a URL. If a path is set it will be used as prefix to the hook-specific path.
Attempting to use a user or basic auth e.g. “user:password@” is not
allowed. Fragments (”#...”) and query parameters (”?...”) are not
allowed either.
MaxLength: 512
MinLength: 1
Optional: {}
service ServiceReferenceservice is a reference to the Kubernetes service for the Extension server.
Note: Exactly one of url or service must be specified.
If the Extension server is running within a cluster, then you should use service.
Optional: {}
caBundle integer arraycaBundle is a PEM encoded CA bundle which will be used to validate the Extension server’s server certificate.MaxLength: 51200
MinLength: 1
Optional: {}

ExtensionConfig

ExtensionConfig is the Schema for the ExtensionConfig API.

Appears in:

FieldDescriptionDefaultValidation
apiVersion stringruntime.cluster.x-k8s.io/v1alpha1
kind stringExtensionConfig
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.MinProperties: 1
Optional: {}
spec ExtensionConfigSpecspec is the desired state of the ExtensionConfig.Optional: {}
status ExtensionConfigStatusstatus is the current state of the ExtensionConfigOptional: {}

ExtensionConfigList

ExtensionConfigList contains a list of ExtensionConfig.

FieldDescriptionDefaultValidation
apiVersion stringruntime.cluster.x-k8s.io/v1alpha1
kind stringExtensionConfigList
metadata ListMetaRefer to Kubernetes API documentation for fields of metadata.Optional: {}
items ExtensionConfig arrayitems is the list of ExtensionConfigs.

ExtensionConfigSpec

ExtensionConfigSpec defines the desired state of ExtensionConfig.

Appears in:

FieldDescriptionDefaultValidation
clientConfig ClientConfigclientConfig defines how to communicate with the Extension server.Required: {}
namespaceSelector LabelSelectornamespaceSelector decides whether to call the hook for an object based
on whether the namespace for that object matches the selector.
Defaults to the empty LabelSelector, which matches all objects.
Optional: {}
settings object (keys:string, values:string)settings defines key value pairs to be passed to all calls
to all supported RuntimeExtensions.
Note: Settings can be overridden on the ClusterClass.
Optional: {}

ExtensionConfigStatus

ExtensionConfigStatus defines the observed state of ExtensionConfig.

Appears in:

FieldDescriptionDefaultValidation
handlers ExtensionHandler arrayhandlers defines the current ExtensionHandlers supported by an Extension.MaxItems: 512
Optional: {}
conditions Conditionsconditions define the current service state of the ExtensionConfig.Optional: {}
v1beta2 ExtensionConfigV1Beta2Statusv1beta2 groups all the fields that will be added or modified in ExtensionConfig’s status with the V1Beta2 version.Optional: {}

ExtensionConfigV1Beta2Status

ExtensionConfigV1Beta2Status groups all the fields that will be added or modified in ExtensionConfig with the V1Beta2 version. See https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more context.

Appears in:

FieldDescriptionDefaultValidation
conditions Condition arrayconditions represents the observations of a ExtensionConfig’s current state.
Known condition types are Discovered, Paused.
MaxItems: 32
Optional: {}

ExtensionHandler

ExtensionHandler specifies the details of a handler for a particular runtime hook registered by an Extension server.

Appears in:

FieldDescriptionDefaultValidation
name stringname is the unique name of the ExtensionHandler.MaxLength: 512
MinLength: 1
Required: {}
requestHook GroupVersionHookrequestHook defines the versioned runtime hook which this ExtensionHandler serves.Required: {}
timeoutSeconds integertimeoutSeconds defines the timeout duration for client calls to the ExtensionHandler.
Defaults to 10 is not set.
Optional: {}
failurePolicy FailurePolicyfailurePolicy defines how failures in calls to the ExtensionHandler should be handled by a client.
Defaults to Fail if not set.
Enum: [Ignore Fail]
Optional: {}

FailurePolicy

Underlying type: string

FailurePolicy specifies how unrecognized errors when calling the ExtensionHandler are handled. FailurePolicy helps with extensions not working consistently, e.g. due to an intermittent network issue. The following type of errors are never ignored by FailurePolicy Ignore:

  • Misconfigurations (e.g. incompatible types)
  • Extension explicitly returns a Status Failure.

Appears in:

FieldDescription
IgnoreFailurePolicyIgnore means that an error when calling the extension is ignored.
FailFailurePolicyFail means that an error when calling the extension is propagated as an error.

GroupVersionHook

GroupVersionHook defines the runtime hook when the ExtensionHandler is called.

Appears in:

FieldDescriptionDefaultValidation
apiVersion stringapiVersion is the group and version of the Hook.MaxLength: 512
MinLength: 1
Required: {}
hook stringhook is the name of the hook.MaxLength: 256
MinLength: 1
Required: {}

ServiceReference

ServiceReference holds a reference to a Kubernetes Service of an Extension server.

Appears in:

FieldDescriptionDefaultValidation
namespace stringnamespace is the namespace of the service.MaxLength: 63
MinLength: 1
Required: {}
name stringname is the name of the service.MaxLength: 63
MinLength: 1
Required: {}
path stringpath is an optional URL path and if present may be any string permissible in
a URL. If a path is set it will be used as prefix to the hook-specific path.
MaxLength: 512
MinLength: 1
Optional: {}
port integerport is the port on the service that’s hosting the Extension server.
Defaults to 443.
Port should be a valid port number (1-65535, inclusive).
Optional: {}

runtime.cluster.x-k8s.io/v1beta2

Package v1beta2 contains the v1beta2 implementation of ExtensionConfig.

Resource Types

ClientConfig

ClientConfig contains the information to make a client connection with an Extension server.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
url stringurl gives the location of the Extension server, in standard URL form
(scheme://host:port/path).
Note: Exactly one of url or service must be specified.
The scheme must be “https”.
The host should not refer to a service running in the cluster; use
the service field instead.
A path is optional, and if present may be any string permissible in
a URL. If a path is set it will be used as prefix to the hook-specific path.
Attempting to use a user or basic auth e.g. “user:password@” is not
allowed. Fragments (”#...”) and query parameters (”?...”) are not
allowed either.
MaxLength: 512
MinLength: 1
Optional: {}
service ServiceReferenceservice is a reference to the Kubernetes service for the Extension server.
Note: Exactly one of url or service must be specified.
If the Extension server is running within a cluster, then you should use service.
Optional: {}
caBundle integer arraycaBundle is a PEM encoded CA bundle which will be used to validate the Extension server’s server certificate.MaxLength: 51200
MinLength: 1
Optional: {}

ExtensionConfig

ExtensionConfig is the Schema for the ExtensionConfig API. NOTE: This CRD can only be used if the RuntimeSDK feature gate is enabled.

Appears in:

FieldDescriptionDefaultValidation
apiVersion stringruntime.cluster.x-k8s.io/v1beta2
kind stringExtensionConfig
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.MinProperties: 1
Optional: {}
spec ExtensionConfigSpecspec is the desired state of the ExtensionConfig.Required: {}
status ExtensionConfigStatusstatus is the current state of the ExtensionConfigMinProperties: 1
Optional: {}

ExtensionConfigDeprecatedStatus

ExtensionConfigDeprecatedStatus groups all the status fields that are deprecated and will be removed in a future version.

Appears in:

FieldDescriptionDefaultValidation
v1beta1 ExtensionConfigV1Beta1DeprecatedStatusv1beta1 groups all the status fields that are deprecated and will be removed when support for v1beta1 will be dropped.
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
Optional: {}

ExtensionConfigList

ExtensionConfigList contains a list of ExtensionConfig.

FieldDescriptionDefaultValidation
apiVersion stringruntime.cluster.x-k8s.io/v1beta2
kind stringExtensionConfigList
metadata ListMetaRefer to Kubernetes API documentation for fields of metadata.Optional: {}
items ExtensionConfig arrayitems is the list of ExtensionConfigs.

ExtensionConfigSpec

ExtensionConfigSpec defines the desired state of ExtensionConfig.

Appears in:

FieldDescriptionDefaultValidation
clientConfig ClientConfigclientConfig defines how to communicate with the Extension server.MinProperties: 1
Required: {}
namespaceSelector LabelSelectornamespaceSelector decides whether to call the hook for an object based
on whether the namespace for that object matches the selector.
Defaults to the empty LabelSelector, which matches all objects.
Optional: {}
settings object (keys:string, values:string)settings defines key value pairs to be passed to all calls
to all supported RuntimeExtensions.
Note: Settings can be overridden on the ClusterClass.
Optional: {}

ExtensionConfigStatus

ExtensionConfigStatus defines the observed state of ExtensionConfig.

Validation:

  • MinProperties: 1

Appears in:

FieldDescriptionDefaultValidation
conditions Condition arrayconditions represents the observations of a ExtensionConfig’s current state.
Known condition types are Discovered, Paused.
MaxItems: 32
Optional: {}
handlers ExtensionHandler arrayhandlers defines the current ExtensionHandlers supported by an Extension.MaxItems: 512
Optional: {}
deprecated ExtensionConfigDeprecatedStatusdeprecated groups all the status fields that are deprecated and will be removed when all the nested field are removed.Optional: {}

ExtensionConfigV1Beta1DeprecatedStatus

ExtensionConfigV1Beta1DeprecatedStatus groups all the status fields that are deprecated and will be removed when support for v1beta1 will be dropped. See https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more context.

Appears in:

FieldDescriptionDefaultValidation
conditions Conditionsconditions defines current service state of the ExtensionConfig.
Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
Optional: {}

ExtensionHandler

ExtensionHandler specifies the details of a handler for a particular runtime hook registered by an Extension server.

Appears in:

FieldDescriptionDefaultValidation
name stringname is the unique name of the ExtensionHandler.MaxLength: 512
MinLength: 1
Required: {}
requestHook GroupVersionHookrequestHook defines the versioned runtime hook which this ExtensionHandler serves.Required: {}
timeoutSeconds integertimeoutSeconds defines the timeout duration for client calls to the ExtensionHandler.
Defaults to 10 if not set.
Minimum: 1
Optional: {}
failurePolicy FailurePolicyfailurePolicy defines how failures in calls to the ExtensionHandler should be handled by a client.
Defaults to Fail if not set.
Enum: [Ignore Fail]
Optional: {}

FailurePolicy

Underlying type: string

FailurePolicy specifies how unrecognized errors when calling the ExtensionHandler are handled. FailurePolicy helps with extensions not working consistently, e.g. due to an intermittent network issue. The following type of errors are never ignored by FailurePolicy Ignore:

  • Misconfigurations (e.g. incompatible types)
  • Extension explicitly returns a Status Failure.

Validation:

  • Enum: [Ignore Fail]

Appears in:

FieldDescription
IgnoreFailurePolicyIgnore means that an error when calling the extension is ignored.
FailFailurePolicyFail means that an error when calling the extension is propagated as an error.

GroupVersionHook

GroupVersionHook defines the runtime hook when the ExtensionHandler is called.

Appears in:

FieldDescriptionDefaultValidation
apiVersion stringapiVersion is the group and version of the Hook.MaxLength: 512
MinLength: 1
Required: {}
hook stringhook is the name of the hook.MaxLength: 256
MinLength: 1
Required: {}

ServiceReference

ServiceReference holds a reference to a Kubernetes Service of an Extension server.

Appears in:

FieldDescriptionDefaultValidation
namespace stringnamespace is the namespace of the service.MaxLength: 63
MinLength: 1
Required: {}
name stringname is the name of the service.MaxLength: 63
MinLength: 1
Required: {}
path stringpath is an optional URL path and if present may be any string permissible in
a URL. If a path is set it will be used as prefix to the hook-specific path.
MaxLength: 512
MinLength: 1
Optional: {}
port integerport is the port on the service that’s hosting the Extension server.
Defaults to 443.
Port should be a valid port number (1-65535, inclusive).
Optional: {}