This page documents v1beta1 API packages. For current types, see CRD API Reference (v1beta2).

API Reference

Packages

addons.cluster.x-k8s.io/v1beta1

Package v1beta1 contains API Schema definitions for the addons v1beta1 API group

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

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/v1beta1
kind stringClusterResourceSet
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.Optional: {}
spec ClusterResourceSetSpecspec is the desired state of ClusterResourceSet.Optional: {}
status ClusterResourceSetStatusstatus is the observed state of ClusterResourceSet.Optional: {}

ClusterResourceSetBinding

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

Appears in:

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

ClusterResourceSetBindingList

ClusterResourceSetBindingList contains a list of ClusterResourceSetBinding.

FieldDescriptionDefaultValidation
apiVersion stringaddons.cluster.x-k8s.io/v1beta1
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.
Note: this field mandatory in v1beta2.
MaxLength: 63
MinLength: 1
Optional: {}

ClusterResourceSetList

ClusterResourceSetList contains a list of ClusterResourceSet.

FieldDescriptionDefaultValidation
apiVersion stringaddons.cluster.x-k8s.io/v1beta1
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
Optional: {}
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.

Appears in:

FieldDescriptionDefaultValidation
observedGeneration integerobservedGeneration reflects the generation of the most recently observed ClusterResourceSet.Optional: {}
conditions Conditionsconditions defines current state of the ClusterResourceSet.Optional: {}
v1beta2 ClusterResourceSetV1Beta2Statusv1beta2 groups all the fields that will be added or modified in ClusterResourceSet’s status with the V1Beta2 version.Optional: {}

ClusterResourceSetV1Beta2Status

ClusterResourceSetV1Beta2Status groups all the fields that will be added or modified in ClusterResourceSet 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 ClusterResourceSet’s current state.
Known condition types are ResourceSetApplied, Deleting.
MaxItems: 32
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/v1beta1

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

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

Resource Types

APIEndpoint

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

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.
Optional: {}

APIServer

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

Appears in:

FieldDescriptionDefaultValidation
extraArgs object (keys:string, values:string)extraArgs is an extra set of flags to pass to the control plane component.Optional: {}
extraVolumes HostPathMount arrayextraVolumes is an extra set of host volumes, mounted to the control plane component.MaxItems: 100
Optional: {}
extraEnvs EnvVar arrayextraEnvs 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
Optional: {}
certSANs string arraycertSANs sets extra Subject Alternative Names for the API Server signing cert.MaxItems: 100
items:MaxLength: 253
items:MinLength: 1
Optional: {}
timeoutForControlPlane DurationtimeoutForControlPlane controls the timeout that we use for API server to appearOptional: {}

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.
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: {}
ttl Durationttl defines the time to live for this token. Defaults to 24h.
Expires and TTL are mutually exclusive.
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
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
items:MaxLength: 256
items:MinLength: 1
Optional: {}

BootstrapTokenDiscovery

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

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
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:

  • Type: string

Appears in:

ClusterConfiguration

ClusterConfiguration contains cluster-wide configuration for a kubeadm cluster.

Appears in:

FieldDescriptionDefaultValidation
etcd Etcdetcd holds configuration for etcd.
NB: This value defaults to a Local (stacked) etcd
Optional: {}
networking Networkingnetworking holds configuration for the networking topology of the cluster.
NB: This value defaults to the Cluster object spec.clusterNetwork.
Optional: {}
kubernetesVersion stringkubernetesVersion is the target version of the control plane.
NB: This value defaults to the Machine object spec.version
MaxLength: 256
MinLength: 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 componentOptional: {}
controllerManager ControlPlaneComponentcontrollerManager contains extra settings for the controller manager control plane componentOptional: {}
scheduler ControlPlaneComponentscheduler contains extra settings for the scheduler control plane componentOptional: {}
dns DNSdns defines the options for the DNS add-on installed in the cluster.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, i.e.
* registry.k8s.io (new registry): >= v1.22.17, >= v1.23.15, >= v1.24.9, >= v1.25.0
* k8s.gcr.io (old registry): all older versions
Please note that when imageRepository is not set we don’t allow upgrades to
versions >= v1.22.0 which use the old registry (k8s.gcr.io). Please use
a newer patch version with the new registry instead (i.e. >= v1.22.17,
>= v1.23.15, >= v1.24.9, >= v1.25.0).
* If the version is a CI build (kubernetes version starts with ci/ or ci-cross/)
gcr.io/k8s-staging-ci-images will be used as a default for control plane components
and for kube-proxy, while registry.k8s.io will be used for all the other images.
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: {}
clusterName stringclusterName is the cluster nameMaxLength: 63
MinLength: 1
Optional: {}

ContainerLinuxConfig

ContainerLinuxConfig contains CLC-specific configuration.

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

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: {}

ControlPlaneComponent

ControlPlaneComponent holds settings common to control plane component of the cluster.

Appears in:

FieldDescriptionDefaultValidation
extraArgs object (keys:string, values:string)extraArgs is an extra set of flags to pass to the control plane component.Optional: {}
extraVolumes HostPathMount arrayextraVolumes is an extra set of host volumes, mounted to the control plane component.MaxItems: 100
Optional: {}
extraEnvs EnvVar arrayextraEnvs 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
Optional: {}

DNS

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

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.

Appears in:

FieldDescriptionDefaultValidation
bootstrapToken BootstrapTokenDiscoverybootstrapToken is used to set the options for bootstrap token based discovery
BootstrapToken and File are mutually exclusive
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: {}
timeout Durationtimeout modifies the discovery timeoutOptional: {}

DiskSetup

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

Appears in:

FieldDescriptionDefaultValidation
partitions Partition arraypartitions specifies the list of the partitions to setup.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.

Appears in:

FieldDescriptionDefaultValidation
local LocalEtcdlocal provides configuration knobs for configuring the local etcd instance
Local and External are mutually exclusive
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
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.
Optional: {}
user KubeConfigUseruser contains information that describes identity information.
This is used to tell the kubernetes cluster who you are.
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.

Appears in:

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

ImageMeta

ImageMeta allows to customize the image used for components that are not originated from the Kubernetes/Kubernetes release process.

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: {}

InitConfiguration

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

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
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
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.
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
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
Optional: {}

JoinConfiguration

JoinConfiguration contains elements describing a particular node.

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
Optional: {}
caCertPath stringcaCertPath is the path to the SSL certificate authority used to
secure comunications 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 processOptional: {}
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
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
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.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
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
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

Underlying type: struct{Name string “json:“name“”; Value string “json:“value“”}

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

Appears in:

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.

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.

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/v1beta1
kind stringKubeadmConfig
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.Optional: {}
spec KubeadmConfigSpecspec is the desired state of KubeadmConfig.Optional: {}
status KubeadmConfigStatusstatus is the observed state of KubeadmConfig.Optional: {}

