API Reference

API Reference

API Reference

cluster.x-k8s.io/v1beta1

Package v1beta1 contains the v1beta1 API implementation.

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

APIEndpoint

APIEndpoint represents a reachable Kubernetes API endpoint.

Field Description Default Validation

host string

host is the hostname on which the API server is serving.

MaxLength: 512

port integer

port is the port on which the API server is serving.

Bootstrap

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

Appears In:
Field Description Default Validation

configRef ObjectReference

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

dataSecretName string

dataSecretName 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

Cluster

Cluster is the Schema for the clusters API.

Field Description Default Validation

apiVersion string

cluster.x-k8s.io/v1beta1

kind string

Cluster

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

spec is the desired state of Cluster.

status ClusterStatus

status is the observed state of Cluster.

ClusterAvailabilityGate

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

Field Description Default Validation

conditionType string

conditionType 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])$

polarity 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]

ClusterClass

ClusterClass is a template which can be used to create managed topologies.

Field Description Default Validation

apiVersion string

cluster.x-k8s.io/v1beta1

kind string

ClusterClass

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

spec is the desired state of ClusterClass.

status is the observed state of ClusterClass.

ClusterClassPatch

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

Appears In:
Field Description Default Validation

name string

name of the patch.

MaxLength: 256
MinLength: 1

description string

description is a human-readable description of this patch.

MaxLength: 1024
MinLength: 1

enabledIf string

enabledIf 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

definitions PatchDefinition array

definitions 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

external defines an external patch.
Note: Exactly one of Definitions or External must be set.

ClusterClassSpec

ClusterClassSpec describes the desired state of the ClusterClass.

Appears In:
Field Description Default Validation

availabilityGates ClusterAvailabilityGate array

availabilityGates 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

infrastructure LocalObjectTemplate

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

infrastructureNamingStrategy InfrastructureNamingStrategy

infrastructureNamingStrategy allows changing the naming pattern used when creating the infrastructure object.

controlPlane ControlPlaneClass

controlPlane is a reference to a local struct that holds the details
for provisioning the Control Plane for the Cluster.

workers WorkersClass

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

variables ClusterClassVariable array

variables defines the variables which can be configured
in the Cluster topology and are then used in patches.

MaxItems: 1000

patches ClusterClassPatch array

patches 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

ClusterClassStatus

ClusterClassStatus defines the observed state of the ClusterClass.

Appears In:
Field Description Default Validation

variables ClusterClassStatusVariable array

variables is a list of ClusterClassStatusVariable that are defined for the ClusterClass.

MaxItems: 1000

conditions Conditions

conditions defines current observed state of the ClusterClass.

observedGeneration integer

observedGeneration is the latest generation observed by the controller.

v1beta2 groups all the fields that will be added or modified in ClusterClass’s status with the V1Beta2 version.

ClusterClassStatusVariable

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

Appears In:
Field Description Default Validation

name string

name is the name of the variable.

MaxLength: 256
MinLength: 1

definitionsConflict boolean

definitionsConflict specifies whether or not there are conflicting definitions for a single variable name.

definitions is a list of definitions for a variable.

MaxItems: 100

ClusterClassStatusVariableDefinition

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

Field Description Default Validation

from string

from 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 boolean

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

Refer to Kubernetes API documentation for fields of metadata.

schema defines the schema of the variable.

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:
Field Description Default Validation

conditions Condition array

conditions represents the observations of a ClusterClass’s current state.
Known condition types are VariablesReady, RefVersionsUpToDate, Paused.

MaxItems: 32

ClusterClassVariable

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

Appears In:
Field Description Default Validation

name string

name of the variable.

MaxLength: 256
MinLength: 1

required boolean

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

Refer to Kubernetes API documentation for fields of metadata.

schema defines the schema of the variable.

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.

Field Description Default Validation

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.

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.

ClusterControlPlaneStatus

ClusterControlPlaneStatus groups all the observations about control plane current state.

Appears In:
Field Description Default Validation

desiredReplicas integer

desiredReplicas is the total number of desired control plane machines in this cluster.

replicas integer

replicas is the total number of control plane machines in this cluster.
NOTE: replicas also includes machines still being provisioned or being deleted.

upToDateReplicas integer

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

readyReplicas integer

readyReplicas is the total number of ready control plane machines in this cluster. A machine is considered ready when Machine’s Ready condition is true.

availableReplicas integer

availableReplicas is the total number of available control plane machines in this cluster. A machine is considered available when Machine’s Available condition is true.

ClusterNetwork

ClusterNetwork specifies the different networking parameters for a cluster.

Appears In:
Field Description Default Validation

apiServerPort integer

apiServerPort specifies the port the API Server should bind to.
Defaults to 6443.

services NetworkRanges

services is the network ranges from which service VIPs are allocated.

pods is the network ranges from which Pod networks are allocated.

serviceDomain string

serviceDomain is the domain name for services.

MaxLength: 253
MinLength: 1

ClusterSpec

ClusterSpec defines the desired state of Cluster.

Appears In:
Field Description Default Validation

paused boolean

paused can be used to prevent controllers from processing the Cluster and all its associated objects.

clusterNetwork ClusterNetwork

clusterNetwork represents the cluster network configuration.

controlPlaneEndpoint APIEndpoint

controlPlaneEndpoint represents the endpoint used to communicate with the control plane.

controlPlaneRef ObjectReference

controlPlaneRef is an optional reference to a provider-specific resource that holds
the details for provisioning the Control Plane for a Cluster.

infrastructureRef ObjectReference

infrastructureRef is a reference to a provider-specific resource that holds the details
for provisioning infrastructure for a cluster in said provider.

topology Topology

topology encapsulates the topology for the cluster.
NOTE: It is required to enable the ClusterTopology
feature gate flag to activate managed topologies support;
this feature is highly experimental, and parts of it might still be not implemented.

availabilityGates ClusterAvailabilityGate array

availabilityGates 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

ClusterStatus

ClusterStatus defines the observed state of Cluster.

Appears In:
Field Description Default Validation

failureDomains FailureDomains

failureDomains is a slice of failure domain objects synced from the infrastructure provider.

failureReason ClusterStatusError

failureReason 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 in the next apiVersion. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.

failureMessage string

failureMessage 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 in the next apiVersion. 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

phase string

phase represents the current phase of cluster actuation.

Enum: [Pending Provisioning Provisioned Deleting Failed Unknown]

infrastructureReady boolean

infrastructureReady is the state of the infrastructure provider.

controlPlaneReady boolean

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

conditions Conditions

conditions defines current service state of the cluster.

observedGeneration integer

observedGeneration is the latest generation observed by the controller.

v1beta2 groups all the fields that will be added or modified in Cluster’s status with the V1Beta2 version.

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:
Field Description Default Validation

conditions Condition array

conditions 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

controlPlane groups all the observations about Cluster’s ControlPlane current state.

workers WorkersStatus

workers groups all the observations about Cluster’s Workers current state.

ClusterVariable

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

Field Description Default Validation

name string

name of the variable.

MaxLength: 256
MinLength: 1

definitionFrom string

definitionFrom 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

value JSON

value 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

Condition

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

Field Description Default Validation

type 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

status of the condition, one of True, False, Unknown.

severity 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

lastTransitionTime Time

lastTransitionTime is the last time the condition transitioned from one status to another.
This should be when the underlying condition changed. If that is not known, then using the time when
the API field changed is acceptable.

reason string

reason 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

message string

message is a human readable message indicating details about the transition.
This field may be empty.

MaxLength: 10240
MinLength: 1

ConditionPolarity

Underlying type: string

ConditionPolarity defines the polarity for a metav1.Condition.

ConditionSeverity

Underlying type: string

ConditionSeverity expresses the severity of a Condition Type failing.

Validation:
  • MaxLength: 32

Appears In:

ConditionType

Underlying type: string

ConditionType is a valid value for Condition.Type.

Validation:
  • MaxLength: 256

  • MinLength: 1

Appears In:

Conditions

Underlying type: Condition

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

Field Description Default Validation

type 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

status of the condition, one of True, False, Unknown.

severity 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

lastTransitionTime Time

lastTransitionTime is the last time the condition transitioned from one status to another.
This should be when the underlying condition changed. If that is not known, then using the time when
the API field changed is acceptable.

reason string

reason 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

message string

message is a human readable message indicating details about the transition.
This field may be empty.

MaxLength: 10240
MinLength: 1

ControlPlaneClass

ControlPlaneClass defines the class for the control plane.

Appears In:
Field Description Default Validation

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

ref is a required reference to a custom resource
offered by a provider.

machineInfrastructure LocalObjectTemplate

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

machineHealthCheck MachineHealthCheckClass

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

namingStrategy allows changing the naming pattern used when creating the control plane provider object.

nodeDrainTimeout Duration

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

nodeVolumeDetachTimeout Duration

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

nodeDeletionTimeout Duration

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

readinessGates MachineReadinessGate array

readinessGates 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

ControlPlaneClassNamingStrategy

ControlPlaneClassNamingStrategy defines the naming strategy for control plane objects.

Appears In:
Field Description Default Validation

template string

template 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

ControlPlaneTopology

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

Appears In:
Field Description Default Validation

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

replicas integer

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

machineHealthCheck MachineHealthCheckTopology

machineHealthCheck allows to enable, disable and override
the MachineHealthCheck configuration in the ClusterClass for this control plane.

nodeDrainTimeout Duration

nodeDrainTimeout 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

nodeVolumeDetachTimeout Duration

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

nodeDeletionTimeout Duration

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

readinessGates MachineReadinessGate array

readinessGates 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

variables can be used to customize the ControlPlane through patches.

ControlPlaneVariables

ControlPlaneVariables can be used to provide variables for the ControlPlane.

Appears In:
Field Description Default Validation

overrides ClusterVariable array

overrides can be used to override Cluster level variables.

MaxItems: 1000

ExternalPatchDefinition

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

Appears In:
Field Description Default Validation

generateExtension string

generateExtension references an extension which is called to generate patches.

MaxLength: 512
MinLength: 1

validateExtension string

validateExtension references an extension which is called to validate the topology.

MaxLength: 512
MinLength: 1

discoverVariablesExtension string

discoverVariablesExtension references an extension which is called to discover variables.

MaxLength: 512
MinLength: 1

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.

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:
Field Description Default Validation

controlPlane boolean

controlPlane determines if this failure domain is suitable for use by control plane machines.

attributes object (keys:string, values:string)

attributes is a free form map of attributes an infrastructure provider might use or require.

FailureDomains

Underlying type: map[string]FailureDomainSpec

FailureDomains is a slice of FailureDomains.

FieldValueErrorReason

Underlying type: string

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

Appears In:

InfrastructureNamingStrategy

InfrastructureNamingStrategy defines the naming strategy for infrastructure objects.

Appears In:
Field Description Default Validation

template string

template 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

JSONPatch

JSONPatch defines a JSON patch.

Appears In:
Field Description Default Validation

op string

op defines the operation of the patch.
Note: Only add, replace and remove are supported.

Enum: [add replace remove]

path string

path 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

value JSON

value 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

valueFrom JSONPatchValue

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

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:
Field Description Default Validation

variable string

variable 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

template string

template 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

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.

Field Description Default Validation

description string

description is a human-readable description of this variable.

MaxLength: 4096
MinLength: 1

example JSON

example is an example for this variable.

type string

type is the type of the variable.
Valid values are: object, array, string, integer, number or boolean.

Enum: [object array string integer number boolean]

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

additionalProperties JSONSchemaProps

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

maxProperties integer

maxProperties is the maximum amount of entries in a map or properties in an object.
NOTE: Can only be set if type is object.

minProperties integer

minProperties is the minimum amount of entries in a map or properties in an object.
NOTE: Can only be set if type is object.

required string array

required 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

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

maxItems integer

maxItems is the max length of an array variable.
NOTE: Can only be set if type is array.

minItems integer

minItems is the min length of an array variable.
NOTE: Can only be set if type is array.

uniqueItems boolean

uniqueItems specifies if items in an array must be unique.
NOTE: Can only be set if type is array.

format string

format 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

maxLength integer

maxLength is the max length of a string variable.
NOTE: Can only be set if type is string.

minLength integer

minLength is the min length of a string variable.
NOTE: Can only be set if type is string.

pattern string

pattern is the regex which a string variable must match.
NOTE: Can only be set if type is string.

MaxLength: 512
MinLength: 1

maximum integer

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

exclusiveMaximum boolean

exclusiveMaximum specifies if the Maximum is exclusive.
NOTE: Can only be set if type is integer or number.

minimum integer

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

exclusiveMinimum boolean

exclusiveMinimum specifies if the Minimum is exclusive.
NOTE: Can only be set if type is integer or number.

x-kubernetes-preserve-unknown-fields boolean

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

enum JSON array

enum is the list of valid values of the variable.
NOTE: Can be set for all types.

MaxItems: 100

default JSON

default is the default value of the variable.
NOTE: Can be set for all types.

x-kubernetes-validations ValidationRule array

x-kubernetes-validations describes a list of validation rules written in the CEL expression language.

MaxItems: 100

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

x-kubernetes-int-or-string boolean

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

allOf JSONSchemaProps array

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

oneOf JSONSchemaProps array

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

anyOf JSONSchemaProps array

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

not specifies that the variable must not validate against the subschema.
NOTE: This field uses PreserveUnknownFields and Schemaless,
because recursive validation is not possible.

Schemaless: \{}

LocalObjectTemplate

LocalObjectTemplate defines a template for a topology Class.

Field Description Default Validation

ref is a required reference to a custom resource
offered by a provider.

Machine

Machine is the Schema for the machines API.

Field Description Default Validation

apiVersion string

cluster.x-k8s.io/v1beta1

kind string

Machine

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

spec is the desired state of Machine.

status MachineStatus

status is the observed state of Machine.

MachineAddress