KubeadmConfigList

KubeadmConfigList contains a list of KubeadmConfig.

FieldDescriptionDefaultValidation
apiVersion stringbootstrap.cluster.x-k8s.io/v1beta1
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.

Appears in:

FieldDescriptionDefaultValidation
clusterConfiguration ClusterConfigurationclusterConfiguration along with InitConfiguration are the configurations necessary for the init commandOptional: {}
initConfiguration InitConfigurationinitConfiguration along with ClusterConfiguration are the configurations necessary for the init commandOptional: {}
joinConfiguration JoinConfigurationjoinConfiguration is the kubeadm configuration for the join commandOptional: {}
files File arrayfiles specifies extra files to be passed to user_data upon creation.MaxItems: 200
Optional: {}
diskSetup DiskSetupdiskSetup specifies options for the creation of partition tables and file systems on devices.Optional: {}
mounts MountPoints arraymounts specifies a list of mount points to be setup.MaxItems: 100
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
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
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
items:MaxLength: 10240
items:MinLength: 1
Optional: {}
users User arrayusers specifies extra users to addMaxItems: 100
Optional: {}
ntp NTPntp specifies NTP configurationOptional: {}
format Formatformat specifies the output format of the bootstrap dataEnum: [cloud-config ignition]
Optional: {}
verbosity integerverbosity is the number for the kubeadm log level verbosity.
It overrides the --v flag in kubeadm commands.
Optional: {}
useExperimentalRetryJoin booleanuseExperimentalRetryJoin replaces a basic kubeadm command with a shell
script with retries for joins.
This is meant to be an experimental temporary workaround on some environments
where joins fail due to timing (and other issues). The long term goal is to add retries to
kubeadm proper and use that functionality.
This will add about 40KB to userdata
For more information, refer to https://github.com/kubernetes-sigs/cluster-api/pull/2763#discussion_r397306055.
Deprecated: This experimental fix is no longer needed and this field will be removed in a future release.
When removing also remove from staticcheck exclude-rules for SA1019 in golangci.yml
Optional: {}
ignition IgnitionSpecignition contains Ignition specific configuration.Optional: {}

KubeadmConfigStatus

KubeadmConfigStatus defines the observed state of KubeadmConfig.

Appears in:

FieldDescriptionDefaultValidation
ready booleanready indicates the BootstrapData field is ready to be consumedOptional: {}
dataSecretName stringdataSecretName is the name of the secret that stores the bootstrap data script.MaxLength: 253
MinLength: 1
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: {}
observedGeneration integerobservedGeneration is the latest generation observed by the controller.Optional: {}
conditions Conditionsconditions defines current service state of the KubeadmConfig.Optional: {}
v1beta2 KubeadmConfigV1Beta2Statusv1beta2 groups all the fields that will be added or modified in KubeadmConfig’s status with the V1Beta2 version.Optional: {}

KubeadmConfigTemplate

KubeadmConfigTemplate is the Schema for the kubeadmconfigtemplates API.

Appears in:

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

KubeadmConfigTemplateList

KubeadmConfigTemplateList contains a list of KubeadmConfigTemplate.

FieldDescriptionDefaultValidation
apiVersion stringbootstrap.cluster.x-k8s.io/v1beta1
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.

Appears in:

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

KubeadmConfigTemplateSpec

KubeadmConfigTemplateSpec defines the desired state of KubeadmConfigTemplate.

Appears in:

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

KubeadmConfigV1Beta2Status

KubeadmConfigV1Beta2Status groups all the fields that will be added or modified in KubeadmConfig 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 KubeadmConfig’s current state.
Known condition types are Ready, DataSecretAvailable, CertificatesAvailable.
MaxItems: 32
Optional: {}

LocalEtcd

LocalEtcd describes that kubeadm should run an etcd cluster locally.

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 object (keys:string, values:string)extraArgs are extra arguments provided to the etcd binary
when run inside a static pod.
Optional: {}
extraEnvs EnvVar arrayextraEnvs 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
Optional: {}
serverCertSANs string arrayserverCertSANs sets extra Subject Alternative Names for the etcd server signing cert.MaxItems: 100
items:MaxLength: 253
items:MinLength: 1
Optional: {}
peerCertSANs string arraypeerCertSANs sets extra Subject Alternative Names for the etcd peer signing cert.MaxItems: 100
items:MaxLength: 253
items:MinLength: 1
Optional: {}

MountPoints

Underlying type: string array

MountPoints defines input for generated mounts in cloud-init.

Validation:

  • items:MaxLength: 512
  • items:MinLength: 1

Appears in:

NTP

NTP defines input for generated ntp in cloud-init.

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: {}

Networking

Networking contains elements describing cluster’s networking configuration.

Appears in:

FieldDescriptionDefaultValidation
serviceSubnet stringserviceSubnet is the subnet used by k8s services.
Defaults to a comma-delimited string of the Cluster object’s spec.clusterNetwork.pods.cidrBlocks, or
to “10.96.0.0/12” if that’s unset.
MaxLength: 1024
MinLength: 1
Optional: {}
podSubnet stringpodSubnet is the subnet used by pods.
If unset, the API server will not allocate CIDR ranges for every node.
Defaults to a comma-delimited string of the Cluster object’s spec.clusterNetwork.services.cidrBlocks if that is set
MaxLength: 1024
MinLength: 1
Optional: {}
dnsDomain stringdnsDomain is the dns domain used by k8s services. Defaults to “cluster.local”.MaxLength: 253
MinLength: 1
Optional: {}

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.

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 Taint arraytaints 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
Optional: {}
kubeletExtraArgs object (keys:string, values:string)kubeletExtraArgs passes through extra arguments to the kubelet. The arguments here are passed to the kubelet command line via the environment file
kubeadm writes at runtime for the kubelet to source. This overrides the generic base-level configuration in the kubelet-config-1.X ConfigMap
Flags have higher priority when parsing. These values are local and specific to the node kubeadm is executing on.
Optional: {}
ignorePreflightErrors string arrayignorePreflightErrors provides a slice of pre-flight errors to be ignored when the current node is registered.MaxItems: 50
items:MaxLength: 512
items:MinLength: 1
Optional: {}
imagePullPolicy stringimagePullPolicy 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”. This can be used only
with Kubernetes version equal to 1.22 and later.
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.

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.
Required: {}
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.
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.

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: {}

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: {}

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/v1beta1

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

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

Resource Types

APIEndpoint

APIEndpoint represents a reachable Kubernetes API endpoint.

Appears in:

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

Bootstrap

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

Appears in:

FieldDescriptionDefaultValidation
configRef ObjectReferenceconfigRef 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/v1beta1
kind stringCluster
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.Optional: {}
spec ClusterSpecspec is the desired state of Cluster.Optional: {}
status ClusterStatusstatus is the observed state of Cluster.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.

Appears in:

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

ClusterClassList

ClusterClassList contains a list of Cluster.

FieldDescriptionDefaultValidation
apiVersion stringcluster.x-k8s.io/v1beta1
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: {}

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: this field is considered only for computing v1beta2 conditions.
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
Optional: {}
infrastructure LocalObjectTemplateinfrastructure is a reference to a provider-specific template that holds
the details for provisioning infrastructure specific cluster
for the underlying provider.
The underlying provider is responsible for the implementation
of the template to an infrastructure cluster.
Optional: {}
infrastructureNamingStrategy InfrastructureNamingStrategyinfrastructureNamingStrategy allows changing the naming pattern used when creating the infrastructure object.Optional: {}
controlPlane ControlPlaneClasscontrolPlane is a reference to a local struct that holds the details
for provisioning the Control Plane for the Cluster.
Optional: {}
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.
Optional: {}
variables ClusterClassVariable arrayvariables defines the variables which can be configured
in the Cluster topology and are then used in patches.
MaxItems: 1000
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
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.

Appears in:

FieldDescriptionDefaultValidation
variables ClusterClassStatusVariable arrayvariables is a list of ClusterClassStatusVariable that are defined for the ClusterClass.MaxItems: 1000
Optional: {}
conditions Conditionsconditions defines current observed state of the ClusterClass.Optional: {}
observedGeneration integerobservedGeneration is the latest generation observed by the controller.Optional: {}
v1beta2 ClusterClassV1Beta2Statusv1beta2 groups all the fields that will be added or modified in ClusterClass’s status with the V1Beta2 version.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
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: {}
metadata ClusterClassVariableMetadataRefer to Kubernetes API documentation for fields of metadata.Optional: {}
schema VariableSchemaschema defines the schema of the variable.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: {}

ClusterClassV1Beta2Status

ClusterClassV1Beta2Status groups all the fields that will be added or modified in ClusterClass 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 ClusterClass’s current state.
Known condition types are VariablesReady, RefVersionsUpToDate, Paused.
MaxItems: 32
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: {}
metadata ClusterClassVariableMetadataRefer to Kubernetes API documentation for fields of metadata.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.

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: {}

ClusterList

ClusterList contains a list of Cluster.

FieldDescriptionDefaultValidation
apiVersion stringcluster.x-k8s.io/v1beta1
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.

Appears in:

FieldDescriptionDefaultValidation
apiServerPort integerapiServerPort specifies the port the API Server should bind to.
Defaults to 6443.
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.

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.Optional: {}
controlPlaneEndpoint APIEndpointcontrolPlaneEndpoint represents the endpoint used to communicate with the control plane.Optional: {}
controlPlaneRef ObjectReferencecontrolPlaneRef is an optional reference to a provider-specific resource that holds
the details for provisioning the Control Plane for a Cluster.
Optional: {}
infrastructureRef ObjectReferenceinfrastructureRef 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.
NOTE: this field is considered only for computing v1beta2 conditions.
MaxItems: 32
Optional: {}

ClusterStatus

ClusterStatus defines the observed state of Cluster.

Appears in:

FieldDescriptionDefaultValidation
failureDomains FailureDomainsfailureDomains is a slice of failure domain objects synced from the infrastructure provider.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: {}
phase stringphase represents the current phase of cluster actuation.Enum: [Pending Provisioning Provisioned Deleting Failed Unknown]
Optional: {}
infrastructureReady booleaninfrastructureReady is the state of the infrastructure provider.Optional: {}
controlPlaneReady booleancontrolPlaneReady denotes if the control plane became ready during initial provisioning
to receive requests.
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. Please use conditions
to check the operational state of the control plane.
Optional: {}
conditions Conditionsconditions defines current service state of the cluster.Optional: {}
observedGeneration integerobservedGeneration is the latest generation observed by the controller.Optional: {}
v1beta2 ClusterV1Beta2Statusv1beta2 groups all the fields that will be added or modified in Cluster’s status with the V1Beta2 version.Optional: {}

ClusterV1Beta2Status

ClusterV1Beta2Status groups all the fields that will be added or modified in Cluster 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 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: {}
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: {}

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: {}
definitionFrom stringdefinitionFrom specifies where the definition of this Variable is from.
Deprecated: This field is deprecated, must not be set anymore and is going to be removed in the next apiVersion.
MaxLength: 256
Optional: {}
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.

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.

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.

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.

Validation:

  • MaxLength: 256
  • MinLength: 1

Appears in:

FieldDescription
ReadyReadyCondition defines the Ready condition type that summarizes the operational state of a Cluster API object.
InfrastructureReadyInfrastructureReadyCondition 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.
VariablesReconciledClusterClassVariablesReconciledCondition 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.
ControlPlaneInitializedControlPlaneInitializedCondition 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.
ControlPlaneReadyControlPlaneReadyCondition 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.
BootstrapReadyBootstrapReadyCondition 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.
DrainingSucceededDrainingSucceededCondition provide evidence of the status of the node drain operation which happens during the machine
deletion process.
PreDrainDeleteHookSucceededPreDrainDeleteHookSucceededCondition reports a machine waiting for a PreDrainDeleteHook before being delete.
PreTerminateDeleteHookSucceededPreTerminateDeleteHookSucceededCondition reports a machine waiting for a PreDrainDeleteHook before being delete.
VolumeDetachSucceededVolumeDetachSucceededCondition reports a machine waiting for volumes to be detached.
HealthCheckSucceededMachineHealthCheckSucceededCondition 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.
OwnerRemediatedMachineOwnerRemediatedCondition is set on machines that have failed a healthcheck by the MachineHealthCheck controller.
MachineOwnerRemediatedCondition is set to False after a health check fails, but should be changed to True by the owning controller after remediation succeeds.
ExternalRemediationTemplateAvailableExternalRemediationTemplateAvailableCondition is set on machinehealthchecks when MachineHealthCheck controller uses external remediation.
ExternalRemediationTemplateAvailableCondition is set to false if external remediation template is not found.
ExternalRemediationRequestAvailableExternalRemediationRequestAvailableCondition is set on machinehealthchecks when MachineHealthCheck controller uses external remediation.
ExternalRemediationRequestAvailableCondition is set to false if creating external remediation request fails.
NodeHealthyMachineNodeHealthyCondition 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.
RemediationAllowedRemediationAllowedCondition 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.
AvailableMachineDeploymentAvailableCondition means the MachineDeployment is available, that is, at least the minimum available
machines required (i.e. Spec.Replicas-MaxUnavailable when MachineDeploymentStrategyType = RollingUpdate) are up and running for at least minReadySeconds.
MachineSetReadyMachineSetReadyCondition reports a summary of current status of the MachineSet owned by the MachineDeployment.
MachinesCreatedMachinesCreatedCondition 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.
MachinesReadyMachinesReadyCondition reports an aggregate of current status of the machines controlled by the MachineSet.
ResizedResizedCondition documents a MachineSet is resizing the set of controlled machines.
TopologyReconciledTopologyReconciledCondition 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).
RefVersionsUpToDateClusterClassRefVersionsUpToDateCondition 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).
ReplicasReadyReplicasReadyCondition 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.

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: {}