MachineAddress contains information for the node’s address.

Appears In:
Field Description Default Validation

type is the machine address type, one of Hostname, ExternalIP, InternalIP, ExternalDNS or InternalDNS.

Enum: [Hostname ExternalIP InternalIP ExternalDNS InternalDNS]

address string

address is the machine address.

MaxLength: 256
MinLength: 1

MachineAddressType

Underlying type: string

MachineAddressType describes a valid MachineAddress type.

Validation:
  • Enum: [Hostname ExternalIP InternalIP ExternalDNS InternalDNS]

Appears In:

MachineAddresses

Underlying type: MachineAddress

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

Appears In:
Field Description Default Validation

type is the machine address type, one of Hostname, ExternalIP, InternalIP, ExternalDNS or InternalDNS.

Enum: [Hostname ExternalIP InternalIP ExternalDNS InternalDNS]

address string

address is the machine address.

MaxLength: 256
MinLength: 1

MachineDeletionStatus

MachineDeletionStatus is the deletion state of the Machine.

Appears In:
Field Description Default Validation

nodeDrainStartTime Time

nodeDrainStartTime is the time when the drain of the node started and is used to determine
if the NodeDrainTimeout is exceeded.
Only present when the Machine has a deletionTimestamp and draining the node had been started.

waitForNodeVolumeDetachStartTime Time

waitForNodeVolumeDetachStartTime is the time when waiting for volume detachment started
and is used to determine if the NodeVolumeDetachTimeout is exceeded.
Detaching volumes from nodes is usually done by CSI implementations and the current state
is observed from the node’s .Status.VolumesAttached field.
Only present when the Machine has a deletionTimestamp and waiting for volume detachments had been started.

MachineDeployment

MachineDeployment is the Schema for the machinedeployments API.

Field Description Default Validation

apiVersion string

cluster.x-k8s.io/v1beta1

kind string

MachineDeployment

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

spec is the desired state of MachineDeployment.

status is the observed state of MachineDeployment.

MachineDeploymentClass

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

Appears In:
Field Description Default Validation

class string

class 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

template is a local struct containing a collection of templates for creation of
MachineDeployment objects representing a set of worker nodes.

machineHealthCheck MachineHealthCheckClass

machineHealthCheck defines a MachineHealthCheck for this MachineDeploymentClass.

failureDomain string

failureDomain 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

namingStrategy allows changing the naming pattern used when creating the MachineDeployment.

nodeDrainTimeout Duration

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

nodeVolumeDetachTimeout Duration

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

nodeDeletionTimeout Duration

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

minReadySeconds integer

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

readinessGates MachineReadinessGate array

readinessGates 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

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

MachineDeploymentClassNamingStrategy

MachineDeploymentClassNamingStrategy defines the naming strategy for machine deployment objects.

Field Description Default Validation

template string

template 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

MachineDeploymentClassTemplate

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

Field Description Default Validation

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

bootstrap contains the bootstrap template reference to be used
for the creation of worker Machines.

infrastructure LocalObjectTemplate

infrastructure contains the infrastructure template reference to be used
for the creation of worker Machines.

MachineDeploymentSpec

MachineDeploymentSpec defines the desired state of MachineDeployment.

Appears In:
Field Description Default Validation

clusterName string

clusterName is the name of the Cluster this object belongs to.

MaxLength: 63
MinLength: 1

replicas integer

replicas 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

rolloutAfter Time

rolloutAfter is a field to indicate a rollout should be performed
after the specified time even if no changes have been made to the
MachineDeployment.
Example: In the YAML the time can be specified in the RFC3339 format.
To specify the rolloutAfter target as March 9, 2023, at 9 am UTC
use "2023-03-09T09:00:00Z".

selector LabelSelector

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

template describes the machines that will be created.

strategy is the deployment strategy to use to replace existing machines with
new ones.

machineNamingStrategy MachineNamingStrategy

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

minReadySeconds integer

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

revisionHistoryLimit integer

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

paused boolean

paused indicates that the deployment is paused.

progressDeadlineSeconds integer

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

MachineDeploymentStatus

MachineDeploymentStatus defines the observed state of MachineDeployment.

Appears In:
Field Description Default Validation

observedGeneration integer

observedGeneration is the generation observed by the deployment controller.

selector string

selector 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

replicas integer

replicas is the total number of non-terminated machines targeted by this deployment
(their labels match the selector).

updatedReplicas integer

updatedReplicas is the total number of non-terminated machines targeted by this deployment
that have the desired template spec.

readyReplicas integer

readyReplicas is the total number of ready machines targeted by this deployment.

availableReplicas integer

availableReplicas is the total number of available machines (ready for at least minReadySeconds)
targeted by this deployment.

unavailableReplicas integer

unavailableReplicas 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 in the next apiVersion. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.

phase string

phase represents the current phase of a MachineDeployment (ScalingUp, ScalingDown, Running, Failed, or Unknown).

Enum: [ScalingUp ScalingDown Running Failed Unknown]

conditions Conditions

conditions defines current service state of the MachineDeployment.

v1beta2 groups all the fields that will be added or modified in MachineDeployment’s status with the V1Beta2 version.

MachineDeploymentStrategy

MachineDeploymentStrategy describes how to replace existing machines with new ones.

Field Description Default Validation

type of deployment. Allowed values are RollingUpdate and OnDelete.
The default is RollingUpdate.

Enum: [RollingUpdate OnDelete]

rollingUpdate is the rolling update config params. Present only if
MachineDeploymentStrategyType = RollingUpdate.

remediation RemediationStrategy

remediation controls the strategy of remediating unhealthy machines
and how remediating operations should occur during the lifecycle of the dependant MachineSets.

MachineDeploymentStrategyType

Underlying type: string

MachineDeploymentStrategyType defines the type of MachineDeployment rollout strategies.

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:
Field Description Default Validation

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

class string

class 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

name string

name 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

failureDomain string

failureDomain 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

replicas integer

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

machineHealthCheck MachineHealthCheckTopology

machineHealthCheck allows to enable, disable and override
the MachineHealthCheck configuration in the ClusterClass for this MachineDeployment.

nodeDrainTimeout Duration

nodeDrainTimeout 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

nodeVolumeDetachTimeout Duration

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

nodeDeletionTimeout Duration

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

minReadySeconds integer

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

readinessGates MachineReadinessGate array

readinessGates 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

strategy is the deployment strategy to use to replace existing machines with
new ones.

variables can be used to customize the MachineDeployment through patches.

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.

Field Description Default Validation

conditions Condition array

conditions represents the observations of a MachineDeployment’s current state.
Known condition types are Available, MachinesReady, MachinesUpToDate, ScalingUp, ScalingDown, Remediating, Deleting, Paused.

MaxItems: 32

readyReplicas integer

readyReplicas is the number of ready replicas for this MachineDeployment. A machine is considered ready when Machine’s Ready condition is true.

availableReplicas integer

availableReplicas is the number of available replicas for this MachineDeployment. A machine is considered available when Machine’s Available condition is true.

upToDateReplicas integer

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

MachineDeploymentVariables

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

Field Description Default Validation

overrides ClusterVariable array

overrides can be used to override Cluster level variables.

MaxItems: 1000

MachineDrainRule

MachineDrainRule is the Schema for the MachineDrainRule API.

Field Description Default Validation

apiVersion string

cluster.x-k8s.io/v1beta1

kind string

MachineDrainRule

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

spec defines the spec of a MachineDrainRule.

MachineDrainRuleDrainBehavior

Underlying type: string

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

Validation:
  • Enum: [Drain Skip WaitCompleted]

MachineDrainRuleDrainConfig

MachineDrainRuleDrainConfig configures if and how Pods are drained.

Appears In:
Field Description Default Validation

behavior 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]

order integer

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

MachineDrainRuleMachineSelector

MachineDrainRuleMachineSelector defines to which Machines this MachineDrainRule should be applied.

Validation:
  • MinProperties: 1

Appears In:
Field Description Default Validation

selector LabelSelector

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

clusterSelector LabelSelector

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

MachineDrainRulePodSelector

MachineDrainRulePodSelector defines to which Pods this MachineDrainRule should be applied.

Validation:
  • MinProperties: 1

Appears In:
Field Description Default Validation

selector LabelSelector

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

namespaceSelector LabelSelector

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

MachineDrainRuleSpec

MachineDrainRuleSpec defines the spec of a MachineDrainRule.

Appears In:
Field Description Default Validation

drain configures if and how Pods are drained.

machines 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

pods 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

MachineHealthCheck

MachineHealthCheck is the Schema for the machinehealthchecks API.

Field Description Default Validation

apiVersion string

cluster.x-k8s.io/v1beta1

kind string

MachineHealthCheck

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

spec is the specification of machine health check policy

status is the most recently observed status of MachineHealthCheck resource

MachineHealthCheckClass

MachineHealthCheckClass defines a MachineHealthCheck for a group of Machines.

Field Description Default Validation

unhealthyConditions UnhealthyCondition array

unhealthyConditions 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

maxUnhealthy IntOrString

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

unhealthyRange string

unhealthyRange 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]+\]$

nodeStartupTimeout Duration

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

remediationTemplate ObjectReference

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

MachineHealthCheckSpec

MachineHealthCheckSpec defines the desired state of MachineHealthCheck.

Appears In:
Field Description Default Validation

clusterName string

clusterName is the name of the Cluster this object belongs to.

MaxLength: 63
MinLength: 1

selector LabelSelector

selector is a label selector to match machines whose health will be exercised

unhealthyConditions UnhealthyCondition array

unhealthyConditions 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

maxUnhealthy IntOrString

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

unhealthyRange string

unhealthyRange 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]+\]$

nodeStartupTimeout Duration

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

remediationTemplate ObjectReference

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

MachineHealthCheckStatus

MachineHealthCheckStatus defines the observed state of MachineHealthCheck.

Appears In:
Field Description Default Validation

expectedMachines integer

expectedMachines is the total number of machines counted by this machine health check

Minimum: 0

currentHealthy integer

currentHealthy is the total number of healthy machines counted by this machine health check

Minimum: 0

remediationsAllowed integer

remediationsAllowed is the number of further remediations allowed by this machine health check before
maxUnhealthy short circuiting will be applied

Minimum: 0

observedGeneration integer

observedGeneration is the latest generation observed by the controller.

targets string array

targets shows the current list of machines the machine health check is watching

MaxItems: 10000
items:MaxLength: 253
items:MinLength: 1

conditions Conditions

conditions defines current service state of the MachineHealthCheck.

v1beta2 groups all the fields that will be added or modified in MachineHealthCheck’s status with the V1Beta2 version.

MachineHealthCheckTopology

MachineHealthCheckTopology defines a MachineHealthCheck for a group of machines.

Field Description Default Validation

enable boolean

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

unhealthyConditions UnhealthyCondition array

unhealthyConditions 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

maxUnhealthy IntOrString

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

unhealthyRange string

unhealthyRange 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]+\]$

nodeStartupTimeout Duration

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

remediationTemplate ObjectReference

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

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.

Field Description Default Validation

conditions Condition array

conditions represents the observations of a MachineHealthCheck’s current state.
Known condition types are RemediationAllowed, Paused.

MaxItems: 32

MachineNamingStrategy

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

Field Description Default Validation

template string

template 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

MachineReadinessGate

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

Field Description Default Validation

conditionType string

conditionType 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])$

polarity 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]

MachineSet

MachineSet is the Schema for the machinesets API.

Field Description Default Validation

apiVersion string

cluster.x-k8s.io/v1beta1

kind string

MachineSet

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

spec is the desired state of MachineSet.

status is the observed state of MachineSet.

MachineSetSpec

MachineSetSpec defines the desired state of MachineSet.

Appears In:
Field Description Default Validation

clusterName string

clusterName is the name of the Cluster this object belongs to.

MaxLength: 63
MinLength: 1

replicas integer

replicas 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

minReadySeconds integer

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

deletePolicy string

deletePolicy defines the policy used to identify nodes to delete when downscaling.
Defaults to "Random". Valid values are "Random, "Newest", "Oldest"

Enum: [Random Newest Oldest]

selector LabelSelector

selector 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

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

machineNamingStrategy MachineNamingStrategy

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

MachineSetStatus

MachineSetStatus defines the observed state of MachineSet.

Appears In:
Field Description Default Validation

selector string

selector 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

replicas integer

replicas is the most recently observed number of replicas.

fullyLabeledReplicas integer

fullyLabeledReplicas 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 in the next apiVersion. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.

readyReplicas integer

readyReplicas is the number of ready replicas for this MachineSet. A machine is considered ready when the node has been created and is "Ready".

availableReplicas integer

availableReplicas is the number of available replicas (ready for at least minReadySeconds) for this MachineSet.

observedGeneration integer

observedGeneration reflects the generation of the most recently observed MachineSet.

failureReason MachineSetStatusError

failureReason 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 in the next apiVersion. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.

failureMessage string

failureMessage 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 in the next apiVersion. 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

conditions Conditions

conditions defines current service state of the MachineSet.

v1beta2 groups all the fields that will be added or modified in MachineSet’s status with the V1Beta2 version.

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:
Field Description Default Validation

conditions Condition array

conditions represents the observations of a MachineSet’s current state.
Known condition types are MachinesReady, MachinesUpToDate, ScalingUp, ScalingDown, Remediating, Deleting, Paused.

MaxItems: 32

readyReplicas integer

readyReplicas is the number of ready replicas for this MachineSet. A machine is considered ready when Machine’s Ready condition is true.

availableReplicas integer

availableReplicas is the number of available replicas for this MachineSet. A machine is considered available when Machine’s Available condition is true.

upToDateReplicas integer

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

MachineSpec

MachineSpec defines the desired state of Machine.

Field Description Default Validation

clusterName string

clusterName is the name of the Cluster this object belongs to.