ControlPlaneClass

ControlPlaneClass defines the class for the control plane.

Appears in:

FieldDescriptionDefaultValidation
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.Optional: {}
ref ObjectReferenceref is a required reference to a custom resource
offered by a provider.
Required: {}
machineInfrastructure LocalObjectTemplatemachineInfrastructure 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: {}
machineHealthCheck MachineHealthCheckClassmachineHealthCheck 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.
Optional: {}
namingStrategy ControlPlaneClassNamingStrategynamingStrategy allows changing the naming pattern used when creating the control plane provider object.Optional: {}
nodeDrainTimeout DurationnodeDrainTimeout 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: NodeDrainTimeout is different from kubectl drain --timeout
NOTE: This value can be overridden while defining a Cluster.Topology.
Optional: {}
nodeVolumeDetachTimeout DurationnodeVolumeDetachTimeout 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.
Optional: {}
nodeDeletionTimeout DurationnodeDeletionTimeout 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.
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: This field is considered only for computing v1beta2 conditions.
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
Optional: {}

ControlPlaneClassNamingStrategy

ControlPlaneClassNamingStrategy defines the naming strategy for control plane objects.

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.

Appears in:

FieldDescriptionDefaultValidation
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.Optional: {}
replicas integerreplicas is the number of control plane nodes.
If the value is nil, 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: {}
machineHealthCheck MachineHealthCheckTopologymachineHealthCheck allows to enable, disable and override
the MachineHealthCheck configuration in the ClusterClass for this control plane.
Optional: {}
nodeDrainTimeout DurationnodeDrainTimeout 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: NodeDrainTimeout is different from kubectl drain --timeout
Optional: {}
nodeVolumeDetachTimeout DurationnodeVolumeDetachTimeout 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.
Optional: {}
nodeDeletionTimeout DurationnodeDeletionTimeout 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.
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: This field is considered only for computing v1beta2 conditions.
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
Optional: {}
variables ControlPlaneVariablesvariables can be used to customize the ControlPlane through patches.Optional: {}

ControlPlaneTopologyRolloutSpec

ControlPlaneTopologyRolloutSpec defines the rollout behavior.

Validation:

  • MinProperties: 1

Appears in:

ControlPlaneVariables

ControlPlaneVariables can be used to provide variables for the ControlPlane.

Appears in:

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

ExternalPatchDefinition

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

Appears in:

FieldDescriptionDefaultValidation
generateExtension stringgenerateExtension references an extension which is called to generate patches.MaxLength: 512
MinLength: 1
Optional: {}
validateExtension stringvalidateExtension 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: {}

FailureDomainSpec

FailureDomainSpec 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
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: {}

FailureDomains

Underlying type: map[string]FailureDomainSpec

FailureDomains is a slice of FailureDomains.

Appears in:

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).

InfrastructureNamingStrategy

InfrastructureNamingStrategy defines the naming strategy for infrastructure objects.

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.

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.
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
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.
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
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.
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.
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.
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.
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.
Schemaless: {}
Optional: {}

LocalObjectTemplate

LocalObjectTemplate defines a template for a topology Class.

Appears in:

FieldDescriptionDefaultValidation
ref ObjectReferenceref is a required reference to a custom resource
offered by a provider.
Required: {}

Machine

Machine is the Schema for the machines API.

Appears in:

FieldDescriptionDefaultValidation
apiVersion stringcluster.x-k8s.io/v1beta1
kind stringMachine
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.Optional: {}
spec MachineSpecspec is the desired state of Machine.Optional: {}
status MachineStatusstatus is the observed state of Machine.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.

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: {}

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/v1beta1
kind stringMachineDeployment
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.Optional: {}
spec MachineDeploymentSpecspec is the desired state of MachineDeployment.Optional: {}
status MachineDeploymentStatusstatus is the observed state of MachineDeployment.Optional: {}

MachineDeploymentClass

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

Appears in:

FieldDescriptionDefaultValidation
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: {}
template MachineDeploymentClassTemplatetemplate is a local struct containing a collection of templates for creation of
MachineDeployment objects representing a set of worker nodes.
Required: {}
machineHealthCheck MachineHealthCheckClassmachineHealthCheck defines a MachineHealthCheck for this MachineDeploymentClass.Optional: {}
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.
NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass.
MaxLength: 256
MinLength: 1
Optional: {}
namingStrategy MachineDeploymentClassNamingStrategynamingStrategy allows changing the naming pattern used when creating the MachineDeployment.Optional: {}
nodeDrainTimeout DurationnodeDrainTimeout 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: NodeDrainTimeout is different from kubectl drain --timeout
NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass.
Optional: {}
nodeVolumeDetachTimeout DurationnodeVolumeDetachTimeout 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.
Optional: {}
nodeDeletionTimeout DurationnodeDeletionTimeout 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.
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.
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: This field is considered only for computing v1beta2 conditions.
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
Optional: {}
strategy MachineDeploymentStrategystrategy is the deployment strategy to use to replace existing machines with
new ones.
NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass.
Optional: {}

MachineDeploymentClassNamingStrategy

MachineDeploymentClassNamingStrategy defines the naming strategy for machine deployment objects.

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: {}

MachineDeploymentClassTemplate

MachineDeploymentClassTemplate defines how a MachineDeployment generated from a MachineDeploymentClass should look like.

Appears in:

FieldDescriptionDefaultValidation
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.Optional: {}
bootstrap LocalObjectTemplatebootstrap contains the bootstrap template reference to be used
for the creation of worker Machines.
Required: {}
infrastructure LocalObjectTemplateinfrastructure contains the infrastructure template reference to be used
for the creation of worker Machines.
Required: {}

MachineDeploymentList

MachineDeploymentList contains a list of MachineDeployment.

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

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: {}
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: {}
strategy MachineDeploymentStrategystrategy is the deployment strategy to use to replace existing machines with
new ones.
Optional: {}
machineNamingStrategy MachineNamingStrategymachineNamingStrategy allows changing the naming pattern used when creating Machines.
Note: InfraMachines & BootstrapConfigs will use the same name as the corresponding Machines.
Optional: {}
minReadySeconds integerminReadySeconds is the minimum number of seconds for which a Node for a newly created machine should be ready before considering the replica available.
Defaults to 0 (machine will be considered available as soon as the Node is ready)
Optional: {}
revisionHistoryLimit integerrevisionHistoryLimit is the number of old MachineSets to retain to allow rollback.
This is a pointer to distinguish between explicit zero and not specified.
Defaults to 1.
Deprecated: This field is deprecated and is going to be removed in the next apiVersion. Please see https://github.com/kubernetes-sigs/cluster-api/issues/10479 for more details.
Optional: {}
paused booleanpaused indicates that the deployment is paused.Optional: {}
progressDeadlineSeconds integerprogressDeadlineSeconds is the maximum time in seconds for a deployment to make progress before it
is considered to be failed. The deployment controller will continue to
process failed deployments and a condition with a ProgressDeadlineExceeded
reason will be surfaced in the deployment status. Note that progress will
not be estimated during the time a deployment is paused. Defaults to 600s.
Deprecated: This field is deprecated and is going to be removed in the next apiVersion. Please see https://github.com/kubernetes-sigs/cluster-api/issues/11470 for more details.
Optional: {}