MaxLength: 63
MinLength: 1

bootstrap Bootstrap

bootstrap is a reference to a local struct which encapsulates
fields to configure the Machine’s bootstrapping mechanism.

infrastructureRef ObjectReference

infrastructureRef is a required reference to a custom resource
offered by an infrastructure provider.

version string

version defines the desired Kubernetes version.
This field is meant to be optionally used by bootstrap providers.

MaxLength: 256
MinLength: 1

providerID string

providerID is the identification ID of the machine provided by the provider.
This field must match the provider ID as seen on the node object corresponding to this machine.
This field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler
with cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out
machines at provider which could not get registered as Kubernetes nodes. With cluster-api as a
generic out-of-tree provider for autoscaler, this field is required by autoscaler to be
able to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver
and then a comparison is done to find out unregistered machines and are marked for delete.
This field will be set by the actuators and consumed by higher level entities like autoscaler that will
be interfacing with cluster-api as generic provider.

MaxLength: 512
MinLength: 1

failureDomain string

failureDomain 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

readinessGates MachineReadinessGate array

readinessGates 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

nodeDrainTimeout Duration

nodeDrainTimeout 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

nodeVolumeDetachTimeout Duration

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

nodeDeletionTimeout Duration

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

MachineStatus

MachineStatus defines the observed state of Machine.

Appears In:
Field Description Default Validation

nodeRef ObjectReference

nodeRef will point to the corresponding Node if it exists.

nodeInfo NodeSystemInfo

nodeInfo is a set of ids/uuids to uniquely identify the node.
More info: https://kubernetes.io/docs/concepts/nodes/node/#info

lastUpdated Time

lastUpdated identifies when the phase of the Machine last transitioned.

failureReason MachineStatusError

failureReason 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 in the next apiVersion. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.

failureMessage string

failureMessage 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 in the next apiVersion. 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

addresses MachineAddresses

addresses is a list of addresses assigned to the machine.
This field is copied from the infrastructure provider reference.

phase string

phase represents the current phase of machine actuation.

Enum: [Pending Provisioning Provisioned Running Deleting Deleted Failed Unknown]

certificatesExpiryDate Time

certificatesExpiryDate is the expiry date of the machine certificates.
This value is only set for control plane machines.

bootstrapReady boolean

bootstrapReady is the state of the bootstrap provider.

infrastructureReady boolean

infrastructureReady is the state of the infrastructure provider.

observedGeneration integer

observedGeneration is the latest generation observed by the controller.

conditions Conditions

conditions defines current service state of the Machine.

deletion contains information relating to removal of the Machine.
Only present when the Machine has a deletionTimestamp and drain or wait for volume detach started.

v1beta2 groups all the fields that will be added or modified in Machine’s status with the V1Beta2 version.

MachineTemplateSpec

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

Field Description Default Validation

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

spec 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

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:
Field Description Default Validation

conditions Condition array

conditions 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

NetworkRanges

NetworkRanges represents ranges of network addresses.

Appears In:
Field Description Default Validation

cidrBlocks string array

cidrBlocks is a list of CIDR blocks.

MaxItems: 100
items:MaxLength: 43
items:MinLength: 1

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](https://github.com/kubernetes-sigs/cluster-api/pull/1054) 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](k8s.io/apimachinery/pkg/apis/meta/v1) 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.

Field Description Default Validation

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

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

PatchDefinition

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

Appears In:
Field Description Default Validation

selector PatchSelector

selector defines on which templates the patch should be applied.

jsonPatches JSONPatch array

jsonPatches 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

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:
Field Description Default Validation

apiVersion string

apiVersion filters templates by apiVersion.

MaxLength: 512
MinLength: 1

kind string

kind filters templates by kind.

MaxLength: 256
MinLength: 1

matchResources PatchSelectorMatch

matchResources selects templates based on where they are referenced.

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:
Field Description Default Validation

controlPlane boolean

controlPlane selects templates referenced in .spec.ControlPlane.
Note: this will match the controlPlane and also the controlPlane
machineInfrastructure (depending on the kind and apiVersion).

infrastructureCluster boolean

infrastructureCluster selects templates referenced in .spec.infrastructure.

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

PatchSelectorMatchMachineDeploymentClass

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

Appears In:
Field Description Default Validation

names string array

names selects templates by class names.

MaxItems: 100
items:MaxLength: 256
items:MinLength: 1

RemediationStrategy

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

Topology

Topology encapsulates the information of the managed resources.

Appears In:
Field Description Default Validation

class string

class is the name of the ClusterClass object to create the topology.

MaxLength: 253
MinLength: 1

classNamespace string

classNamespace 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])?$

version string

version is the Kubernetes version of the cluster.

MaxLength: 256
MinLength: 1

rolloutAfter Time

rolloutAfter performs a rollout of the entire cluster one component at a time,
control plane first and then machine deployments.

Deprecated: This field has no function and is going to be removed in the next apiVersion.

controlPlane ControlPlaneTopology

controlPlane describes the cluster control plane.

workers WorkersTopology

workers encapsulates the different constructs that form the worker nodes
for the cluster.

variables ClusterVariable array

variables can be used to customize the Cluster through
patches. They must comply to the corresponding
VariableClasses defined in the ClusterClass.

MaxItems: 1000

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.

Field Description Default Validation

type of Node condition

MinLength: 1
Type: string

status of the condition, one of True, False, Unknown.

MinLength: 1
Type: string

timeout Duration

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

VariableSchema

VariableSchema defines the schema of a variable.

Field Description Default Validation

openAPIV3Schema JSONSchemaProps

openAPIV3Schema defines the schema of a variable via OpenAPI v3
schema. The schema is a subset of the schema used in
Kubernetes CRDs.

WorkersClass

WorkersClass is a collection of deployment classes.

Appears In:
Field Description Default Validation

machineDeployments MachineDeploymentClass array

machineDeployments is a list of machine deployment classes that can be used to create
a set of worker nodes.

MaxItems: 100

WorkersStatus

WorkersStatus groups all the observations about workers current state.

Appears In:
Field Description Default Validation

desiredReplicas integer

desiredReplicas is the total number of desired worker machines in this cluster.

replicas integer

replicas is the total number of worker machines in this cluster.
NOTE: replicas also includes machines still being provisioned or being deleted.

upToDateReplicas integer

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

readyReplicas integer

readyReplicas is the total number of ready worker machines in this cluster. A machine is considered ready when Machine’s Ready condition is true.

availableReplicas integer

availableReplicas is the total number of available worker machines in this cluster. A machine is considered available when Machine’s Available condition is true.

WorkersTopology

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

Appears In:
Field Description Default Validation

machineDeployments MachineDeploymentTopology array

machineDeployments is a list of machine deployments in the cluster.

MaxItems: 2000

bootstrap.cluster.x-k8s.io/v1beta1

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

APIEndpoint

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

Field Description Default Validation

advertiseAddress string

advertiseAddress sets the IP address for the API server to advertise.

MaxLength: 39
MinLength: 1

bindPort integer

bindPort sets the secure port for the API Server to bind to.
Defaults to 6443.

APIServer

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

Appears In:
Field Description Default Validation

extraArgs object (keys:string, values:string)

extraArgs is an extra set of flags to pass to the control plane component.

extraVolumes HostPathMount array

extraVolumes is an extra set of host volumes, mounted to the control plane component.

MaxItems: 100

extraEnvs EnvVar array

extraEnvs 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

certSANs string array

certSANs sets extra Subject Alternative Names for the API Server signing cert.

MaxItems: 100
items:MaxLength: 253
items:MinLength: 1

timeoutForControlPlane Duration

timeoutForControlPlane controls the timeout that we use for API server to appear

BootstrapToken

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

Appears In:
Field Description Default Validation

token is used for establishing bidirectional trust between nodes and control-planes.
Used for joining nodes in the cluster.

Type: string

description string

description 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

ttl Duration

ttl defines the time to live for this token. Defaults to 24h.
Expires and TTL are mutually exclusive.

expires Time

expires specifies the timestamp when this token expires. Defaults to being set
dynamically at runtime based on the TTL. Expires and TTL are mutually exclusive.

usages string array

usages 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

groups string array

groups specifies the extra groups that this token will authenticate as when/if
used for authentication

MaxItems: 100
items:MaxLength: 256
items:MinLength: 1

BootstrapTokenDiscovery

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

Appears In:
Field Description Default Validation

token string

token is a token used to validate cluster information
fetched from the control-plane.

MaxLength: 512
MinLength: 1

apiServerEndpoint string

apiServerEndpoint is an IP or domain name to the API server from which info will be fetched.

MaxLength: 512
MinLength: 1

caCertHashes string array

caCertHashes 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 "<type>:<value>",
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

unsafeSkipCAVerification boolean

unsafeSkipCAVerification allows token-based discovery
without CA verification via CACertHashes. This can weaken
the security of kubeadm since other nodes can impersonate the control-plane.

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:
Field Description Default Validation

etcd Etcd

etcd holds configuration for etcd.
NB: This value defaults to a Local (stacked) etcd

networking Networking

networking holds configuration for the networking topology of the cluster.
NB: This value defaults to the Cluster object spec.clusterNetwork.

kubernetesVersion string

kubernetesVersion is the target version of the control plane.
NB: This value defaults to the Machine object spec.version

MaxLength: 256
MinLength: 1

controlPlaneEndpoint string

controlPlaneEndpoint sets a stable IP address or DNS name for the control plane; it
can be a valid IP address or a RFC-1123 DNS subdomain, both with optional TCP port.
In case the ControlPlaneEndpoint is not specified, the AdvertiseAddress + BindPort
are used; in case the ControlPlaneEndpoint is specified but without a TCP port,
the BindPort is used.
Possible usages are:
e.g. In a cluster with more than one control plane instances, this field should be
assigned the address of the external load balancer in front of the
control plane instances.
e.g. in environments with enforced node recycling, the ControlPlaneEndpoint
could be used for assigning a stable DNS to the control plane.
NB: This value defaults to the first value in the Cluster object status.apiEndpoints array.

MaxLength: 512
MinLength: 1

apiServer APIServer

apiServer contains extra settings for the API server control plane component

controllerManager ControlPlaneComponent

controllerManager contains extra settings for the controller manager control plane component

scheduler contains extra settings for the scheduler control plane component

dns DNS

dns defines the options for the DNS add-on installed in the cluster.

certificatesDir string

certificatesDir 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

imageRepository string

imageRepository 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

featureGates object (keys:string, values:boolean)

featureGates enabled by the user.

clusterName string

clusterName is the cluster name

MaxLength: 63
MinLength: 1

ContainerLinuxConfig

ContainerLinuxConfig contains CLC-specific configuration.

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

Appears In:
Field Description Default Validation

additionalConfig string

additionalConfig 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

MaxLength: 32768
MinLength: 1

strict boolean

strict controls if AdditionalConfig should be strictly parsed. If so, warnings are treated as errors.

ControlPlaneComponent

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

Field Description Default Validation

extraArgs object (keys:string, values:string)

extraArgs is an extra set of flags to pass to the control plane component.

extraVolumes HostPathMount array

extraVolumes is an extra set of host volumes, mounted to the control plane component.

MaxItems: 100

extraEnvs EnvVar array

extraEnvs 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

DNS

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

Appears In:
Field Description Default Validation

imageRepository string

imageRepository sets the container registry to pull images from.
if not set, the ImageRepository defined in ClusterConfiguration will be used instead.

MaxLength: 512
MinLength: 1

imageTag string

imageTag allows to specify a tag for the image.
In case this value is set, kubeadm does not change automatically the version of the above components during upgrades.

MaxLength: 256
MinLength: 1

Discovery

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

Appears In:
Field Description Default Validation

bootstrapToken BootstrapTokenDiscovery

bootstrapToken is used to set the options for bootstrap token based discovery
BootstrapToken and File are mutually exclusive

file is used to specify a file or URL to a kubeconfig file from which to load cluster information
BootstrapToken and File are mutually exclusive

tlsBootstrapToken string

tlsBootstrapToken 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

timeout Duration

timeout modifies the discovery timeout

DiskSetup

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

Appears In:
Field Description Default Validation

partitions Partition array

partitions specifies the list of the partitions to setup.

MaxItems: 100

filesystems Filesystem array

filesystems specifies the list of file systems to setup.

MaxItems: 100

Encoding

Underlying type: string

Encoding specifies the cloud-init file encoding.

Validation:
  • Enum: [base64 gzip gzip+base64]

Appears In:

EnvVar

EnvVar represents an environment variable present in a Container.

Field Description Default Validation

name string

Name of the environment variable. Must be a C_IDENTIFIER.

value string

Variable 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 "".

valueFrom EnvVarSource

Source for the environment variable’s value. Cannot be used if value is not empty.

Etcd

Etcd contains elements describing Etcd configuration.

Appears In:
Field Description Default Validation

local LocalEtcd

local provides configuration knobs for configuring the local etcd instance
Local and External are mutually exclusive

external ExternalEtcd

external describes how to connect to an external etcd cluster
Local and External are mutually exclusive

ExternalEtcd

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

Appears In:
Field Description Default Validation

endpoints string array

endpoints of etcd members. Required for ExternalEtcd.

MaxItems: 50
items:MaxLength: 512
items:MinLength: 1

caFile string

caFile is an SSL Certificate Authority file used to secure etcd communication.
Required if using a TLS connection.

MaxLength: 512
MinLength: 1

certFile string

certFile is an SSL certification file used to secure etcd communication.
Required if using a TLS connection.

MaxLength: 512
MinLength: 1

keyFile string

keyFile is an SSL key file used to secure etcd communication.
Required if using a TLS connection.

MaxLength: 512
MinLength: 1

File

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

Appears In:
Field Description Default Validation

path string

path specifies the full path on disk where to store the file.

MaxLength: 512
MinLength: 1

owner string

owner specifies the ownership of the file, e.g. "root:root".

MaxLength: 256
MinLength: 1

permissions string

permissions specifies the permissions to assign to the file, e.g. "0640".

MaxLength: 16
MinLength: 1

encoding Encoding

encoding specifies the encoding of the file contents.

Enum: [base64 gzip gzip+base64]

append boolean

append specifies whether to append Content to existing file if Path exists.

content string

content is the actual content of the file.

MaxLength: 10240
MinLength: 1

contentFrom FileSource

contentFrom is a referenced source of content to populate the file.

FileDiscovery

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

Appears In:
Field Description Default Validation

kubeConfigPath string

kubeConfigPath is used to specify the actual file path or URL to the kubeconfig file from which to load cluster information

MaxLength: 512
MinLength: 1

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

FileDiscoveryKubeConfig

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

Appears In:
Field Description Default Validation

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

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

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:
Field Description Default Validation

secret represents a secret that should populate this file.

Filesystem

Filesystem defines the file systems to be created.

Appears In:
Field Description Default Validation

device string

device specifies the device name

MaxLength: 256
MinLength: 1

filesystem string

filesystem specifies the file system type.

MaxLength: 128
MinLength: 1

label string

label specifies the file system label to be used. If set to None, no label is used.

MaxLength: 512
MinLength: 1

partition string

partition specifies the partition to use. The valid options are: "auto|any", "auto", "any", "none", and <NUM>, where NUM is the actual partition number.

MaxLength: 128
MinLength: 1

overwrite boolean

overwrite defines whether or not to overwrite any existing filesystem.
If true, any pre-existing file system will be destroyed. Use with Caution.

replaceFS string

replaceFS 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

extraOpts string array

extraOpts defined extra options to add to the command for creating the file system.

MaxItems: 100
items:MaxLength: 256
items:MinLength: 1

Format

Underlying type: string

Format specifies the output format of the bootstrap data

Validation:
  • Enum: [cloud-config ignition]

Appears In:

HostPathMount

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

Field Description Default Validation

name string

name of the volume inside the pod template.

MaxLength: 512
MinLength: 1

hostPath string

hostPath is the path in the host that will be mounted inside
the pod.

MaxLength: 512
MinLength: 1

mountPath string

mountPath is the path inside the pod where hostPath will be mounted.

MaxLength: 512
MinLength: 1

readOnly boolean

readOnly controls write access to the volume

pathType HostPathType

pathType is the type of the HostPath.

IgnitionSpec

IgnitionSpec contains Ignition specific configuration.

Appears In:
Field Description Default Validation

containerLinuxConfig ContainerLinuxConfig

containerLinuxConfig contains CLC specific configuration.

ImageMeta

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

Appears In:
Field Description Default Validation

imageRepository string

imageRepository sets the container registry to pull images from.
if not set, the ImageRepository defined in ClusterConfiguration will be used instead.

MaxLength: 512
MinLength: 1

imageTag string

imageTag allows to specify a tag for the image.
In case this value is set, kubeadm does not change automatically the version of the above components during upgrades.

MaxLength: 256
MinLength: 1

InitConfiguration

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

Appears In:
Field Description Default Validation

bootstrapTokens BootstrapToken array

bootstrapTokens 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

nodeRegistration NodeRegistrationOptions

nodeRegistration 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

localAPIEndpoint APIEndpoint

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

skipPhases string array

skipPhases 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

patches Patches

patches 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

JoinConfiguration

JoinConfiguration contains elements describing a particular node.

Appears In:
Field Description Default Validation

nodeRegistration NodeRegistrationOptions

nodeRegistration 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

caCertPath string

caCertPath 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

discovery Discovery

discovery specifies the options for the kubelet to use during the TLS Bootstrap process

controlPlane JoinControlPlane

controlPlane defines the additional control plane instance to be deployed on the joining node.
If nil, no additional control plane instance will be deployed.

skipPhases string array

skipPhases 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

patches Patches

patches 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

JoinControlPlane

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

Appears In:
Field Description Default Validation

localAPIEndpoint APIEndpoint

localAPIEndpoint represents the endpoint of the API server instance to be deployed on this node.

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:
Field Description Default Validation

command string

command to execute.

MaxLength: 1024
MinLength: 1

args string array

args is the arguments to pass to the command when executing it.

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

env 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

apiVersion string

apiVersion 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

provideClusterInfo boolean

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

KubeConfigAuthExecEnv

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:
Field Description Default Validation

name string

name is the name of the authentication plugin.

MaxLength: 256
MinLength: 1

config object (keys:string, values:string)

config holds the parameters for the authentication plugin.

KubeConfigCluster

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

Adapted from clientcmdv1.Cluster.

Field Description Default Validation

server string

server is the address of the kubernetes cluster (https://hostname:port).

Defaults to https:// + Cluster.Spec.ControlPlaneEndpoint.

MaxLength: 512
MinLength: 1

tlsServerName string

tlsServerName is used to check server certificate. If TLSServerName is empty, the hostname used to contact the server is used.

MaxLength: 512
MinLength: 1

insecureSkipTLSVerify boolean

insecureSkipTLSVerify skips the validity check for the server’s certificate. This will make your HTTPS connections insecure.

certificateAuthorityData integer array

certificateAuthorityData contains PEM-encoded certificate authority certificates.

Defaults to the Cluster’s CA certificate if empty.

MaxLength: 51200
MinLength: 1

proxyURL string

proxyURL 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

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.

Field Description Default Validation

authProvider KubeConfigAuthProvider

authProvider specifies a custom authentication plugin for the kubernetes cluster.

exec specifies a custom exec-based authentication plugin for the kubernetes cluster.

KubeadmConfig

KubeadmConfig is the Schema for the kubeadmconfigs API.

Field Description Default Validation

apiVersion string

bootstrap.cluster.x-k8s.io/v1beta1

kind string

KubeadmConfig

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

spec is the desired state of KubeadmConfig.

status is the observed state of KubeadmConfig.

KubeadmConfigSpec

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

Field Description Default Validation

clusterConfiguration ClusterConfiguration

clusterConfiguration along with InitConfiguration are the configurations necessary for the init command

initConfiguration InitConfiguration

initConfiguration along with ClusterConfiguration are the configurations necessary for the init command

joinConfiguration JoinConfiguration

joinConfiguration is the kubeadm configuration for the join command

files File array

files specifies extra files to be passed to user_data upon creation.

MaxItems: 200

diskSetup DiskSetup

diskSetup specifies options for the creation of partition tables and file systems on devices.

mounts MountPoints array

mounts specifies a list of mount points to be setup.

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

bootCommands string array

bootCommands 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

preKubeadmCommands string array

preKubeadmCommands 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

postKubeadmCommands string array

postKubeadmCommands 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

users User array

users specifies extra users to add

MaxItems: 100

ntp NTP

ntp specifies NTP configuration

format Format

format specifies the output format of the bootstrap data

Enum: [cloud-config ignition]

verbosity integer

verbosity is the number for the kubeadm log level verbosity.
It overrides the --v flag in kubeadm commands.

useExperimentalRetryJoin boolean

useExperimentalRetryJoin 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

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

ignition IgnitionSpec

ignition contains Ignition specific configuration.

KubeadmConfigStatus

KubeadmConfigStatus defines the observed state of KubeadmConfig.

Appears In:
Field Description Default Validation

ready boolean

ready indicates the BootstrapData field is ready to be consumed

dataSecretName string

dataSecretName is the name of the secret that stores the bootstrap data script.

MaxLength: 253
MinLength: 1

failureReason string

failureReason will be set on non-retryable errors

Deprecated: This field is deprecated and is going to be removed in the next apiVersion. 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

failureMessage string

failureMessage will be set on non-retryable errors

Deprecated: This field is deprecated and is going to be removed in the next apiVersion. 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

observedGeneration integer

observedGeneration is the latest generation observed by the controller.

conditions Conditions

conditions defines current service state of the KubeadmConfig.

v1beta2 groups all the fields that will be added or modified in KubeadmConfig’s status with the V1Beta2 version.

KubeadmConfigTemplate

KubeadmConfigTemplate is the Schema for the kubeadmconfigtemplates API.

Field Description Default Validation

apiVersion string

bootstrap.cluster.x-k8s.io/v1beta1

kind string

KubeadmConfigTemplate

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

spec is the desired state of KubeadmConfigTemplate.

KubeadmConfigTemplateResource

KubeadmConfigTemplateResource defines the Template structure.

Field Description Default Validation

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

spec is the desired state of KubeadmConfig.

KubeadmConfigTemplateSpec

KubeadmConfigTemplateSpec defines the desired state of KubeadmConfigTemplate.

Appears In:
Field Description Default Validation

template defines the desired state of KubeadmConfigTemplate.

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:
Field Description Default Validation

conditions Condition array

conditions represents the observations of a KubeadmConfig’s current state.
Known condition types are Ready, DataSecretAvailable, CertificatesAvailable.

MaxItems: 32

LocalEtcd

LocalEtcd describes that kubeadm should run an etcd cluster locally.

Appears In:
Field Description Default Validation

imageRepository string

imageRepository sets the container registry to pull images from.
if not set, the ImageRepository defined in ClusterConfiguration will be used instead.

MaxLength: 512
MinLength: 1

imageTag string

imageTag allows to specify a tag for the image.
In case this value is set, kubeadm does not change automatically the version of the above components during upgrades.

MaxLength: 256
MinLength: 1

dataDir string

dataDir is the directory etcd will place its data.
Defaults to "/var/lib/etcd".

MaxLength: 512
MinLength: 1

extraArgs object (keys:string, values:string)

extraArgs are extra arguments provided to the etcd binary
when run inside a static pod.

extraEnvs EnvVar array

extraEnvs 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

serverCertSANs string array

serverCertSANs sets extra Subject Alternative Names for the etcd server signing cert.

MaxItems: 100
items:MaxLength: 253
items:MinLength: 1

peerCertSANs string array

peerCertSANs sets extra Subject Alternative Names for the etcd peer signing cert.

MaxItems: 100
items:MaxLength: 253
items:MinLength: 1

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:
Field Description Default Validation

servers string array

servers specifies which NTP servers to use

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

enabled boolean

enabled specifies whether NTP should be enabled

Networking

Networking contains elements describing cluster’s networking configuration.

Appears In:
Field Description Default Validation

serviceSubnet string

serviceSubnet 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

podSubnet string

podSubnet 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

dnsDomain string

dnsDomain is the dns domain used by k8s services. Defaults to "cluster.local".

MaxLength: 253
MinLength: 1

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.

Field Description Default Validation

name string

name 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

criSocket string

criSocket is used to retrieve container runtime info. This information will be annotated to the Node API object, for later re-use

MaxLength: 512
MinLength: 1

taints Taint array

taints 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

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.

ignorePreflightErrors string array

ignorePreflightErrors provides a slice of pre-flight errors to be ignored when the current node is registered.

MaxItems: 50
items:MaxLength: 512
items:MinLength: 1

imagePullPolicy string

imagePullPolicy 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]

imagePullSerial boolean

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

Partition

Partition defines how to create and layout a partition.

Appears In:
Field Description Default Validation

device string

device is the name of the device.

MaxLength: 256
MinLength: 1

layout boolean

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

overwrite boolean

overwrite 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'.

tableType string

tableType 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]

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:
Field Description Default Validation

secret represents a secret that should populate this password.

Patches

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

Field Description Default Validation

directory string

directory 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

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:
Field Description Default Validation

name string

name of the secret in the KubeadmBootstrapConfig’s namespace to use.

MaxLength: 253
MinLength: 1

key string

key is the key in the secret’s data map for this value.

MaxLength: 256
MinLength: 1

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:
Field Description Default Validation

name string

name of the secret in the KubeadmBootstrapConfig’s namespace to use.

MaxLength: 253
MinLength: 1

key string

key is the key in the secret’s data map for this value.

MaxLength: 256
MinLength: 1

User

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

Appears In:
Field Description Default Validation

name string

name specifies the user name

MaxLength: 256
MinLength: 1

gecos string

gecos specifies the gecos to use for the user

MaxLength: 256
MinLength: 1

groups string

groups specifies the additional groups for the user

MaxLength: 256
MinLength: 1

homeDir string

homeDir specifies the home directory to use for the user

MaxLength: 256
MinLength: 1

inactive boolean

inactive specifies whether to mark the user as inactive

shell string

shell specifies the user’s shell

MaxLength: 256
MinLength: 1

passwd string

passwd specifies a hashed password for the user

MaxLength: 256
MinLength: 1

passwdFrom PasswdSource

passwdFrom is a referenced source of passwd to populate the passwd.

primaryGroup string

primaryGroup specifies the primary group for the user

MaxLength: 256
MinLength: 1

lockPassword boolean

lockPassword specifies if password login should be disabled

sudo string

sudo specifies a sudo role for the user

MaxLength: 256
MinLength: 1

sshAuthorizedKeys string array

sshAuthorizedKeys specifies a list of ssh authorized keys for the user

MaxItems: 100
items:MaxLength: 2048
items:MinLength: 1

vmware.infrastructure.cluster.x-k8s.io/v1beta1

Package v1beta1 contains API Schema definitions for the vmware.infrastructure v1beta1 API group

Package v1beta1 contains API types.

ProviderServiceAccount

ProviderServiceAccount is the schema for the ProviderServiceAccount API.

Field Description Default Validation

apiVersion string

vmware.infrastructure.cluster.x-k8s.io/v1beta1

kind string

ProviderServiceAccount

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

ProviderServiceAccountSpec

ProviderServiceAccountSpec defines the desired state of ProviderServiceAccount.

Field Description Default Validation

Ref specifies the reference to the VSphereCluster for which the ProviderServiceAccount needs to be realized.

rules PolicyRule array

Rules specifies the privileges that need to be granted to the service account.

targetNamespace string