MachineDeploymentStatus

MachineDeploymentStatus defines the observed state of MachineDeployment.

Appears in:

FieldDescriptionDefaultValidation
observedGeneration integerobservedGeneration is the generation observed by the deployment controller.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: {}
updatedReplicas integerupdatedReplicas is the total number of non-terminated machines targeted by this deployment
that have the desired template spec.
Optional: {}
readyReplicas integerreadyReplicas is the total number of ready machines targeted by this deployment.Optional: {}
availableReplicas integeravailableReplicas is the total number of available machines (ready for at least minReadySeconds)
targeted by this deployment.
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: {}
phase stringphase represents the current phase of a MachineDeployment (ScalingUp, ScalingDown, Running, Failed, or Unknown).Enum: [ScalingUp ScalingDown Running Failed Unknown]
Optional: {}
conditions Conditionsconditions defines current service state of the MachineDeployment.Optional: {}
v1beta2 MachineDeploymentV1Beta2Statusv1beta2 groups all the fields that will be added or modified in MachineDeployment’s status with the V1Beta2 version.Optional: {}

MachineDeploymentStrategy

MachineDeploymentStrategy describes how to replace existing machines with new ones.

Appears in:

FieldDescriptionDefaultValidation
type MachineDeploymentStrategyTypetype of deployment. Allowed values are RollingUpdate and OnDelete.
The default is RollingUpdate.
Enum: [RollingUpdate OnDelete]
Optional: {}
rollingUpdate MachineRollingUpdateDeploymentrollingUpdate is the rolling update config params. Present only if
MachineDeploymentStrategyType = RollingUpdate.
Optional: {}
remediation RemediationStrategyremediation controls the strategy of remediating unhealthy machines
and how remediating operations should occur during the lifecycle of the dependant MachineSets.
Optional: {}

MachineDeploymentStrategyType

Underlying type: string

MachineDeploymentStrategyType defines the type of MachineDeployment rollout strategies.

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.

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.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
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: {}
machineHealthCheck MachineHealthCheckTopologymachineHealthCheck allows to enable, disable and override
the MachineHealthCheck configuration in the ClusterClass for this MachineDeployment.
Optional: {}
nodeDrainTimeout DurationnodeDrainTimeout 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: NodeDrainTimeout is different from kubectl drain --timeout
Optional: {}
nodeVolumeDetachTimeout DurationnodeVolumeDetachTimeout 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.
Optional: {}
nodeDeletionTimeout DurationnodeDeletionTimeout 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.
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)
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.
NOTE: This field is considered only for computing v1beta2 conditions.
MaxItems: 32
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: {}
strategy MachineDeploymentStrategystrategy is the deployment strategy to use to replace existing machines with
new ones.
Optional: {}
variables MachineDeploymentVariablesvariables can be used to customize the MachineDeployment through patches.Optional: {}

MachineDeploymentTopologyRolloutSpec

MachineDeploymentTopologyRolloutSpec defines the rollout behavior.

Validation:

  • MinProperties: 1

Appears in:

MachineDeploymentV1Beta2Status

MachineDeploymentV1Beta2Status groups all the fields that will be added or modified in MachineDeployment 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 MachineDeployment’s current state.
Known condition types are Available, MachinesReady, MachinesUpToDate, ScalingUp, ScalingDown, Remediating, Deleting, Paused.
MaxItems: 32
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: {}

MachineDeploymentVariables

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

Appears in:

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

MachineDrainRule

MachineDrainRule is the Schema for the MachineDrainRule API.

Appears in:

FieldDescriptionDefaultValidation
apiVersion stringcluster.x-k8s.io/v1beta1
kind stringMachineDrainRule
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.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/v1beta1
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/v1beta1
kind stringMachineHealthCheck
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.Optional: {}
spec MachineHealthCheckSpecspec is the specification of machine health check policyOptional: {}
status MachineHealthCheckStatusstatus is the most recently observed status of MachineHealthCheck resourceOptional: {}

MachineHealthCheckClass

MachineHealthCheckClass defines a MachineHealthCheck for a group of Machines.

Appears in:

FieldDescriptionDefaultValidation
unhealthyConditions UnhealthyCondition arrayunhealthyConditions contains a list of the 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
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: {}
maxUnhealthy IntOrStringmaxUnhealthy specifies the maximum number of unhealthy machines allowed.
Any further remediation is only allowed if at most “maxUnhealthy” machines selected by
“selector” are not healthy.
Optional: {}
unhealthyRange stringunhealthyRange specifies the range of unhealthy machines allowed.
Any further remediation is only allowed if the number of machines selected by “selector” as not healthy
is within the range of “unhealthyRange”. Takes precedence over maxUnhealthy.
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: {}
nodeStartupTimeout DurationnodeStartupTimeout 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.
Optional: {}
remediationTemplate ObjectReferenceremediationTemplate 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: {}

MachineHealthCheckList

MachineHealthCheckList contains a list of MachineHealthCheck.

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

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: {}
unhealthyConditions UnhealthyCondition arrayunhealthyConditions contains a list of the 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
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: {}
maxUnhealthy IntOrStringmaxUnhealthy specifies the maximum number of unhealthy machines allowed.
Any further remediation is only allowed if at most “maxUnhealthy” machines selected by
“selector” are not healthy.
Deprecated: This field is deprecated and is going to be removed in the next apiVersion. Please see https://github.com/kubernetes-sigs/cluster-api/issues/10722 for more details.
Optional: {}
unhealthyRange stringunhealthyRange specifies the range of unhealthy machines allowed.
Any further remediation is only allowed if the number of machines selected by “selector” as not healthy
is within the range of “unhealthyRange”. Takes precedence over maxUnhealthy.
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
Deprecated: This field is deprecated and is going to be removed in the next apiVersion. Please see https://github.com/kubernetes-sigs/cluster-api/issues/10722 for more details.
MaxLength: 32
MinLength: 1
Pattern: ^\[[0-9]+-[0-9]+\]$
Optional: {}
nodeStartupTimeout DurationnodeStartupTimeout 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.
Optional: {}
remediationTemplate ObjectReferenceremediationTemplate 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: {}