TargetNamespace is the namespace in the target cluster where the secret containing the generated service account
token needs to be created.

targetSecretName string

TargetSecretName is the name of the secret in the target cluster that contains the generated service account
token.

VSphereCluster

VSphereCluster is the Schema for the VSphereClusters API.

Field Description Default Validation

apiVersion string

vmware.infrastructure.cluster.x-k8s.io/v1beta1

kind string

VSphereCluster

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VSphereClusterSpec

VSphereClusterSpec defines the desired state of VSphereCluster.

Field Description Default Validation

controlPlaneEndpoint APIEndpoint

VSphereClusterStatus

VSphereClusterStatus defines the observed state of VSphereClusterSpec.

Appears In:
Field Description Default Validation

ready boolean

Ready indicates the infrastructure required to deploy this cluster is
ready.

resourcePolicyName string

ResourcePolicyName is the name of the VirtualMachineSetResourcePolicy for
the cluster, if one exists

conditions Conditions

Conditions defines current service state of the VSphereCluster.

failureDomains FailureDomains

FailureDomains is a list of failure domain objects synced from the
infrastructure provider.

v1beta2 groups all the fields that will be added or modified in VSphereCluster’s status with the V1Beta2 version.

VSphereClusterTemplate

VSphereClusterTemplate is the Schema for the vsphereclustertemplates API.

Field Description Default Validation

apiVersion string

vmware.infrastructure.cluster.x-k8s.io/v1beta1

kind string

VSphereClusterTemplate

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VSphereClusterTemplateResource

VSphereClusterTemplateResource defines the template structure.

Field Description Default Validation

VSphereClusterTemplateSpec

VSphereClusterTemplateSpec defines the desired state of VSphereClusterTemplate.

Field Description Default Validation

VSphereClusterV1Beta2Status

VSphereClusterV1Beta2Status groups all the fields that will be added or modified in VSphereClusterStatus 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:
Field Description Default Validation

conditions Condition array

conditions represents the observations of a VSphereCluster’s current state.
Known condition types are Ready, ResourcePolicyReady, NetworkReady, LoadBalancerReady,
ProviderServiceAccountsReady, ServiceDiscoveryReady and Paused.

MaxItems: 32

VSphereMachine

VSphereMachine is the Schema for the vspheremachines API

Field Description Default Validation

apiVersion string

vmware.infrastructure.cluster.x-k8s.io/v1beta1

kind string

VSphereMachine

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VSphereMachineSpec

VSphereMachineSpec defines the desired state of VSphereMachine.

Field Description Default Validation

providerID string

ProviderID is the virtual machine’s BIOS UUID formatted as
vsphere://12345678-1234-1234-1234-123456789abc.
This is required at runtime by CAPI. Do not remove this field.

failureDomain string

FailureDomain is the failure domain the machine will be created in.
Must match a key in the FailureDomains map stored on the cluster object.

imageName string

ImageName is the name of the base image used when specifying the
underlying virtual machine

className string

ClassName is the name of the class used when specifying the underlying
virtual machine

storageClass string

StorageClass is the name of the storage class used when specifying the
underlying virtual machine.

volumes VSphereMachineVolume array

Volumes is the set of PVCs to be created and attached to the VSphereMachine

PowerOffMode describes the desired behavior when powering off a VM.

There are three, supported power off modes: hard, soft, and
trySoft. The first mode, hard, is the equivalent of a physical
system’s power cord being ripped from the wall. The soft mode
requires the VM’s guest to have VM Tools installed and attempts to
gracefully shut down the VM. Its variant, trySoft, first attempts
a graceful shutdown, and if that fails or the VM is not in a powered off
state after reaching 5 minutes timeout, the VM is halted.

If omitted, the mode defaults to hard.

hard

Enum: [hard soft trySoft]

minHardwareVersion string

MinHardwareVersion specifies the desired minimum hardware version
for this VM. Setting this field will ensure that the hardware version
of the VM is at least set to the specified value.
The expected format of the field is vmx-15.

NamingStrategy allows configuring the naming strategy used when calculating the name of the VirtualMachine.

VSphereMachineStatus

VSphereMachineStatus defines the observed state of VSphereMachine.

Appears In:
Field Description Default Validation

ready boolean

Ready is true when the provider resource is ready.
This is required at runtime by CAPI. Do not remove this field.

addresses NodeAddress array

Addresses contains the instance associated addresses.

vmID string

ID is used to identify the virtual machine.

vmIp string

IPAddr is the IP address used to access the virtual machine.

failureReason MachineStatusError

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

failureMessage string

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

VMStatus is used to identify the virtual machine status.

conditions Conditions

Conditions defines current service state of the VSphereMachine.

v1beta2 groups all the fields that will be added or modified in VSphereMachine’s status with the V1Beta2 version.

VSphereMachineTemplate

VSphereMachineTemplate is the Schema for the vspheremachinetemplates API.

Field Description Default Validation

apiVersion string

vmware.infrastructure.cluster.x-k8s.io/v1beta1

kind string

VSphereMachineTemplate

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VSphereMachineTemplateResource

VSphereMachineTemplateResource describes the data needed to create a VSphereMachine from a template.

Field Description Default Validation

Spec is the specification of the desired behavior of the machine.

VSphereMachineTemplateSpec

VSphereMachineTemplateSpec defines the desired state of VSphereMachineTemplate.

Field Description Default Validation

VSphereMachineTemplateStatus

VSphereMachineTemplateStatus defines the observed state of VSphereMachineTemplate.

VSphereMachineV1Beta2Status

VSphereMachineV1Beta2Status groups all the fields that will be added or modified in VSphereMachineStatus 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:
Field Description Default Validation

conditions Condition array

conditions represents the observations of a VSphereMachine’s current state.
Known condition types are Ready, VirtualMachineProvisioned and Paused.

MaxItems: 32

VSphereMachineVolume

VSphereMachineVolume defines a PVC attachment.

Appears In:
Field Description Default Validation

name string

Name is suffix used to name this PVC as: VSphereMachine.Name + "-" + Name

storageClass string

StorageClass defaults to VSphereMachineSpec.StorageClass

VirtualMachineNamingStrategy

VirtualMachineNamingStrategy defines the naming strategy for the VirtualMachines.

Appears In:
Field Description Default Validation

template string

Template defines the template to use for generating the name of the VirtualMachine object.
If not defined, it will fall back to {{ .machine.name }}.
The templating has the following data available:
* .machine.name: The name of the Machine object.
The templating also has the following funcs available:
* trimSuffix: same as strings.TrimSuffix
* trunc: truncates a string, e.g. trunc 2 "hello" or trunc -2 "hello"
Notes:
* While the template offers some flexibility, we would like the name to link to the Machine name
to ensure better user experience when troubleshooting
* Generated names must be valid Kubernetes names as they are used to create a VirtualMachine object
and usually also as the name of the Node object.
* Names are automatically truncated at 63 characters. Please note that this can lead to name conflicts,
so we highly recommend to use a template which leads to a name shorter than 63 characters.

VirtualMachinePowerOpMode

Underlying type: string

VirtualMachinePowerOpMode represents the various power operation modes when powering off or suspending a VM.

Validation:
  • Enum: [hard soft trySoft]

Appears In:

VirtualMachineState

Underlying type: string

VirtualMachineState describes the state of a VM.

Appears In:

kubernetes.vmware.com/v1alpha1

Package v1alpha1 contains API Schema definitions for the kubernetes.vmware.com v1alpha1 API group

Resource Types

ContainerImageInfo

ContainerImageInfo allows to customize the image used for components that are not originated from the Kubernetes/Kubernetes release process (such as etcd and coredns).

Appears In:
Field Description Default Validation

imageRepository string

ImageRepository sets the container registry to pull images from.
if not set, defaults to the ImageRepository defined in KubernetesSpec.

imageTag string

ImageTag specifies a tag for the image.

KubernetesRelease

KubernetesRelease is the schema for the kubernetesreleases API. KubernetesRelease objects represent Kubernetes releases available via Kubernetes Service, which can be used to create KubernetesCluster instances. KRs are immutable to end-users. They are created and managed by Kubernetes Service to provide discovery of Kubernetes releases to Kubernetes Service users.

Field Description Default Validation

apiVersion string

kubernetes.vmware.com/v1alpha1

kind string

KubernetesRelease

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

KubernetesReleaseSpec

KubernetesReleaseSpec defines the desired state of KubernetesRelease

Appears In:
Field Description Default Validation

version string

Version is the fully qualified Semantic Versioning conformant version of the KubernetesRelease.
Version MUST be unique across all KubernetesRelease objects.

kubernetes KubernetesSpec

Kubernetes is Kubernetes

osImages LocalObjectReference array

OSImages lists references to all OSImage objects shipped with this KubernetesRelease.

bootstrapPackages LocalObjectReference array

BootstrapPackages lists references to all bootstrap packages shipped with this KubernetesRelease.

KubernetesReleaseStatus

KubernetesReleaseStatus defines the observed state of KubernetesRelease

Appears In:
Field Description Default Validation

conditions Condition array

KubernetesSpec

KubernetesSpec specifies the details about the Kubernetes distribution shipped by this KubernetesRelease.

Appears In:
Field Description Default Validation

version string

Version is Semantic Versioning conformant version of the Kubernetes build shipped by this KubernetesRelease.
The same Kubernetes build MAY be shipped by multiple KubernetesReleases.

imageRepository string

ImageRepository specifies container image registry to pull images from.

Etcd specifies the container image repository and tag for etcd.

Pause specifies the container image repository and tag for pause.

CoreDNS specifies the container image repository and tag for coredns.

KubeVIP specifies the container image repository and tag for kube-vip.

cni.tanzu.vmware.com/v1alpha1

Package v1alpha1 contains API Schema definitions for the cni v1alpha1 API group

Resource Types

Antrea

Appears In:
Field Description Default Validation

{ }

{ }

AntreaCloudProvider

Appears In:
Field Description Default Validation

name string

Optional: \{}

AntreaConfig

AntreaConfig is the Schema for the antreaconfigs API

Field Description Default Validation

apiVersion string

cni.tanzu.vmware.com/v1alpha1

kind string

AntreaConfig

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

AntreaConfigDataValue

Appears In:
Field Description Default Validation

egress AntreaEgress

Specifies Egress related configuration.

Optional: \{}

nodePortLocal AntreaNodePortLocal

Specifies NodePortLocal related configuration.

Optional: \{}

antreaProxy AntreaProxy

Specifies AntreaProxy related configuration.

Optional: \{}

flowExporter AntreaFlowExporter

Specifies FlowExporter related configuration.

Optional: \{}

kubeAPIServerOverride string

Provide the address of Kubernetes apiserver, to override any value provided in kubeconfig or InClusterConfig.

Optional: \{}

multicast AntreaMulticast

Multicast related configuration.

Optional: \{}

multicluster AntreaMultiCluster

MultiCluster realted configuration.

Optional: \{}

cloudProvider AntreaCloudProvider

CloudProvider realted configuration.

Optional: \{}

transportInterface string

The name of the interface on Node which is used for tunneling or routing.

Optional: \{}

transportInterfaceCIDRs string array

The network CIDRs of the interface on Node which is used for tunneling or routing.

Optional: \{}

multicastInterfaces string array

The names of the interfaces on Nodes that are used to forward multicast traffic.

Optional: \{}

tunnelType string

Tunnel protocols used for encapsulating traffic across Nodes. One of the following options =:> geneve, vxlan, gre, stt

Optional: \{}

tunnelPort integer

TunnelPort is the destination port for UDP and TCP based tunnel protocols (Geneve, VXLAN, and STT).If zero, it will use the assigned IANA port for the protocol.

0

Optional: \{}

tunnelCsum boolean

TunnelCsum determines whether to compute UDP encapsulation header (Geneve or VXLAN) checksums on outgoing packets

false

Optional: \{}

trafficEncryptionMode string

Determines how tunnel traffic is encrypted. One of the following options =:> none, ipsec, wireguard

Optional: \{}

enableUsageReporting boolean

Enable usage reporting (telemetry) to VMware.

false

Optional: \{}

wireGuard AntreaWireGuard

Specifies WireGuard related configuration.

Optional: \{}

serviceCIDR string

ClusterIP CIDR range for Services.

Optional: \{}

trafficEncapMode string

The traffic encapsulation mode. One of the following options ⇒ encap, noEncap, hybrid, networkPolicyOnly

encap

Enum: [encap noEncap hybrid networkPolicyOnly]
Optional: \{}

noSNAT boolean

Flag to enable/disable SNAT for the egress traffic from a Pod to the external network

false

Optional: \{}

disableUdpTunnelOffload boolean

Disable UDP tunnel offload feature on default NIC

false

Optional: \{}

defaultMTU string

Default MTU to use for the host gateway interface and the network interface of each Pod. If omitted, antrea-agent will discover the MTU of the Node’s primary interface

Optional: \{}

tlsCipherSuites string

List of allowed cipher suites. If omitted, the default Go Cipher Suites will be used

TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_GCM_SHA384

Optional: \{}

enableBridgingMode boolean

Enable bridging mode of Pod network on Nodes

false

Optional: \{}

disableTXChecksumOffload boolean

Disable TX checksum offloading for container network interfaces

false

Optional: \{}

dnsServerOverride string

Provide the address of DNS server, to override the kube-dns service

Optional: \{}

fqdnCacheMinTTL integer

fqdnCacheMinTTL helps address the issue of applications caching DNS response IPs beyond the TTL value
for the DNS record. It is used to enforce FQDN policy rules, ensuring that resolved IPs are included
in datapath rules for as long as the application caches them. Ideally, this value should be set to
the maximum caching duration across all applications.

Optional: \{}

snatFullyRandomPorts boolean

Fully randomize source port mapping in SNAT rules used for egress traffic from Pods to the external network.

Optional: \{}

featureGates AntreaFeatureGates

FeatureGates is a map of feature names to flags that enable or disable experimental features

{ }

Optional: \{}

packetInRate integer

PacketInRate defines the OVS controller packet rate limits for different features. The number stands for the
rate as packets per second(pps) and the burst size will be automatically set to twice the rate.

Optional: \{}

auditLogging AuditLogging

Log rotation configuration for audit logs.

Optional: \{}

AntreaConfigSpec

AntreaConfigSpec defines the desired state of AntreaConfig

Appears In:
Field Description Default Validation

antrea Antrea

{ }

antreaNSX AntreaNSX

AntreaNSX defines nsxt adapter related configurations

{ }

AntreaConfigStatus

AntreaConfigStatus defines the observed state of AntreaConfig

Appears In:
Field Description Default Validation

message string

Message to indicate failure reason

Optional: \{}

secretRef string

Reference to the data value secret created by controller

Optional: \{}

AntreaEgress

Appears In:
Field Description Default Validation

exceptCIDRs string array

maxEgressIPsPerNode integer

snatFullyRandomPorts boolean

Optional: \{}

AntreaFeatureGates

Appears In:
Field Description Default Validation

AntreaProxy boolean

Flag to enable/disable antrea proxy

true

Optional: \{}

EndpointSlice boolean

Flag to enable/disable EndpointSlice support in AntreaProxy. If AntreaProxy is not enabled, this flag will not take effect

false

Optional: \{}

AntreaPolicy boolean

Flag to enable/disable antrea policy

true

Optional: \{}

FlowExporter boolean

Flag to enable/disable flow exporter

false

Optional: \{}

Egress boolean

Flag to enable/disable SNAT IPs of Pod egress traffic

true

Optional: \{}

NodePortLocal boolean

Flag to enable/disable NodePortLocal feature to make the pods reachable externally through NodePort

true

Optional: \{}

AntreaTraceflow boolean

Flag to enable/disable antrea traceflow

true

Optional: \{}

NetworkPolicyStats boolean

Flag to enable/disable network policy stats

false

Optional: \{}

AntreaIPAM boolean

Flag to enable/disable antrea IPAM

false

Optional: \{}

ServiceExternalIP boolean

Flag to enable/disable service external IP

false

Optional: \{}

Multicast boolean

Flag to enable/disable multicast

false

Optional: \{}

Multicluster boolean

Enable Antrea Multi-cluster Gateway to support cross-cluster traffic.

false

Optional: \{}

SecondaryNetwork boolean

Enable support for provisioning secondary network interfaces for Pods (using Pod annotations).

false

Optional: \{}

TrafficControl boolean

Enable mirroring or redirecting the traffic Pods send or receive.

false

Optional: \{}

TopologyAwareHints boolean

Enable TopologyAwareHints in AntreaProxy. This requires AntreaProxy and EndpointSlice to be enabled, otherwise this flag will not take effect.

false

Optional: \{}

SupportBundleCollection boolean

Enable collecting support bundle files with SupportBundleCollection CRD.

Optional: \{}

L7NetworkPolicy boolean

Enable users to protect their applications by specifying how they are allowed to communicate with others.

Optional: \{}

AdminNetworkPolicy boolean

Enable the use of Network Policy APIs which helps administrators set security postures for their clusters.

Optional: \{}

CleanupStaleUDPSvcConntrack boolean

Enable support for cleaning up stale UDP Service conntrack connections in AntreaProxy

Optional: \{}

NodeLatencyMonitor boolean

Enable NodeLatencyMonitor to monitor the latency between Nodes.

Optional: \{}

EgressTrafficShaping boolean

Enable Egress traffic shaping.

Optional: \{}

EgressSeparateSubnet boolean

Allow users to allocate Egress IPs from a different subnet from the default Node subnet.

Optional: \{}

NodeNetworkPolicy boolean

Allow users to apply ClusterNetworkPolicy to Kubernetes Nodes.

Optional: \{}

L7FlowExporter boolean

Enable L7FlowExporter on Pods and Namespaces to export the application layer flows such as HTTP flows.

Optional: \{}

PacketCapture boolean

Enable PacketCapture feature which supports capturing packets to diagnose network issues.

Optional: \{}

ServiceTrafficDistribution boolean

Enable ServiceTrafficDistribution in AntreaProxy. This requires AntreaProxy and EndpointSlice to be
enabled, otherwise this flag will not take effect.

Optional: \{}

AntreaFlowExporter

Field Description Default Validation

enable boolean

collectorAddress string

pollInterval string

activeFlowTimeout string

idleFlowTimeout string

AntreaMultiCluster

Appears In:
Field Description Default Validation

enable boolean

namespace string

enableStretchedNetworkPolicy boolean

enablePodToPodConnectivity boolean

AntreaMulticast

Appears In:
Field Description Default Validation

enable boolean

igmpQueryInterval string

igmpQueryVersions integer array

AntreaNSX

Appears In:
Field Description Default Validation

enable boolean

Enable indicates whether nsxt adapter shall be enabled in the cluster.

Optional: \{}

Config is configuration for nsxt adapter.

{ }

Optional: \{}

AntreaNSXConfig

Appears In:
Field Description Default Validation

bootstrapFrom string

BootstrapFrom is used to specify the bootstrap method: either Inline or SupervisorCluster.

Optional: \{}

nsxCert string

One line base64 encoded data. Can be generated by command: cat tls.crt | base64 -w 0

Optional: \{}

nsxKey string

NSXKey is base64 encoded NSX client key data.One line base64 encoded data. Can be generated by command: cat tls.key | base64 -w 0

Optional: \{}

clusterName string

ClusterName is the name of the cluster.

Optional: \{}

nsxManagers string array

NSXManagers is a string slice that contains the IP address or domain name of the NSX Managers.

Optional: \{}

vpcPath string array

VPCPath is the VPC configuration path.

Optional: \{}

proxyEndpoints ProxyEndpoints

ProxyEndpoints is a struct for proxy endpoints containing the information needed to access the API server.

Optional: \{}

mpAdapterConf MPAdapterConf

{ }

Optional: \{}

ccpAdapterConf CCPAdapterConf

{ }

Optional: \{}

AntreaNodePortLocal

Field Description Default Validation

enabled boolean

portRange string

AntreaProxy

Appears In:
Field Description Default Validation

proxyAll boolean

nodePortAddresses string array

skipServices string array

proxyLoadBalancerIPs boolean

serviceProxyName string

enable boolean

disableServiceHealthCheckServer boolean

Disables the health check server run by Antrea Proxy

AntreaWindowsConfig

Field Description Default Validation

antreaProxy AntreaWindowsProxy

Specifies AntreaProxy related configuration.

Optional: \{}

nodePortLocal AntreaNodePortLocal

Specifies NodePortLocal related configuration.

Optional: \{}

flowExporter AntreaFlowExporter

Specifies FlowExporter related configuration.

Optional: \{}

kubeAPIServerOverride string

Provide the address of Kubernetes apiserver, to override any value provided in kubeconfig or InClusterConfig.

Optional: \{}

transportInterface string

The name of the interface on Node which is used for tunneling or routing.

Optional: \{}

transportInterfaceCIDRs string array

The network CIDRs of the interface on Node which is used for tunneling or routing.

Optional: \{}

tlsCipherSuites string

List of allowed cipher suites. If omitted, the default Go Cipher Suites will be used

TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_GCM_SHA384

Optional: \{}

FeatureGates is a map of feature names to flags that enable or disable experimental features

Optional: \{}

AntreaWindowsConfigDataValue

Appears In:
Field Description Default Validation

{ }

Optional: \{}

enable boolean

Enable windows config

Optional: \{}

AntreaWindowsFeatureGates

Appears In:
Field Description Default Validation

AntreaProxy boolean

Flag to enable/disable Antrea Proxy

Optional: \{}

NodePortLocal boolean

Flag to enable/disable NodePortLocal feature to make the pods reachable externally through NodePort

Optional: \{}

FlowExporter boolean

Flag to enable/disable flow exporter

Optional: \{}

AntreaWindowsProxy

Appears In:
Field Description Default Validation

enable boolean

proxyAll boolean

serviceProxyName string

AntreaWireGuard

Appears In:
Field Description Default Validation

port integer

AuditLogging

Appears In:
Field Description Default Validation

maxSize integer

maxBackups integer

maxAge integer

compress boolean

CCPAdapterConf

Appears In:
Field Description Default Validation

enableDebugServer boolean

EnableDebugServer indicates whether to enable the debug server.

Optional: \{}

apiServerPort integer

Port on which the API server listens.

Optional: \{}

debugServerPort integer

DebugServerPort is the port for the APIServer to serve on. Defaults to 16667.

Optional: \{}

nsxRPCDebug boolean

NSXRPCDebug indicates whether to enable NSX RPC debug mode.

Optional: \{}

realizeTimeoutSeconds integer

Time to wait for realization.

Optional: \{}

realizeErrorSyncIntervalSeconds integer

An interval for regularly report latest realization error in background.

Optional: \{}

reconcilerWorkerCount integer

Number of workers for reconciler.

Optional: \{}

reconcilerQPS integer

Average QPS = ReconcilerWorkerCount * ReconcilerQPS

Optional: \{}

reconcilerBurst integer

Peak QPS = ReconcilerWorkerCount * ReconcilerBurst

Optional: \{}

reconcilerResyncSeconds integer

Period for Reconciler to rsync downstream events.

Optional: \{}

Calico

Calico stores the configurations for Calico.

Appears In:
Field Description Default Validation

CalicoConfig

CalicoConfig is the Schema for the calicoconfigs API.

Field Description Default Validation

apiVersion string

cni.tanzu.vmware.com/v1alpha1

kind string

CalicoConfig

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

CalicoConfigDataValue

CalicoConfigDataValue contains the specific configurations for the Calico package.

Appears In:
Field Description Default Validation

vethMTU integer

VethMTU defines maximum transmission unit. "0" as default means MTU will be auto detected.

0

Minimum: 0
Optional: \{}

skipCNIBinaries boolean

SkipCNIBinaries allows to skip the cni plugin binaries installation.
Default to false. Set to true for providers who already installed
cni plugin binaries in their OVAs and do not want Calico to overwrite them.

false

Optional: \{}

ipv4AutodetectionMethod string

The method to use to autodetect the IPv4 address for this host.
If it is empty then the first-found method is used.

Optional: \{}

ipv6AutodetectionMethod string

The method to use to autodetect the IPv6 address for this host.
If it is empty then the first-found method is used.

Optional: \{}

CalicoConfigSpec

CalicoConfigSpec defines the desired state of CalicoConfig.

Appears In:
Field Description Default Validation

calico Calico

CalicoConfigStatus

CalicoConfigStatus defines the observed state of CalicoConfig.

Appears In:
Field Description Default Validation

secretRef string

SecretRef is the name of the data value secret created by calico controller.

MPAdapterConf

Appears In:
Field Description Default Validation

nsxClientAuthCertFile string

Path to the client authentication certificate file.

Optional: \{}

nsxClientAuthKeyFile string

Path to the client authentication key file.

Optional: \{}

nsxRemoteAuth boolean

NSXRemoteAuth indicates whether to use remote authentication.

Optional: \{}

nsxCAFile string

Path to the CA file.

Optional: \{}

nsxInsecure boolean

NSXInsecure indicates whether to enable insecure connections.

Optional: \{}

nsxRPCConnType string

NsxRpcConnType is the NSX connection type: either mock or tnproxy.

Optional: \{}

clusterType string

ClusterType represents the type of the cluster.

Optional: \{}

nsxClientTimeout integer

Timeout for NSX client.

Optional: \{}

inventoryBatchSize integer

InventoryBatchSize is the max objects in one inventory update request.

Optional: \{}

inventoryBatchPeriod integer

InventoryBatchPeriod is the time in seconds to send out request even if the max batch size is not reached.

Optional: \{}

enableDebugServer boolean

EnableDebugServer indicates whether to enable the debug server.

Optional: \{}

apiServerPort integer

Port on which the API server listens.

Optional: \{}

debugServerPort integer

DebugServerPort is the port for the APIServer to serve on. Defaults to 16666.

Optional: \{}

nsxRPCDebug boolean

NSXRPCDebug indicates whether to enable NSX RPC debug mode.

Optional: \{}

conditionTimeout integer

Monitor for determine the timeout.

Optional: \{}

nsxVerifyServerName boolean

NSXVerifyServerName indicates whether to validate NSX server name when NSXInsecure is false.

Optional: \{}

ProxyEndpoints

ProxyEndpoints is a struct for proxy endpoints containing the information needed to access the API server.

Appears In:
Field Description Default Validation

restApi string array

RestAPI is a string slice that contains the IP address or domain name of the REST API endpoint.

Optional: \{}

nsxRpcFwdProxy string array

NSXRPCFwdProxy is a string slice that contains the IP address or domain name of the NSX RPC forward proxy.

Optional: \{}

cpi.tanzu.vmware.com/v1alpha1

Package v1alpha1 contains API Schema definitions for the cpi v1alpha1 API group

KubevipCPIConfig

KubevipCPIConfig is the Schema for the kubevipcpiconfigs API

Field Description Default Validation

apiVersion string

cpi.tanzu.vmware.com/v1alpha1

kind string

KubevipCPIConfig

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

KubevipCPIConfigSpec

KubevipCPIConfigSpec defines the desired state of KubevipCPIConfig

Appears In:
Field Description Default Validation

loadbalancerCIDRs string

loadbalancerCIDRs is a list of comma separated cidrs will
be used to allocate IP for external load balancer.
For example 192.168.0.200/29,192.168.1.200/29

loadbalancerIPRanges string

loadbalancerIPRanges is a list of comma separated IP ranges will
be used to allocate IP for external load balancer.
For example 192.168.0.10-192.168.0.11,192.168.0.10-192.168.0.13