MachineHealthCheckStatus

MachineHealthCheckStatus defines the observed state of MachineHealthCheck.

Appears in:

FieldDescriptionDefaultValidation
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.Optional: {}
targets string arraytargets shows the current list of machines the machine health check is watchingMaxItems: 10000
items:MaxLength: 253
items:MinLength: 1
Optional: {}
conditions Conditionsconditions defines current service state of the MachineHealthCheck.Optional: {}
v1beta2 MachineHealthCheckV1Beta2Statusv1beta2 groups all the fields that will be added or modified in MachineHealthCheck’s status with the V1Beta2 version.Optional: {}

MachineHealthCheckTopology

MachineHealthCheckTopology defines a MachineHealthCheck for a group of machines.

Appears in:

FieldDescriptionDefaultValidation
enable booleanenable 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: {}
unhealthyConditions UnhealthyCondition arrayunhealthyConditions contains a list of the 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
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: {}
maxUnhealthy IntOrStringmaxUnhealthy specifies the maximum number of unhealthy machines allowed.
Any further remediation is only allowed if at most “maxUnhealthy” machines selected by
“selector” are not healthy.
Optional: {}
unhealthyRange stringunhealthyRange specifies the range of unhealthy machines allowed.
Any further remediation is only allowed if the number of machines selected by “selector” as not healthy
is within the range of “unhealthyRange”. Takes precedence over maxUnhealthy.
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: {}
nodeStartupTimeout DurationnodeStartupTimeout 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.
Optional: {}
remediationTemplate ObjectReferenceremediationTemplate 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: {}

MachineHealthCheckV1Beta2Status

MachineHealthCheckV1Beta2Status groups all the fields that will be added or modified in MachineHealthCheck 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 MachineHealthCheck’s current state.
Known condition types are RemediationAllowed, Paused.
MaxItems: 32
Optional: {}

MachineList

MachineList contains a list of Machine.

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

MachineNamingStrategy

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

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: {}

MachinePool

MachinePool is the Schema for the machinepools API.

Appears in:

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

MachinePoolClass

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

Appears in:

FieldDescriptionDefaultValidation
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: {}
template MachinePoolClassTemplatetemplate is a local struct containing a collection of templates for creation of
MachinePools objects representing a pool of worker nodes.
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: {}
namingStrategy MachinePoolClassNamingStrategynamingStrategy allows changing the naming pattern used when creating the MachinePool.Optional: {}
nodeDrainTimeout DurationnodeDrainTimeout 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: NodeDrainTimeout is different from kubectl drain --timeout
NOTE: This value can be overridden while defining a Cluster.Topology using this MachinePoolClass.
Optional: {}
nodeVolumeDetachTimeout DurationnodeVolumeDetachTimeout 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.
Optional: {}
nodeDeletionTimeout DurationnodeDeletionTimeout 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.
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.
Optional: {}

MachinePoolClassNamingStrategy

MachinePoolClassNamingStrategy defines the naming strategy for machine pool objects.

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: {}

MachinePoolClassTemplate

MachinePoolClassTemplate defines how a MachinePool generated from a MachinePoolClass should look like.

Appears in:

FieldDescriptionDefaultValidation
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.Optional: {}
bootstrap LocalObjectTemplatebootstrap contains the bootstrap template reference to be used
for the creation of the Machines in the MachinePool.
Required: {}
infrastructure LocalObjectTemplateinfrastructure contains the infrastructure template reference to be used
for the creation of the MachinePool.
Required: {}

MachinePoolList

MachinePoolList contains a list of MachinePool.

FieldDescriptionDefaultValidation
apiVersion stringcluster.x-k8s.io/v1beta1
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: {}
minReadySeconds integerminReadySeconds is the minimum number of seconds for which a newly created machine instances should
be ready.
Defaults to 0 (machine instance will be considered available as soon as it
is ready)
Optional: {}
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.

Appears in:

FieldDescriptionDefaultValidation
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 the node has been created and is “Ready”.Optional: {}
availableReplicas integeravailableReplicas is the number of available replicas (ready for at least minReadySeconds) for this MachinePool.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: {}
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: {}
phase stringphase represents the current phase of cluster actuation.Enum: [Pending Provisioning Provisioned Running ScalingUp ScalingDown Scaling Deleting Failed Unknown]
Optional: {}
bootstrapReady booleanbootstrapReady is the state of the bootstrap provider.Optional: {}
infrastructureReady booleaninfrastructureReady is the state of the infrastructure provider.Optional: {}
observedGeneration integerobservedGeneration is the latest generation observed by the controller.Optional: {}
conditions Conditionsconditions define the current service state of the MachinePool.Optional: {}
v1beta2 MachinePoolV1Beta2Statusv1beta2 groups all the fields that will be added or modified in MachinePool’s status with the V1Beta2 version.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.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
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
items:MaxLength: 256
items:MinLength: 1
Optional: {}
nodeDrainTimeout DurationnodeDrainTimeout 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: NodeDrainTimeout is different from kubectl drain --timeout
Optional: {}
nodeVolumeDetachTimeout DurationnodeVolumeDetachTimeout 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.
Optional: {}
nodeDeletionTimeout DurationnodeDeletionTimeout 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.
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)
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.Optional: {}

MachinePoolV1Beta2Status

MachinePoolV1Beta2Status groups all the fields that will be added or modified in MachinePoolStatus 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 MachinePool’s current state.
Known condition types are Available, BootstrapConfigReady, InfrastructureReady, MachinesReady, MachinesUpToDate,
ScalingUp, ScalingDown, Remediating, Deleting, Paused.
MaxItems: 32
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: {}

MachinePoolVariables

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

Appears in:

FieldDescriptionDefaultValidation
overrides ClusterVariable arrayoverrides can be used to override Cluster level variables.MaxItems: 1000
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: {}

MachineRollingUpdateDeployment

Underlying type: struct{MaxUnavailable *k8s.io/apimachinery/pkg/util/intstr.IntOrString “json:“maxUnavailable,omitempty“”; MaxSurge *k8s.io/apimachinery/pkg/util/intstr.IntOrString “json:“maxSurge,omitempty“”; DeletePolicy *string “json:“deletePolicy,omitempty“”}

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

Appears in:

MachineSet

MachineSet is the Schema for the machinesets API.

Appears in:

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

MachineSetList

MachineSetList contains a list of MachineSet.

FieldDescriptionDefaultValidation
apiVersion stringcluster.x-k8s.io/v1beta1
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: {}
minReadySeconds integerminReadySeconds is the minimum number of seconds for which a Node for a newly created machine should be ready before considering the replica available.
Defaults to 0 (machine will be considered available as soon as the Node is ready)
Optional: {}
deletePolicy stringdeletePolicy defines the policy used to identify nodes to delete when downscaling.
Defaults to “Random”. Valid values are “Random, “Newest”, “Oldest”
Enum: [Random Newest Oldest]
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.
Optional: {}
machineNamingStrategy MachineNamingStrategymachineNamingStrategy allows changing the naming pattern used when creating Machines.
Note: InfraMachines & BootstrapConfigs will use the same name as the corresponding Machines.
Optional: {}