KubevipCPIConfigStatus

KubevipCPIConfigStatus defines the observed state of KubevipCPIConfig

Appears In:
Field Description Default Validation

secretRef string

Name of the secret created by kubevip cloudprovider config controller

NSXTRouteConfig

Appears In:
Field Description Default Validation

routerPath string

NSX-T T0/T1 logical router path

Optional: \{}

NSXVPC

NSXVPC represents the configuration in the VPC network

Appears In:
Field Description Default Validation

podIPPoolType string

The type of IP pool for routable Pods: Public, Private

Enum: [Public Private]
Optional: \{}

ParavirtualConfig

ParavirtualConfig represents the configuration in the paravirtual mode

Appears In:
Field Description Default Validation

antreaNSXPodRoutingEnabled boolean

A flag that enables pod routing by Antrea NSX for paravirtual mode

false

Optional: \{}

nsxVPC NSXVPC

Optional: \{}

VSphereCPI

Appears In:
Field Description Default Validation

mode string

The vSphere mode. Either vsphereCPI or vsphereParavirtualCPI.

Enum: [vsphereCPI vsphereParavirtualCPI]
Optional: \{}

ParavirtualConfig ParavirtualConfig

VSphereCPIConfig

VSphereCPIConfig is the Schema for the VSphereCPIConfig API

Field Description Default Validation

apiVersion string

cpi.tanzu.vmware.com/v1alpha1

kind string

VSphereCPIConfig

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VSphereCPIConfigSpec

VSphereCPIConfigSpec defines the desired state of VSphereCPIConfig

Appears In:
Field Description Default Validation

vsphereCPI VSphereCPI

VSphereCPIConfigStatus

VSphereCPIConfigStatus defines the observed state of VSphereCPIConfig

Appears In:
Field Description Default Validation

message string

Message to indicate failure reason

Optional: \{}

secretRef string

Name of the data value secret created by vSphere CPI controller

csi.tanzu.vmware.com/v1alpha1

Package v1alpha1 contains API Schema definitions for the csi v1alpha1 API group

Resource Types

VSphereCSI

Appears In:
Field Description Default Validation

mode string

The vSphere mode. Either vsphereCSI or vsphereParavirtualCSI.

Enum: [vsphereCSI vsphereParavirtualCSI]
Required: \{}

VSphereCSIConfig

VSphereCSIConfig is the Schema for the vspherecsiconfigs API

Field Description Default Validation

apiVersion string

csi.tanzu.vmware.com/v1alpha1

kind string

VSphereCSIConfig

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

VSphereCSIConfigSpec

VSphereCSIConfigSpec defines the desired state of VSphereCSIConfig

Appears In:
Field Description Default Validation

vsphereCSI VSphereCSI

VSphereCSIConfigStatus

VSphereCSIConfigStatus defines the observed state of VSphereCSIConfig

Appears In:
Field Description Default Validation

secretRef string

Name of the secret created by csi controller

run.tanzu.vmware.com/v1alpha3

Package v1alpha3 contains API Schema definitions for the run.tanzu v1alpha3 API group

APIEndpoint

APIEndpoint represents a reachable Kubernetes API endpoint.

Field Description Default Validation

host string

The hostname on which the API server is serving.

port integer

The port on which the API server is serving.

AddonStatus

AddonStatus represents the status of an addon.

Field Description Default Validation

name string

Name of the add-on used.

type AddonType

Type of the add-on used

version string

Version of the distribution applied

conditions Conditions

Conditions defines the current conditions of the add-on.

AddonType

Underlying type: string

Appears In:

CNIConfiguration

CNIConfiguration indicates which CNI should be used.

Appears In:
Field Description Default Validation

name string

Name is the name of the CNI plugin to use.

Supported values: "calico", "antrea".

ClusterBootstrap

ClusterBootstrap is the Schema for the ClusterBootstraps API

Field Description Default Validation

apiVersion string

run.tanzu.vmware.com/v1alpha3

kind string

ClusterBootstrap

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

ClusterBootstrapPackage

Field Description Default Validation

refName string

valuesFrom ValuesFrom

ClusterBootstrapStatus

ClusterBootstrapStatus defines the observed state of ClusterBootstrap

Appears In:
Field Description Default Validation

resolvedTKR string

conditions Conditions

ClusterBootstrapTemplate

ClusterBootstrapTemplate is the Schema for the ClusterBootstraptemplates API

Field Description Default Validation

apiVersion string

run.tanzu.vmware.com/v1alpha3

kind string

ClusterBootstrapTemplate

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

ClusterBootstrapTemplateSpec

ClusterBootstrapTemplateSpec defines the desired state of ClusterBootstrapTemplate

Field Description Default Validation

paused boolean

Paused can be used to prevent controllers from processing the ClusterBootstrap and all its associated objects.

false

additionalPackages ClusterBootstrapPackage array

Condition

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

Appears In:
Field Description Default Validation

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

Status of the condition, one of True, False, Unknown.

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

lastTransitionTime Time

Last time the condition transitioned from one status to another.
This should be when the underlying condition changed. If that is not known, then using the time when
the API field changed is acceptable.

reason string

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 not be empty.

message string

A human readable message indicating details about the transition.
This field may be empty.

ConditionSeverity

Underlying type: string

ConditionSeverity expresses the severity of a Condition Type failing.

Appears In:

ConditionType

Underlying type: string

ConditionType is a valid value for Condition.Type.

Appears In:

ContainerImage

ContainerImage is a struct representing a single fully qualified container image name, constructed as {Repository}/{Name}:{Tag}.

Field Description Default Validation

repository string

Repository is the container image repository used by this image. It MUST be a DNS-compatible name.

name string

Name is the container image name without the repository prefix.
It MUST be a valid URI path, MAY contain zero or more '/', and SHOULD NOT start or end with '/'.

tag string

Tag is the container image version tag. It is the suffix coming after ':' in a fully qualified image name.

ContainerImageInfo

ContainerImageInfo allows to customize the image used for components that are not originated from the Kubernetes/Kubernetes release process (such as etcd and coredns).

Appears In:
Field Description Default Validation

imageRepository string

ImageRepository sets the container registry to pull images from.
if not set, defaults to the ImageRepository defined in KubernetesSpec.

imageTag string

ImageTag specifies a tag for the image.

DependencyConstraint

DependencyConstraint defines type for the dependency constraint object

Appears In:
Field Description Default Validation

operator string

Deployment

Field Description Default Validation

updateStrategy string

Deployment update strategy

RollingUpdate

Enum: [RollingUpdate Recreate]
Optional: \{}

rollingUpdate RollingUpdateInfo

Deployment rolling update info

Optional: \{}

Distribution

Distribution specifies the version of software which should be installed on the control plane and worker nodes. This version information encompasses Kubernetes and its dependencies, the base OS of the node, and add-ons.

Field Description Default Validation

fullVersion string

Version specifies the fully-qualified desired Kubernetes distribution version of the Tanzu Kubernetes cluster. If the
cluster exists and is not of the specified version, it will be upgraded.

Version is a semantic version string. The version may not be decreased. The major version may not be changed. If
the minor version is changed, it may only be incremented; skipping minor versions is not supported.

The current observed version of the cluster is held by status.version.
Deprecated: use topology.controlPlane.tkr and topology.nodePools[*].tkr instead.

version string

VersionHint provides the version webhook with guidance about the desired Kubernetes distribution version of the
Tanzu Kubernetes cluster. If a hint is provided without a full version, the most recent distribution matching the hint
will be selected.

The version selected based on the hint will be stored in the spec as the full version. This ensures that the same
version is used if the cluster is scaled out in the future.

VersionHint is a semantic prefix of a full version number. (E.g., v1.15.1 matches any distribution of v1.15.1,
including v1.15.1+vmware.1-tkg.1 or v1.15.1+vmware.2-tkg.1, but not v1.15.10+vmware.1-tkg.1.)

A hint that does not match the full version is invalid and will be rejected.

To upgrade a cluster to the most recent version that still matches the hint, leave the hint alone and remove the
fullVersion from the spec. This will cause the hint to be re-resolved.
Deprecated: use topology.controlPlane.tkr and topology.nodePools[*].tkr instead.

FieldError

Appears In:
Field Description Default Validation

type ErrorType

detail string

badValue string

KappConfig

Appears In:
Field Description Default Validation

caCerts string

A cert chain of trusted CA certs. These will be added to the system-wide cert pool of trusted CA’s. Cluster-wide CA Certificate setting will be used if this is not provided.

Optional: \{}

httpProxy string

The url/ip of a proxy for kapp controller to use when making network requests. Cluster-wide HTTP proxy setting will be used if this is not provided.

Optional: \{}

httpsProxy string

The url/ip of a TLS capable proxy for kapp-controller to use when making network requests. Cluster-wide HTTPS proxy setting will be used if this is not provided.

Optional: \{}

noProxy string

A comma delimited list of domain names which kapp-controller should bypass the proxy for when making requests. Cluster-wide no-proxy setting will be used if this is not provided.

Optional: \{}

dangerousSkipTLSVerify string

A comma delimited list of hostnames for which kapp-controller should skip TLS verification

Optional: \{}

KappController

Field Description Default Validation

createNamespace boolean

Whether to create namespace specified for kapp-controller

false

Optional: \{}

globalNamespace string

The namespace value used for global packaging resources. Any Package and PackageMetadata CRs within that namespace will be included in all other namespaces on the cluster, without duplicating them

tkg-system

Optional: \{}

deployment KappDeployment

{ hostNetwork:true }

Optional: \{}

config KappConfig

KappControllerConfig

KappControllerConfig is the Schema for the kappcontrollerconfigs API

Field Description Default Validation

apiVersion string

run.tanzu.vmware.com/v1alpha3

kind string

KappControllerConfig

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

KappControllerConfigSpec

KappControllerConfigSpec defines the desired state of KappControllerConfig

Appears In:
Field Description Default Validation

namespace string

The namespace in which kapp-controller is deployed

tkg-system

Optional: \{}

deployment Deployment

Optional: \{}

kappController KappController

{ deployment:map[hostNetwork:true] }

Optional: \{}

KappControllerConfigStatus

KappControllerConfigStatus defines the observed state of KappControllerConfig

Appears In:
Field Description Default Validation

secretRef string

Name of the data value secret created by controller

Optional: \{}

KappDeployment

Appears In:
Field Description Default Validation

hostNetwork boolean

Whether to enable host networking for kapp-controller deployment

true

Optional: \{}

priorityClassName string

The priority value that various system components use to find the priority of the kapp-controller pod

system-cluster-critical

Optional: \{}

concurrency integer

Concurrency of kapp-controller deployment

4

Optional: \{}

tolerations object array

kapp-controller deployment tolerations

Optional: \{}

apiPort integer

Bind port for kapp-controller API

10100

Optional: \{}

metricsBindAddress string

Address for metrics server

0

Optional: \{}

KubernetesSpec

KubernetesSpec specifies the details about the Kubernetes distribution shipped by this TKR.

Field Description Default Validation

version string

Version is Semantic Versioning conformant version of the Kubernetes build shipped by this TKR.
The same Kubernetes build MAY be shipped by multiple TKRs.

imageRepository string

ImageRepository specifies container image registry to pull images from.

Etcd specifies the container image repository and tag for etcd.

Pause specifies the container image repository and tag for pause.

CoreDNS specifies the container image repository and tag for coredns.

KubeVIP specifies the container image repository and tag for kube-vip.

MachineImageInfo

MachineImageInfo describes the "Image" part of the OSImage, defined by the image type.

Appears In:
Field Description Default Validation

type string

Type of the OSImage, roughly corresponding to the infrastructure provider (vSphere can serve both ova and vmop).
Some of currently known types are: "docker", "ova", "vmop".

ref object (keys:string, values:interface{})

Ref is a key-value map identifying the image within the infrastructure provider. This is the data
to be injected into the infra-Machine objects (like vSphereMachine) on creation.

Schemaless: \{}
Type: object

ManifestResource

ManifestResource represents a YAML manifest for installing an addon.

Field Description Default Validation

version string

Version is the addon version.

type string

Type is the type of the manifest resource. In VirtualMachineImage based addons its value is 'inline'.

value string

Value is the text of the YAML manifest.

Network

Network specifies network-related settings for a cluster.

Appears In:
Field Description Default Validation

services NetworkRanges

Services specify network settings for services.

Defaults to 10.96.0.0/12.

Pods specify network settings for pods.

When CNI is antrea, set Defaults to 192.168.0.0/16.
When CNI is antrea-nsx-routed, set Defaults to empty

serviceDomain string

ServiceDomain specifies service domain for Tanzu Kubernetes cluster.

Defaults to a cluster.local.

CNI is the Container Networking Interface plugin for the Tanzu Kubernetes cluster.

Defaults to Calico.

Proxy specifies HTTP(s) proxy configuration for Tanzu Kubernetes cluster.

If omitted, no proxy will be configured in the system.

Trust specifies certificate configuration for the Tanzu Kubernetes Cluster.

If omitted, no certificate will be configured in the system.

NetworkRanges

NetworkRanges describes a collection of IP addresses as a list of ranges.

Appears In:
Field Description Default Validation

cidrBlocks string array

CIDRBlocks specifies one or more ranges of IP addresses.

Note: supplying multiple ranges many not be supported by all CNI plugins.

NodePool

NodePool describes a group of nodes within a cluster that have the same configuration

Appears In:
Field Description Default Validation

name string

Name is the name of the NodePool.

labels object (keys:string, values:string)

Labels are map of string keys and values that can be used to organize and categorize objects.
User-defined labels will be propagated to the created nodes.

taints Taint array

Taints specifies the taints the Node API object should be registered with.
User-defined taints will be propagated to the created nodes.

failureDomain string

FailureDomain is the failure domain the machines will be created in.
Must match a key in the FailureDomains map stored on the cluster object.

replicas integer

Replicas is the number of nodes.
This is a pointer to distinguish between explicit zero and not specified, nil.
For control plane, defaults to 1 if nil.
For node pools, a value of nil indicates that the field will not be reconciled, allowing external services like
autoscalers to choose the number of nodes. By default, CAPI’s MachineDeployment will pick 1.

vmClass string

VMClass is the name of the VirtualMachineClass, which describes the virtual hardware settings, to be used each node
in the pool. This controls the hardware available to the node (CPU and memory) as well as the requests and limits
on those resources. Run kubectl describe virtualmachineclasses to see which VM classes are available to use.

storageClass string

StorageClass is the storage class to be used for storage of the disks which store the root filesystems of the
nodes. Run kubectl describe ns on your namespace to see which storage classes are available to use.

volumes Volume array

Volumes is the set of PVCs to be created and attached to each node.

TKR points to KubernetesRelease intended to be used by the node pool
(the control plane being special kind of a node pool).

nodeDrainTimeout Duration

NodeDrainTimeout is the total amount of time that the controller will
spend on draining a node. The default value is 0, meaning that the node
will be drained without any time limitations.
NOTE: NodeDrainTimeout is different from kubectl drain --timeout

OSImage

OSImage is the schema for the OSImages API. OSImage objects represent OSImages shipped as parts of TKRs. OSImages are immutable to end-users. They are created and managed by TKG to provide discovery of Kubernetes releases to TKG users and OS image details for infrastructure Machines.

Field Description Default Validation

apiVersion string

run.tanzu.vmware.com/v1alpha3

kind string

OSImage

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

status OSImageStatus

OSImageSpec

OSImageSpec defines the desired state of OSImage

Appears In:
Field Description Default Validation

kubernetesVersion string

KubernetesVersion specifies the build version of the Kubernetes shipped with this OSImage.

os OSInfo

OS specifies the "OS" part of the OSImage.

Image specifies the "Image" part of the OSImage.

OSImageStatus

OSImageStatus defines the observed state of OSImage

Appears In:
Field Description Default Validation

conditions Condition array

OSInfo

OSInfo describes the "OS" part of the OSImage, defined by the Operating System’s name, version and CPU architecture.

Appears In:
Field Description Default Validation

type string

name string

version string

arch string

ProviderServiceAccount

ProviderServiceAccount is the schema for the ProviderServiceAccount API.

Field Description Default Validation

apiVersion string

run.tanzu.vmware.com/v1alpha3

kind string

ProviderServiceAccount

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

ProviderServiceAccountSpec

ProviderServiceAccountSpec defines the desired state of ProviderServiceAccount.

Field Description Default Validation

Ref specifies the reference to the TanzuKubernetesCluster for which the ProviderServiceAccount needs to be realized.

rules PolicyRule array

Rules specifies the privileges that need to be granted to the service account.

targetNamespace string

TargetNamespace is the namespace in the target cluster where the secret containing the generated service account
token needs to be created.

targetSecretName string

TargetSecretName is the name of the secret in the target cluster that contains the generated service account
token.

ProxyConfiguration

ProxyConfiguration configures the HTTP(s) proxy to be used inside the Tanzu Kubernetes cluster.

Field Description Default Validation

httpProxy string

HttpProxy specifies a proxy URL to use for creating HTTP connections outside the cluster.
Example: http://<user>:<pwd>@<ip>:<port>;

httpsProxy string

HttpsProxy specifies a proxy URL to use for creating HTTPS connections outside the cluster.
Example: http://<user>:<pwd>@<ip>:<port>;

noProxy string array

NoProxy specifies a list of destination domain names, domains, IP addresses or other network CIDRs to exclude proxying.
Example: [localhost, 127.0.0.1, 10.10.10.0/24]

RollingUpdateInfo

RollingUpdateInfo contains the rolling update settings

Appears In:
Field Description Default Validation

maxUnavailable integer

0

Optional: \{}

maxSurge integer

1

Optional: \{}

Settings

Settings specifies configuration information for a cluster.

Field Description Default Validation

network Network

Network specifies network-related settings for the cluster.

storage Storage

Storage specifies storage-related settings for the cluster.

The storage used for node’s disks is controlled by TopologySettings.

Storage

Storage configures persistent storage for a cluster.

Appears In:
Field Description Default Validation

classes string array

Classes is a list of storage classes from the supervisor namespace to expose within a cluster.

If omitted, all storage classes from the supervisor namespace will be exposed within the cluster.

defaultClass string

DefaultClass is the valid storage class name which is treated as the default storage class within a cluster.
If omitted, no default storage class is set

TKRReference

TKRReference is an extensible way to link a KubernetesRelease.

Field Description Default Validation

reference ObjectReference

Reference is a way to set the fixed link to the target object.

TLSCertificate

TLSCertificate specifies a single additional certificate name and contents

Appears In:
Field Description Default Validation

name string

Name specifies the name of the additional certificate, used in the filename
Example: CompanyInternalCA

data string

Data specifies the contents of the additional certificate, encoded as a
base64 string. Specifically, this is the PEM Public Certificate data as
a base64 string..
Example: LS0tLS1C…​LS0tCg== (where "…​" is the middle section of the long base64 string)

TanzuKubernetesAddon

TanzuKubernetesAddon is the schema for the tanzukubernetesaddons API. TanzuKubernetesAddon objects represent Kubernetes addons available via TKG Service, which can be used to create TanzuKubernetesCluster instances. TKAs are immutable to end-users. They are created and managed by TKG Service to provide discovery of Kubernetes addons to TKG Service users.

Field Description Default Validation

apiVersion string

run.tanzu.vmware.com/v1alpha3

kind string

TanzuKubernetesAddon

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

TanzuKubernetesAddonSpec

TanzuKubernetesAddonSpec defines the desired state of TanzuKubernetesAddon

Appears In:
Field Description Default Validation

addonName string

AddonName is the generic name of this addon, e.g. "antrea", "calico", "pvcsi", etc.

version string

Version is the fully qualified Semantic Versioning conformant version of the TanzuKubernetesAddon.
If set, Version MUST be unique across all TanzuKubernetesAddon objects with the same addonName.

repository string

Repository is the default container image repository used by Images. It MUST be a DNS-compatible name.

images ContainerImage array

Images is the list of container images shipped by this addon (e.g. coredns, etcd).

resource ManifestResource

Resource contains the YAML manifest for installing the addon.

TanzuKubernetesAddonStatus

TanzuKubernetesAddonStatus defines the observed state of TanzuKubernetesAddon

Appears In:

TanzuKubernetesCluster

TanzuKubernetesCluster is the schema for the Tanzu Kubernetes Grid service for vSphere API.

Field Description Default Validation

apiVersion string

run.tanzu.vmware.com/v1alpha3

kind string

TanzuKubernetesCluster

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

TanzuKubernetesClusterPhase

Underlying type: string

TanzuKubernetesClusterPhase is a type for the Tanzu Kubernetes cluster’s phase constants.

TanzuKubernetesClusterSpec

TanzuKubernetesClusterSpec defines the desired state of TanzuKubernetesCluster: its nodes, the software installed on those nodes and the way that software should be configured.

Field Description Default Validation

topology Topology

Topology specifies the topology for the Tanzu Kubernetes cluster: the number, purpose, and organization of the nodes which
form the cluster and the resources allocated for each.

distribution Distribution

Distribution specifies the distribution for the Tanzu Kubernetes cluster: the software installed on the control plane and
worker nodes, including Kubernetes itself.
Deprecated: use topology.controlPlane.tkr and topology.nodePools[*].tkr instead.

settings Settings

Settings specifies settings for the Tanzu Kubernetes cluster: the way an instance of a distribution is configured,
including information about pod networking and storage.

TanzuKubernetesClusterStatus

TanzuKubernetesClusterStatus defines the observed state of TanzuKubernetesCluster.

Field Description Default Validation

apiEndpoints APIEndpoint array

APIEndpoints represents the endpoints to communicate with the control plane.

version string

Version holds the observed version of the Tanzu Kubernetes cluster. While an upgrade is in progress this value will be the
version of the cluster when the upgrade began.

addons AddonStatus array

Addons groups the statuses of a Tanzu Kubernetes cluster’s add-ons.

Phase of this TanzuKubernetesCluster.
Deprecated: will be removed in v1alpha3

conditions Conditions

Conditions defines current service state of the TanzuKubernetestCluster.

totalWorkerReplicas integer

Total number of replicas in worker node pools.

TanzuKubernetesRelease

TanzuKubernetesRelease is the schema for the tanzukubernetesreleases API. TanzuKubernetesRelease objects represent Kubernetes releases available via TKG, which can be used to create TanzuKubernetesCluster instances. TKRs are immutable to end-users. They are created and managed by TKG to provide discovery of Kubernetes releases to TKG users.

Field Description Default Validation

apiVersion string

run.tanzu.vmware.com/v1alpha3

kind string

TanzuKubernetesRelease

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

TanzuKubernetesReleaseSpec

TanzuKubernetesReleaseSpec defines the desired state of TanzuKubernetesRelease

Field Description Default Validation

version string

Version is the fully qualified Semantic Versioning conformant version of the TanzuKubernetesRelease.
Version MUST be unique across all TanzuKubernetesRelease objects.

kubernetes KubernetesSpec

Kubernetes is Kubernetes

osImages LocalObjectReference array

OSImages lists references to all OSImage objects shipped with this TKR.

bootstrapPackages LocalObjectReference array

BootstrapPackages lists references to all bootstrap packages shipped with this TKR.

TanzuKubernetesReleaseStatus

TanzuKubernetesReleaseStatus defines the observed state of TanzuKubernetesRelease

Field Description Default Validation

conditions Condition array

TkgServiceConfiguration

TkgServiceConfiguration is the Schema for the tkgserviceconfigurations API

Field Description Default Validation

apiVersion string

run.tanzu.vmware.com/v1alpha3

kind string

TkgServiceConfiguration

metadata ObjectMeta

Refer to Kubernetes API documentation for fields of metadata.

TkgServiceConfigurationSpec

TkgServiceConfigurationSpec defines the desired state of TkgServiceConfiguration

Field Description Default Validation

defaultCNI string

Default CNI for TanzuKubernetesCluster

Proxy specifies default global HTTP(s) Proxy Configuration for all new TanzuKubernetesClusters in this Supervisor cluster

If omitted, no proxy will be configured for new TanzuKubernetesClusters

Trust specifies default global Trust settings for all new TanzuKubernetesClusters
in the Supervisor Cluster.

If omitted, no additional Trust settings will be configured for the new TanzuKubernetesCluster.

defaultNodeDrainTimeout Duration

DefaultNodeDrainTimeout specifies the total amount of time that the
controller will spend on draining a node by default. Undefined, the value
is 0, meaning that the node can be drained without any time limitations.
NOTE: NodeDrainTimeout is different from kubectl drain --timeout

TkgServiceConfigurationStatus

TkgServiceConfigurationStatus defines the observed state of TkgServiceConfiguration

Topology

Topology describes the number, purpose, and organization of nodes and the resources allocated for each. Nodes are grouped into pools based on their intended purpose. Each pool is homogeneous, having the same resource allocation and using the same storage.

Field Description Default Validation

controlPlane TopologySettings

ControlPlane specifies the topology of the cluster’s control plane, including the number of control plane nodes
and resources allocated for each. The control plane must have an odd number of nodes.

nodePools NodePool array

NodePools specifies the topology of cluster’s worker node pools, including the number of nodes and resources
allocated for each node.

TopologySettings

TopologySettings describes a homogeneous pool of nodes: the number of nodes in the pool and the properties of each of those nodes, including resource allocation and storage.

Appears In:
Field Description Default Validation

replicas integer

Replicas is the number of nodes.
This is a pointer to distinguish between explicit zero and not specified, nil.
For control plane, defaults to 1 if nil.
For node pools, a value of nil indicates that the field will not be reconciled, allowing external services like
autoscalers to choose the number of nodes. By default, CAPI’s MachineDeployment will pick 1.

vmClass string

VMClass is the name of the VirtualMachineClass, which describes the virtual hardware settings, to be used each node
in the pool. This controls the hardware available to the node (CPU and memory) as well as the requests and limits
on those resources. Run kubectl describe virtualmachineclasses to see which VM classes are available to use.

storageClass string

StorageClass is the storage class to be used for storage of the disks which store the root filesystems of the
nodes. Run kubectl describe ns on your namespace to see which storage classes are available to use.

volumes Volume array

Volumes is the set of PVCs to be created and attached to each node.

TKR points to KubernetesRelease intended to be used by the node pool
(the control plane being special kind of a node pool).

nodeDrainTimeout Duration

NodeDrainTimeout is the total amount of time that the controller will
spend on draining a node. The default value is 0, meaning that the node
will be drained without any time limitations.
NOTE: NodeDrainTimeout is different from kubectl drain --timeout

TrustConfiguration

TrustConfiguration configures additional trust parameters to the cluster configuration

Field Description Default Validation

additionalTrustedCAs TLSCertificate array

AdditionalTrustedCAs specifies the additional trusted certificates (which
can be additional CAs or end certificates) to add to the cluster

ValuesFrom

ValuesFrom specifies how values for package install are retrieved from

Field Description Default Validation

inline object (keys:string, values:interface{})

Schemaless: \{}
Type: object

secretRef string

Volume

Volume defines a PVC attachment. These volumes are tied to the node lifecycle, created and deleted when the node is. The volumes are mounted in the node during the bootstrap process, prior to services being started (e.g. etcd, containerd).

Field Description Default Validation

name string

Name is suffix used to name this PVC as: node.Name + "-" + Name

mountPath string

MountPath is the directory where the volume device is to be mounted

storageClass string

StorageClass is the storage class to be used for the disks.
Defaults to TopologySettings.StorageClass