MachineSetStatus

MachineSetStatus defines the observed state of MachineSet.

Appears in:

FieldDescriptionDefaultValidation
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: {}
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”.Optional: {}
availableReplicas integeravailableReplicas is the number of available replicas (ready for at least minReadySeconds) for this MachineSet.Optional: {}
observedGeneration integerobservedGeneration reflects the generation of the most recently observed MachineSet.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: {}
conditions Conditionsconditions defines current service state of the MachineSet.Optional: {}
v1beta2 MachineSetV1Beta2Statusv1beta2 groups all the fields that will be added or modified in MachineSet’s status with the V1Beta2 version.Optional: {}

MachineSetV1Beta2Status

MachineSetV1Beta2Status groups all the fields that will be added or modified in MachineSetStatus 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 MachineSet’s current state.
Known condition types are MachinesReady, MachinesUpToDate, ScalingUp, ScalingDown, Remediating, Deleting, Paused.
MaxItems: 32
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: {}

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 ObjectReferenceinfrastructureRef 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 a key in the FailureDomains map stored on the cluster object.
MaxLength: 256
MinLength: 1
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: This field is considered only for computing v1beta2 conditions.
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
Optional: {}
nodeDrainTimeout DurationnodeDrainTimeout 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: NodeDrainTimeout is different from kubectl drain --timeout
Optional: {}
nodeVolumeDetachTimeout DurationnodeVolumeDetachTimeout 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.
Optional: {}
nodeDeletionTimeout DurationnodeDeletionTimeout 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.
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.

Appears in:

FieldDescriptionDefaultValidation
nodeRef ObjectReferencenodeRef 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: {}
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: {}
addresses MachineAddressesaddresses is a list of addresses assigned to the machine.
This field is copied from the infrastructure provider reference.
Optional: {}
phase stringphase represents the current phase of machine actuation.Enum: [Pending Provisioning Provisioned Running Deleting Deleted Failed Unknown]
Optional: {}
bootstrapReady booleanbootstrapReady is the state of the bootstrap provider.Optional: {}
infrastructureReady booleaninfrastructureReady is the state of the infrastructure provider.Optional: {}
observedGeneration integerobservedGeneration is the latest generation observed by the controller.Optional: {}
conditions Conditionsconditions defines current service state of the Machine.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: {}
v1beta2 MachineV1Beta2Statusv1beta2 groups all the fields that will be added or modified in Machine’s status with the V1Beta2 version.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.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
Optional: {}

MachineV1Beta2Status

MachineV1Beta2Status groups all the fields that will be added or modified in MachineStatus 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 Machine’s current state.
Known condition types are Available, Ready, UpToDate, BootstrapConfigReady, InfrastructureReady, NodeReady,
NodeHealthy, 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.
MaxItems: 32
Optional: {}

NetworkRanges

NetworkRanges represents ranges of network addresses.

Appears in:

FieldDescriptionDefaultValidation
cidrBlocks string arraycidrBlocks is a list of CIDR blocks.MaxItems: 100
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.

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
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.MaxLength: 512
MinLength: 1
Required: {}
kind stringkind filters templates by kind.MaxLength: 256
MinLength: 1
Required: {}
matchResources PatchSelectorMatchmatchResources selects templates based on where they are referenced.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.

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: {}

RemediationStrategy

Underlying type: struct{MaxInFlight *k8s.io/apimachinery/pkg/util/intstr.IntOrString “json:“maxInFlight,omitempty“”}

RemediationStrategy allows to define how the MachineSet can control scaling operations.

Appears in:

Topology

Topology encapsulates the information of the managed resources.

Appears in:

FieldDescriptionDefaultValidation
class stringclass is the name of the ClusterClass object to create the topology.MaxLength: 253
MinLength: 1
Required: {}
classNamespace stringclassNamespace is the namespace of the ClusterClass that should be used for the topology.
If classNamespace is empty or not set, it is defaulted to the namespace of the Cluster object.
classNamespace 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: {}
version stringversion is the Kubernetes version of the cluster.MaxLength: 256
MinLength: 1
Required: {}
controlPlane ControlPlaneTopologycontrolPlane describes the cluster control plane.Optional: {}
workers WorkersTopologyworkers encapsulates the different constructs that form the worker nodes
for the cluster.
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
Optional: {}

UnhealthyCondition

UnhealthyCondition 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: {}
timeout Durationtimeout 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 “1h”, the node must match the status
for at least 1 hour before being considered unhealthy.
Required: {}

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: {}
timeout Durationtimeout 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 “1h”, the Machine must match the status
for at least 1 hour before being considered unhealthy.
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.
Required: {}

WorkersClass

WorkersClass is a collection of deployment classes.

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
Optional: {}
machinePools MachinePoolClass arraymachinePools is a list of machine pool classes that can be used to create
a set of worker nodes.
MaxItems: 100
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.

Appears in:

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

controlplane.cluster.x-k8s.io/v1beta1

Package v1beta1 contains API Schema definitions for the kubeadm v1beta1 API group,

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

Resource Types

KubeadmControlPlane

KubeadmControlPlane is the Schema for the KubeadmControlPlane API.

Appears in:

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

KubeadmControlPlaneList

KubeadmControlPlaneList contains a list of KubeadmControlPlane.

FieldDescriptionDefaultValidation
apiVersion stringcontrolplane.cluster.x-k8s.io/v1beta1
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.Optional: {}
infrastructureRef ObjectReferenceinfrastructureRef 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:
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.
NOTE: This field is considered only for computing v1beta2 conditions.
MaxItems: 32
Optional: {}
nodeDrainTimeout DurationnodeDrainTimeout 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: NodeDrainTimeout is different from kubectl drain --timeout
Optional: {}
nodeVolumeDetachTimeout DurationnodeVolumeDetachTimeout 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.
Optional: {}
nodeDeletionTimeout DurationnodeDeletionTimeout 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.
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: {}

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.
Please note that if kubeadmConfigSpec.ClusterConfiguration.imageRepository is not set
we don’t allow upgrades to versions >= v1.22.0 for which kubeadm uses the old registry (k8s.gcr.io).
Please use a newer patch version with the new registry instead. The default registries of kubeadm are:
* registry.k8s.io (new registry): >= v1.22.17, >= v1.23.15, >= v1.24.9, >= v1.25.0
* k8s.gcr.io (old registry): all older versions
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.
Required: {}
rolloutBefore RolloutBeforerolloutBefore is a field to indicate a rollout should be performed
if the specified criteria is met.
Optional: {}
rolloutStrategy RolloutStrategyrolloutStrategy is the RolloutStrategy to use to replace control plane machines with
new ones.
{ rollingUpdate:map[maxSurge:1] type:RollingUpdate }Optional: {}
remediationStrategy RemediationStrategyremediationStrategy is the RemediationStrategy that controls how control plane machine remediation happens.Optional: {}
machineNamingStrategy MachineNamingStrategymachineNamingStrategy allows changing the naming pattern used when creating Machines.
InfraMachines & KubeadmConfigs will use the same name as the corresponding Machines.
Optional: {}

KubeadmControlPlaneStatus

KubeadmControlPlaneStatus defines the observed state of KubeadmControlPlane.

Appears in:

FieldDescriptionDefaultValidation
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: {}
version stringversion represents the minimum Kubernetes version for the control plane machines
in the cluster.
MaxLength: 256
MinLength: 1
Optional: {}
updatedReplicas integerupdatedReplicas is the total number of non-terminated machines targeted by this control plane
that have the desired template spec.
Optional: {}
readyReplicas integerreadyReplicas is the total number of fully running and ready control plane machines.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: {}
initialized booleaninitialized denotes that the KubeadmControlPlane API Server is initialized and thus
it can accept requests.
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. Please use conditions
to check the operational state of the control plane.
Optional: {}
ready booleanready denotes that the KubeadmControlPlane API Server became ready during initial provisioning
to receive requests.
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. Please use conditions
to check the operational state of the control plane.
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: {}
observedGeneration integerobservedGeneration is the latest generation observed by the controller.Optional: {}
conditions Conditionsconditions defines current service state of the KubeadmControlPlane.Optional: {}
lastRemediation LastRemediationStatuslastRemediation stores info about last remediation performed.Optional: {}
v1beta2 KubeadmControlPlaneV1Beta2Statusv1beta2 groups all the fields that will be added or modified in KubeadmControlPlane’s status with the V1Beta2 version.Optional: {}

KubeadmControlPlaneTemplate

KubeadmControlPlaneTemplate is the Schema for the kubeadmcontrolplanetemplates API.

Appears in:

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

KubeadmControlPlaneTemplateList

KubeadmControlPlaneTemplateList contains a list of KubeadmControlPlaneTemplate.

FieldDescriptionDefaultValidation
apiVersion stringcontrolplane.cluster.x-k8s.io/v1beta1
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.

Appears in:

FieldDescriptionDefaultValidation
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.Optional: {}
nodeDrainTimeout DurationnodeDrainTimeout 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: NodeDrainTimeout is different from kubectl drain --timeout
Optional: {}
nodeVolumeDetachTimeout DurationnodeVolumeDetachTimeout 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.
Optional: {}
nodeDeletionTimeout DurationnodeDeletionTimeout 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.
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.

Appears in:

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

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.

Appears in:

FieldDescriptionDefaultValidation
machineTemplate KubeadmControlPlaneTemplateMachineTemplatemachineTemplate contains information about how machines
should be shaped when creating or updating a control plane.
Optional: {}
kubeadmConfigSpec KubeadmConfigSpeckubeadmConfigSpec is a KubeadmConfigSpec
to use for initializing and joining machines to the control plane.
Required: {}
rolloutBefore RolloutBeforerolloutBefore is a field to indicate a rollout should be performed
if the specified criteria is met.
Optional: {}
rolloutStrategy RolloutStrategyrolloutStrategy is the RolloutStrategy to use to replace control plane machines with
new ones.
{ rollingUpdate:map[maxSurge:1] type:RollingUpdate }Optional: {}
remediationStrategy RemediationStrategyremediationStrategy is the RemediationStrategy that controls how control plane machine remediation happens.Optional: {}
machineNamingStrategy MachineNamingStrategymachineNamingStrategy allows changing the naming pattern used when creating Machines.
InfraMachines & KubeadmConfigs will use the same name as the corresponding Machines.
Optional: {}

KubeadmControlPlaneTemplateSpec

KubeadmControlPlaneTemplateSpec defines the desired state of KubeadmControlPlaneTemplate.

Appears in:

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

KubeadmControlPlaneV1Beta2Status

KubeadmControlPlaneV1Beta2Status Groups all the fields that will be added or modified in KubeadmControlPlane 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 KubeadmControlPlane’s current state.
Known condition types are Available, CertificatesAvailable, EtcdClusterAvailable, MachinesReady, MachinesUpToDate,
ScalingUp, ScalingDown, Remediating, Deleting, Paused.
MaxItems: 32
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: {}

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.
Required: {}

MachineNamingStrategy

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

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: {}

RemediationStrategy

RemediationStrategy allows to define how control plane machine remediation happens.

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 RetryPeriod from the previous retry.
If a machine is marked as unhealthy after MinHealthyPeriod 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: {}
retryPeriod DurationretryPeriod 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.
Optional: {}
minHealthyPeriod DurationminHealthyPeriod 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 MinHealthyPeriod 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 MinHealthyPeriod 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.
Optional: {}

RollingUpdate

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

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: {}

RolloutBefore

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

Appears in:

FieldDescriptionDefaultValidation
certificatesExpiryDays integercertificatesExpiryDays indicates a rollout needs to be performed if the
certificates of the machine will expire within the specified days.
Optional: {}

RolloutStrategy

RolloutStrategy describes how to replace existing machines with new ones.

Appears in:

FieldDescriptionDefaultValidation
type RolloutStrategyTypetype of rollout. Currently the only supported strategy is
“RollingUpdate”.
Default is RollingUpdate.
Enum: [RollingUpdate]
Optional: {}
rollingUpdate RollingUpdaterollingUpdate is the rolling update config params. Present only if
RolloutStrategyType = RollingUpdate.
Optional: {}

RolloutStrategyType

Underlying type: string

RolloutStrategyType 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.

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.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.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/v1beta1

Package v1beta1 contains API Schema definitions for the v1beta1 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/v1beta1
kind stringIPAddress
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.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/v1beta1
kind stringIPAddressClaim
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.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/v1beta1
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
clusterName stringclusterName is the name of the Cluster this object belongs to.MaxLength: 63
MinLength: 1
Optional: {}
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: {}
v1beta2 IPAddressClaimV1Beta2Statusv1beta2 groups all the fields that will be added or modified in IPAddressClaim’s status with the V1Beta2 version.Optional: {}

IPAddressClaimV1Beta2Status

IPAddressClaimV1Beta2Status groups all the fields that will be added or modified in IPAddressClaimStatus 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 IPAddressClaim’s current state.MaxItems: 32
Optional: {}

IPAddressList

IPAddressList is a list of IPAddress.

FieldDescriptionDefaultValidation
apiVersion stringipam.cluster.x-k8s.io/v1beta1
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: {}

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.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: {}