v1beta2

package
v1.11.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 2, 2025 License: Apache-2.0 Imports: 15 Imported by: 5

Documentation

Overview

Package v1beta2 contains API Schema definitions for the kubeadm v1beta2 API group. +kubebuilder:object:generate=true +groupName=bootstrap.cluster.x-k8s.io

Index

Constants

View Source
const (
	// KubeadmConfigReadyCondition is true if the KubeadmConfig is not deleted,
	// and both DataSecretCreated, CertificatesAvailable conditions are true.
	KubeadmConfigReadyCondition = clusterv1.ReadyCondition

	// KubeadmConfigReadyReason surfaces when the KubeadmConfig is ready.
	KubeadmConfigReadyReason = clusterv1.ReadyReason

	// KubeadmConfigNotReadyReason surfaces when the KubeadmConfig is not ready.
	KubeadmConfigNotReadyReason = clusterv1.NotReadyReason

	// KubeadmConfigReadyUnknownReason surfaces when KubeadmConfig readiness is unknown.
	KubeadmConfigReadyUnknownReason = clusterv1.ReadyUnknownReason
)

KubeadmConfig's Ready condition and corresponding reasons.

View Source
const (
	// KubeadmConfigCertificatesAvailableCondition documents that cluster certificates required
	// for generating the bootstrap data secret are available.
	KubeadmConfigCertificatesAvailableCondition = "CertificatesAvailable"

	// KubeadmConfigCertificatesAvailableReason surfaces when certificates required for machine bootstrap are is available.
	KubeadmConfigCertificatesAvailableReason = clusterv1.AvailableReason

	// KubeadmConfigCertificatesAvailableInternalErrorReason surfaces unexpected failures when reading or
	// generating certificates required for machine bootstrap.
	KubeadmConfigCertificatesAvailableInternalErrorReason = clusterv1.InternalErrorReason
)

KubeadmConfig's CertificatesAvailable condition and corresponding reasons.

View Source
const (
	// KubeadmConfigDataSecretAvailableCondition is true if the bootstrap secret is available.
	KubeadmConfigDataSecretAvailableCondition = "DataSecretAvailable"

	// KubeadmConfigDataSecretAvailableReason surfaces when the bootstrap secret is available.
	KubeadmConfigDataSecretAvailableReason = clusterv1.AvailableReason

	// KubeadmConfigDataSecretNotAvailableReason surfaces when the bootstrap secret is not available.
	KubeadmConfigDataSecretNotAvailableReason = clusterv1.NotAvailableReason
)

KubeadmConfig's DataSecretAvailable condition and corresponding reasons.

View Source
const (
	// DataSecretAvailableV1Beta1Condition documents the status of the bootstrap secret generation process.
	//
	// NOTE: When the DataSecret generation starts the process completes immediately and within the
	// same reconciliation, so the user will always see a transition from Wait to Generated without having
	// evidence that BootstrapSecret generation is started/in progress.
	DataSecretAvailableV1Beta1Condition clusterv1.ConditionType = "DataSecretAvailable"

	// WaitingForClusterInfrastructureV1Beta1Reason (Severity=Info) document a bootstrap secret generation process
	// waiting for the cluster infrastructure to be ready.
	//
	// NOTE: Having the cluster infrastructure ready is a pre-condition for starting to create machines;
	// the KubeadmConfig controller ensure this pre-condition is satisfied.
	WaitingForClusterInfrastructureV1Beta1Reason = "WaitingForClusterInfrastructure"

	// DataSecretGenerationFailedV1Beta1Reason (Severity=Warning) documents a KubeadmConfig controller detecting
	// an error while generating a data secret; those kind of errors are usually due to misconfigurations
	// and user intervention is required to get them fixed.
	DataSecretGenerationFailedV1Beta1Reason = "DataSecretGenerationFailed"
)
View Source
const (
	// CertificatesAvailableV1Beta1Condition documents that cluster certificates are available.
	//
	// NOTE: Cluster certificates are generated only for the KubeadmConfig object linked to the initial control plane
	// machine, if the cluster is not using a control plane ref object, if the certificates are not provided
	// by the users.
	// IMPORTANT: This condition won't be re-created after clusterctl move.
	CertificatesAvailableV1Beta1Condition clusterv1.ConditionType = "CertificatesAvailable"

	// CertificatesGenerationFailedV1Beta1Reason (Severity=Warning) documents a KubeadmConfig controller detecting
	// an error while generating certificates; those kind of errors are usually temporary and the controller
	// automatically recover from them.
	CertificatesGenerationFailedV1Beta1Reason = "CertificatesGenerationFailed"

	// CertificatesCorruptedV1Beta1Reason (Severity=Error) documents a KubeadmConfig controller detecting
	// an error while retrieving certificates for a joining node.
	CertificatesCorruptedV1Beta1Reason = "CertificatesCorrupted"
)

Variables

View Source
var (
	// GroupVersion is group version used to register these objects.
	GroupVersion = schema.GroupVersion{Group: "bootstrap.cluster.x-k8s.io", Version: "v1beta2"}

	// AddToScheme adds the types in this group-version to the given scheme.
	AddToScheme = schemeBuilder.AddToScheme
)

Functions

func ConvertFromArgs

func ConvertFromArgs(in []Arg) map[string]string

ConvertFromArgs takes a slice of arguments and returns an argument map. Duplicate argument keys will be de-duped, where later keys will take precedence. NOTE: this is a util function intended only for usage in API conversions.

Types

type APIEndpoint

type APIEndpoint struct {
	// advertiseAddress sets the IP address for the API server to advertise.
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=39
	AdvertiseAddress string `json:"advertiseAddress,omitempty"`

	// bindPort sets the secure port for the API Server to bind to.
	// Defaults to 6443.
	// +optional
	// +kubebuilder:validation:Minimum=1
	BindPort int32 `json:"bindPort,omitempty"`
}

APIEndpoint struct contains elements of API server instance deployed on a node. +kubebuilder:validation:MinProperties=1

func (*APIEndpoint) DeepCopy

func (in *APIEndpoint) DeepCopy() *APIEndpoint

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APIEndpoint.

func (*APIEndpoint) DeepCopyInto

func (in *APIEndpoint) DeepCopyInto(out *APIEndpoint)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type APIServer

type APIServer struct {
	// extraArgs is a list of args to pass to the control plane component.
	// The arg name must match the command line flag name except without leading dash(es).
	// Extra arguments will override existing default arguments set by kubeadm.
	// +optional
	// +listType=map
	// +listMapKey=name
	// +listMapKey=value
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=100
	// +kubebuilder:validation:XValidation:rule="self.all(x, self.exists_one(y, x.name == y.name))",message="extraArgs name must be unique"
	ExtraArgs []Arg `json:"extraArgs,omitempty"`

	// extraVolumes is an extra set of host volumes, mounted to the control plane component.
	// +optional
	// +listType=atomic
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=100
	ExtraVolumes []HostPathMount `json:"extraVolumes,omitempty"`

	// 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.
	// +optional
	// +listType=atomic
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=100
	ExtraEnvs *[]EnvVar `json:"extraEnvs,omitempty"`

	// certSANs sets extra Subject Alternative Names for the API Server signing cert.
	// +optional
	// +listType=atomic
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=100
	// +kubebuilder:validation:items:MinLength=1
	// +kubebuilder:validation:items:MaxLength=253
	CertSANs []string `json:"certSANs,omitempty"`
}

APIServer holds settings necessary for API server deployments in the cluster. +kubebuilder:validation:MinProperties=1

func (*APIServer) DeepCopy

func (in *APIServer) DeepCopy() *APIServer

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APIServer.

func (*APIServer) DeepCopyInto

func (in *APIServer) DeepCopyInto(out *APIServer)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Arg

type Arg struct {
	// name is the Name of the extraArg.
	// +required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=256
	Name string `json:"name,omitempty"`

	// value is the Value of the extraArg.
	// +required
	// +kubebuilder:validation:MinLength=0
	// +kubebuilder:validation:MaxLength=1024
	Value *string `json:"value,omitempty"`
}

Arg represents an argument with a name and a value.

func ConvertToArgs

func ConvertToArgs(in map[string]string) []Arg

ConvertToArgs takes a argument map and converts it to a slice of arguments. The resulting argument slice is sorted alpha-numerically. NOTE: this is a util function intended only for usage in API conversions.

func (*Arg) DeepCopy

func (in *Arg) DeepCopy() *Arg

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Arg.

func (*Arg) DeepCopyInto

func (in *Arg) DeepCopyInto(out *Arg)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type BootstrapToken

type BootstrapToken struct {
	// token is used for establishing bidirectional trust between nodes and control-planes.
	// Used for joining nodes in the cluster.
	// +required
	Token BootstrapTokenString `json:"token,omitempty,omitzero"`

	// description sets a human-friendly message why this token exists and what it's used
	// for, so other administrators can know its purpose.
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=512
	Description string `json:"description,omitempty"`

	// ttlSeconds defines the time to live for this token. Defaults to 24h.
	// Expires and ttlSeconds are mutually exclusive.
	// +optional
	// +kubebuilder:validation:Minimum=0
	TTLSeconds *int32 `json:"ttlSeconds,omitempty"`

	// expires specifies the timestamp when this token expires. Defaults to being set
	// dynamically at runtime based on the ttlSeconds. Expires and ttlSeconds are mutually exclusive.
	// +optional
	Expires metav1.Time `json:"expires,omitempty,omitzero"`

	// 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.
	// +optional
	// +listType=atomic
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=100
	// +kubebuilder:validation:items:MinLength=1
	// +kubebuilder:validation:items:MaxLength=256
	Usages []string `json:"usages,omitempty"`

	// groups specifies the extra groups that this token will authenticate as when/if
	// used for authentication
	// +optional
	// +listType=atomic
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=100
	// +kubebuilder:validation:items:MinLength=1
	// +kubebuilder:validation:items:MaxLength=256
	Groups []string `json:"groups,omitempty"`
}

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

func (*BootstrapToken) DeepCopy

func (in *BootstrapToken) DeepCopy() *BootstrapToken

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BootstrapToken.

func (*BootstrapToken) DeepCopyInto

func (in *BootstrapToken) DeepCopyInto(out *BootstrapToken)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type BootstrapTokenDiscovery

type BootstrapTokenDiscovery struct {
	// token is a token used to validate cluster information
	// fetched from the control-plane.
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=512
	Token string `json:"token,omitempty"`

	// apiServerEndpoint is an IP or domain name to the API server from which info will be fetched.
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=512
	APIServerEndpoint string `json:"apiServerEndpoint,omitempty"`

	// 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
	// +optional
	// +listType=atomic
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=100
	// +kubebuilder:validation:items:MinLength=1
	// +kubebuilder:validation:items:MaxLength=512
	CACertHashes []string `json:"caCertHashes,omitempty"`

	// 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.
	// +optional
	UnsafeSkipCAVerification *bool `json:"unsafeSkipCAVerification,omitempty"`
}

BootstrapTokenDiscovery is used to set the options for bootstrap token based discovery. +kubebuilder:validation:MinProperties=1

func (*BootstrapTokenDiscovery) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BootstrapTokenDiscovery.

func (*BootstrapTokenDiscovery) DeepCopyInto

func (in *BootstrapTokenDiscovery) DeepCopyInto(out *BootstrapTokenDiscovery)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*BootstrapTokenDiscovery) IsDefined

func (r *BootstrapTokenDiscovery) IsDefined() bool

IsDefined returns true if the BootstrapTokenDiscovery is defined.

type BootstrapTokenString

type BootstrapTokenString struct {
	ID     string `json:"-"`
	Secret string `json:"-"`
}

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.

+kubebuilder:validation:Type=string +kubebuilder:validation:MinLength=1 +kubebuilder:validation:MaxLength=23

func NewBootstrapTokenString

func NewBootstrapTokenString(token string) (*BootstrapTokenString, error)

NewBootstrapTokenString converts the given Bootstrap Token as a string to the BootstrapTokenString object used for serialization/deserialization and internal usage. It also automatically validates that the given token is of the right format.

func (*BootstrapTokenString) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BootstrapTokenString.

func (*BootstrapTokenString) DeepCopyInto

func (in *BootstrapTokenString) DeepCopyInto(out *BootstrapTokenString)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (BootstrapTokenString) MarshalJSON

func (bts BootstrapTokenString) MarshalJSON() ([]byte, error)

MarshalJSON implements the json.Marshaler interface.

func (BootstrapTokenString) String

func (bts BootstrapTokenString) String() string

String returns the string representation of the BootstrapTokenString.

func (*BootstrapTokenString) UnmarshalJSON

func (bts *BootstrapTokenString) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaller interface.

type ClusterConfiguration

type ClusterConfiguration struct {
	// etcd holds configuration for etcd.
	// NB: This value defaults to a Local (stacked) etcd
	// +optional
	Etcd Etcd `json:"etcd,omitempty,omitzero"`

	// 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.
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=512
	ControlPlaneEndpoint string `json:"controlPlaneEndpoint,omitempty"`

	// apiServer contains extra settings for the API server control plane component
	// +optional
	APIServer APIServer `json:"apiServer,omitempty,omitzero"`

	// controllerManager contains extra settings for the controller manager control plane component
	// +optional
	ControllerManager ControllerManager `json:"controllerManager,omitempty,omitzero"`

	// scheduler contains extra settings for the scheduler control plane component
	// +optional
	Scheduler Scheduler `json:"scheduler,omitempty,omitzero"`

	// dns defines the options for the DNS add-on installed in the cluster.
	// +optional
	DNS DNS `json:"dns,omitempty,omitzero"`

	// certificatesDir specifies where to store or look for all required certificates.
	// NB: if not provided, this will default to `/etc/kubernetes/pki`
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=512
	CertificatesDir string `json:"certificatesDir,omitempty"`

	// 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.
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=512
	ImageRepository string `json:"imageRepository,omitempty"`

	// featureGates enabled by the user.
	// +optional
	FeatureGates map[string]bool `json:"featureGates,omitempty"`

	// certificateValidityPeriodDays specifies the validity period for non-CA certificates generated by kubeadm.
	// If not specified, kubeadm will use a default of 365 days (1 year).
	// This field is only supported with Kubernetes v1.31 or above.
	// +optional
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=1095
	CertificateValidityPeriodDays int32 `json:"certificateValidityPeriodDays,omitempty"`

	// caCertificateValidityPeriodDays specifies the validity period for CA certificates generated by Cluster API.
	// If not specified, Cluster API will use a default of 3650 days (10 years).
	// This field cannot be modified.
	// +optional
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=36500
	CACertificateValidityPeriodDays int32 `json:"caCertificateValidityPeriodDays,omitempty"`
}

ClusterConfiguration contains cluster-wide configuration for a kubeadm cluster. +kubebuilder:validation:MinProperties=1

func (*ClusterConfiguration) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterConfiguration.

func (*ClusterConfiguration) DeepCopyInto

func (in *ClusterConfiguration) DeepCopyInto(out *ClusterConfiguration)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ClusterConfiguration) Hub

func (*ClusterConfiguration) Hub()

func (*ClusterConfiguration) IsDefined

func (r *ClusterConfiguration) IsDefined() bool

IsDefined returns true if the ClusterConfiguration is defined.

type ContainerLinuxConfig

type ContainerLinuxConfig struct {
	// 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
	//
	// The data format is documented here: https://kinvolk.io/docs/flatcar-container-linux/latest/provisioning/cl-config/
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=32768
	AdditionalConfig string `json:"additionalConfig,omitempty"`

	// strict controls if AdditionalConfig should be strictly parsed. If so, warnings are treated as errors.
	// +optional
	Strict *bool `json:"strict,omitempty"`
}

ContainerLinuxConfig contains CLC-specific configuration.

We use a structured type here to allow adding additional fields, for example 'version'. +kubebuilder:validation:MinProperties=1

func (*ContainerLinuxConfig) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ContainerLinuxConfig.

func (*ContainerLinuxConfig) DeepCopyInto

func (in *ContainerLinuxConfig) DeepCopyInto(out *ContainerLinuxConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ContainerLinuxConfig) IsDefined

func (r *ContainerLinuxConfig) IsDefined() bool

IsDefined returns true if the ContainerLinuxConfig is defined.

type ControllerManager

type ControllerManager struct {
	// extraArgs is a list of args to pass to the control plane component.
	// The arg name must match the command line flag name except without leading dash(es).
	// Extra arguments will override existing default arguments set by kubeadm.
	// +optional
	// +listType=map
	// +listMapKey=name
	// +listMapKey=value
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=100
	// +kubebuilder:validation:XValidation:rule="self.all(x, self.exists_one(y, x.name == y.name))",message="extraArgs name must be unique"
	ExtraArgs []Arg `json:"extraArgs,omitempty"`

	// extraVolumes is an extra set of host volumes, mounted to the control plane component.
	// +optional
	// +listType=atomic
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=100
	ExtraVolumes []HostPathMount `json:"extraVolumes,omitempty"`

	// 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.
	// +optional
	// +listType=atomic
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=100
	ExtraEnvs *[]EnvVar `json:"extraEnvs,omitempty"`
}

ControllerManager holds settings necessary for controller-manager deployments in the cluster. +kubebuilder:validation:MinProperties=1

func (*ControllerManager) DeepCopy

func (in *ControllerManager) DeepCopy() *ControllerManager

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControllerManager.

func (*ControllerManager) DeepCopyInto

func (in *ControllerManager) DeepCopyInto(out *ControllerManager)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DNS

type DNS struct {
	// imageRepository sets the container registry to pull images from.
	// if not set, the ImageRepository defined in ClusterConfiguration will be used instead.
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=512
	ImageRepository string `json:"imageRepository,omitempty"`

	// 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.
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=256
	ImageTag string `json:"imageTag,omitempty"`
}

DNS defines the DNS addon that should be used in the cluster. +kubebuilder:validation:MinProperties=1

func (*DNS) DeepCopy

func (in *DNS) DeepCopy() *DNS

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNS.

func (*DNS) DeepCopyInto

func (in *DNS) DeepCopyInto(out *DNS)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Discovery

type Discovery struct {
	// bootstrapToken is used to set the options for bootstrap token based discovery
	// BootstrapToken and File are mutually exclusive
	// +optional
	BootstrapToken BootstrapTokenDiscovery `json:"bootstrapToken,omitempty,omitzero"`

	// 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
	// +optional
	File FileDiscovery `json:"file,omitempty,omitzero"`

	// 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
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=512
	TLSBootstrapToken string `json:"tlsBootstrapToken,omitempty"`
}

Discovery specifies the options for the kubelet to use during the TLS Bootstrap process. +kubebuilder:validation:MinProperties=1

func (*Discovery) DeepCopy

func (in *Discovery) DeepCopy() *Discovery

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Discovery.

func (*Discovery) DeepCopyInto

func (in *Discovery) DeepCopyInto(out *Discovery)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DiskSetup

type DiskSetup struct {
	// partitions specifies the list of the partitions to setup.
	// +optional
	// +listType=atomic
	// +kubebuilder:validation:MaxItems=100
	Partitions []Partition `json:"partitions,omitempty"`

	// filesystems specifies the list of file systems to setup.
	// +optional
	// +listType=atomic
	// +kubebuilder:validation:MaxItems=100
	Filesystems []Filesystem `json:"filesystems,omitempty"`
}

DiskSetup defines input for generated disk_setup and fs_setup in cloud-init. +kubebuilder:validation:MinProperties=1

func (*DiskSetup) DeepCopy

func (in *DiskSetup) DeepCopy() *DiskSetup

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DiskSetup.

func (*DiskSetup) DeepCopyInto

func (in *DiskSetup) DeepCopyInto(out *DiskSetup)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*DiskSetup) IsDefined

func (r *DiskSetup) IsDefined() bool

IsDefined returns true if the DiskSetup is defined.

type Encoding

type Encoding string

Encoding specifies the cloud-init file encoding. +kubebuilder:validation:Enum=base64;gzip;gzip+base64

const (
	// Base64 implies the contents of the file are encoded as base64.
	Base64 Encoding = "base64"
	// Gzip implies the contents of the file are encoded with gzip.
	Gzip Encoding = "gzip"
	// GzipBase64 implies the contents of the file are first base64 encoded and then gzip encoded.
	GzipBase64 Encoding = "gzip+base64"
)

type EnvVar

type EnvVar struct {
	corev1.EnvVar `json:",inline"`
}

EnvVar represents an environment variable present in a Container.

func (*EnvVar) DeepCopy

func (in *EnvVar) DeepCopy() *EnvVar

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EnvVar.

func (*EnvVar) DeepCopyInto

func (in *EnvVar) DeepCopyInto(out *EnvVar)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Etcd

type Etcd struct {
	// local provides configuration knobs for configuring the local etcd instance
	// Local and External are mutually exclusive
	// +optional
	Local LocalEtcd `json:"local,omitempty,omitzero"`

	// external describes how to connect to an external etcd cluster
	// Local and External are mutually exclusive
	// +optional
	External ExternalEtcd `json:"external,omitempty,omitzero"`
}

Etcd contains elements describing Etcd configuration. +kubebuilder:validation:MinProperties=1

func (*Etcd) DeepCopy

func (in *Etcd) DeepCopy() *Etcd

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Etcd.

func (*Etcd) DeepCopyInto

func (in *Etcd) DeepCopyInto(out *Etcd)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ExternalEtcd

type ExternalEtcd struct {
	// endpoints of etcd members. Required for ExternalEtcd.
	// +required
	// +listType=atomic
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=50
	// +kubebuilder:validation:items:MinLength=1
	// +kubebuilder:validation:items:MaxLength=512
	Endpoints []string `json:"endpoints,omitempty"`

	// caFile is an SSL Certificate Authority file used to secure etcd communication.
	// Required if using a TLS connection.
	// +required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=512
	CAFile string `json:"caFile,omitempty"`

	// certFile is an SSL certification file used to secure etcd communication.
	// Required if using a TLS connection.
	// +required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=512
	CertFile string `json:"certFile,omitempty"`

	// keyFile is an SSL key file used to secure etcd communication.
	// Required if using a TLS connection.
	// +required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=512
	KeyFile string `json:"keyFile,omitempty"`
}

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

func (*ExternalEtcd) DeepCopy

func (in *ExternalEtcd) DeepCopy() *ExternalEtcd

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalEtcd.

func (*ExternalEtcd) DeepCopyInto

func (in *ExternalEtcd) DeepCopyInto(out *ExternalEtcd)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ExternalEtcd) IsDefined

func (r *ExternalEtcd) IsDefined() bool

IsDefined returns true if the ExternalEtcd is defined.

type File

type File struct {
	// path specifies the full path on disk where to store the file.
	// +required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=512
	Path string `json:"path,omitempty"`

	// owner specifies the ownership of the file, e.g. "root:root".
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=256
	Owner string `json:"owner,omitempty"`

	// permissions specifies the permissions to assign to the file, e.g. "0640".
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=16
	Permissions string `json:"permissions,omitempty"`

	// encoding specifies the encoding of the file contents.
	// +optional
	Encoding Encoding `json:"encoding,omitempty"`

	// append specifies whether to append Content to existing file if Path exists.
	// +optional
	Append *bool `json:"append,omitempty"`

	// content is the actual content of the file.
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=10240
	Content string `json:"content,omitempty"`

	// contentFrom is a referenced source of content to populate the file.
	// +optional
	ContentFrom FileSource `json:"contentFrom,omitempty,omitzero"`
}

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

func (*File) DeepCopy

func (in *File) DeepCopy() *File

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new File.

func (*File) DeepCopyInto

func (in *File) DeepCopyInto(out *File)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type FileDiscovery

type FileDiscovery struct {
	// kubeConfigPath is used to specify the actual file path or URL to the kubeconfig file from which to load cluster information
	// +required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=512
	KubeConfigPath string `json:"kubeConfigPath,omitempty"`

	// 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.
	//
	// +optional
	KubeConfig FileDiscoveryKubeConfig `json:"kubeConfig,omitempty,omitzero"`
}

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

func (*FileDiscovery) DeepCopy

func (in *FileDiscovery) DeepCopy() *FileDiscovery

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FileDiscovery.

func (*FileDiscovery) DeepCopyInto

func (in *FileDiscovery) DeepCopyInto(out *FileDiscovery)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*FileDiscovery) IsDefined

func (r *FileDiscovery) IsDefined() bool

IsDefined returns true if the FileDiscovery is defined.

type FileDiscoveryKubeConfig

type FileDiscoveryKubeConfig struct {
	// 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.
	// +optional
	Cluster KubeConfigCluster `json:"cluster,omitempty,omitzero"`

	// user contains information that describes identity information.
	// This is used to tell the kubernetes cluster who you are.
	// +required
	User KubeConfigUser `json:"user,omitempty,omitzero"`
}

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

func (*FileDiscoveryKubeConfig) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FileDiscoveryKubeConfig.

func (*FileDiscoveryKubeConfig) DeepCopyInto

func (in *FileDiscoveryKubeConfig) DeepCopyInto(out *FileDiscoveryKubeConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*FileDiscoveryKubeConfig) IsDefined

func (r *FileDiscoveryKubeConfig) IsDefined() bool

IsDefined returns true if the FileDiscoveryKubeConfig is defined.

type FileSource

type FileSource struct {
	// secret represents a secret that should populate this file.
	// +required
	Secret SecretFileSource `json:"secret,omitempty,omitzero"`
}

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.

func (*FileSource) DeepCopy

func (in *FileSource) DeepCopy() *FileSource

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FileSource.

func (*FileSource) DeepCopyInto

func (in *FileSource) DeepCopyInto(out *FileSource)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*FileSource) IsDefined

func (r *FileSource) IsDefined() bool

IsDefined returns true if the FileSource is defined.

type Filesystem

type Filesystem struct {
	// device specifies the device name
	// +required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=256
	Device string `json:"device,omitempty"`

	// filesystem specifies the file system type.
	// +required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=128
	Filesystem string `json:"filesystem,omitempty"`

	// label specifies the file system label to be used. If set to None, no label is used.
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=512
	Label string `json:"label,omitempty"`

	// partition specifies the partition to use. The valid options are: "auto|any", "auto", "any", "none", and <NUM>, where NUM is the actual partition number.
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=128
	Partition string `json:"partition,omitempty"`

	// overwrite defines whether or not to overwrite any existing filesystem.
	// If true, any pre-existing file system will be destroyed. Use with Caution.
	// +optional
	Overwrite *bool `json:"overwrite,omitempty"`

	// 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.
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=128
	ReplaceFS string `json:"replaceFS,omitempty"`

	// extraOpts defined extra options to add to the command for creating the file system.
	// +optional
	// +listType=atomic
	// +kubebuilder:validation:MaxItems=100
	// +kubebuilder:validation:items:MinLength=1
	// +kubebuilder:validation:items:MaxLength=256
	ExtraOpts []string `json:"extraOpts,omitempty"`
}

Filesystem defines the file systems to be created.

func (*Filesystem) DeepCopy

func (in *Filesystem) DeepCopy() *Filesystem

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Filesystem.

func (*Filesystem) DeepCopyInto

func (in *Filesystem) DeepCopyInto(out *Filesystem)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Format

type Format string

Format specifies the output format of the bootstrap data +kubebuilder:validation:Enum=cloud-config;ignition

const (
	// CloudConfig make the bootstrap data to be of cloud-config format.
	CloudConfig Format = "cloud-config"

	// Ignition make the bootstrap data to be of Ignition format.
	Ignition Format = "ignition"
)

type HostPathMount

type HostPathMount struct {
	// name of the volume inside the pod template.
	// +required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=512
	Name string `json:"name,omitempty"`

	// hostPath is the path in the host that will be mounted inside
	// the pod.
	// +required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=512
	HostPath string `json:"hostPath,omitempty"`

	// mountPath is the path inside the pod where hostPath will be mounted.
	// +required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=512
	MountPath string `json:"mountPath,omitempty"`

	// readOnly controls write access to the volume
	// +optional
	ReadOnly *bool `json:"readOnly,omitempty"`

	// pathType is the type of the HostPath.
	// +optional
	PathType corev1.HostPathType `json:"pathType,omitempty"`
}

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

func (*HostPathMount) DeepCopy

func (in *HostPathMount) DeepCopy() *HostPathMount

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HostPathMount.

func (*HostPathMount) DeepCopyInto

func (in *HostPathMount) DeepCopyInto(out *HostPathMount)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type IgnitionSpec

type IgnitionSpec struct {
	// containerLinuxConfig contains CLC specific configuration.
	// +optional
	ContainerLinuxConfig ContainerLinuxConfig `json:"containerLinuxConfig,omitempty,omitzero"`
}

IgnitionSpec contains Ignition specific configuration. +kubebuilder:validation:MinProperties=1

func (*IgnitionSpec) DeepCopy

func (in *IgnitionSpec) DeepCopy() *IgnitionSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IgnitionSpec.

func (*IgnitionSpec) DeepCopyInto

func (in *IgnitionSpec) DeepCopyInto(out *IgnitionSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*IgnitionSpec) IsDefined

func (r *IgnitionSpec) IsDefined() bool

IsDefined returns true if the IgnitionSpec is defined.

type InitConfiguration

type InitConfiguration struct {
	// 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
	// +optional
	// +listType=atomic
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=100
	BootstrapTokens []BootstrapToken `json:"bootstrapTokens,omitempty"`

	// 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
	// +optional
	NodeRegistration NodeRegistrationOptions `json:"nodeRegistration,omitempty,omitzero"`

	// 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.
	// +optional
	LocalAPIEndpoint APIEndpoint `json:"localAPIEndpoint,omitempty,omitzero"`

	// 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.
	// +optional
	// +listType=atomic
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=50
	// +kubebuilder:validation:items:MinLength=1
	// +kubebuilder:validation:items:MaxLength=256
	SkipPhases []string `json:"skipPhases,omitempty"`

	// 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
	// +optional
	Patches Patches `json:"patches,omitempty,omitzero"`

	// timeouts holds various timeouts that apply to kubeadm commands.
	// +optional
	Timeouts Timeouts `json:"timeouts,omitempty,omitzero"`
}

InitConfiguration contains a list of elements that is specific "kubeadm init"-only runtime information. +kubebuilder:validation:MinProperties=1

func (*InitConfiguration) DeepCopy

func (in *InitConfiguration) DeepCopy() *InitConfiguration

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InitConfiguration.

func (*InitConfiguration) DeepCopyInto

func (in *InitConfiguration) DeepCopyInto(out *InitConfiguration)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*InitConfiguration) Hub

func (*InitConfiguration) Hub()

func (*InitConfiguration) IsDefined

func (r *InitConfiguration) IsDefined() bool

IsDefined returns true if the InitConfiguration is defined.

type JoinConfiguration

type JoinConfiguration struct {
	// 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
	// +optional
	NodeRegistration NodeRegistrationOptions `json:"nodeRegistration,omitempty,omitzero"`

	// caCertPath is the path to the SSL certificate authority used to
	// secure communications between node and control-plane.
	// Defaults to "/etc/kubernetes/pki/ca.crt".
	// +optional
	// TODO: revisit when there is defaulting from k/k
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=512
	CACertPath string `json:"caCertPath,omitempty"`

	// discovery specifies the options for the kubelet to use during the TLS Bootstrap process
	// +optional
	// TODO: revisit when there is defaulting from k/k
	Discovery Discovery `json:"discovery,omitempty,omitzero"`

	// controlPlane defines the additional control plane instance to be deployed on the joining node.
	// If nil, no additional control plane instance will be deployed.
	// +optional
	ControlPlane *JoinControlPlane `json:"controlPlane,omitempty"`

	// 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.
	// +optional
	// +listType=atomic
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=50
	// +kubebuilder:validation:items:MinLength=1
	// +kubebuilder:validation:items:MaxLength=256
	SkipPhases []string `json:"skipPhases,omitempty"`

	// 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
	// +optional
	Patches Patches `json:"patches,omitempty,omitzero"`

	// timeouts holds various timeouts that apply to kubeadm commands.
	// +optional
	Timeouts Timeouts `json:"timeouts,omitempty,omitzero"`
}

JoinConfiguration contains elements describing a particular node. +kubebuilder:validation:MinProperties=1

func (*JoinConfiguration) DeepCopy

func (in *JoinConfiguration) DeepCopy() *JoinConfiguration

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JoinConfiguration.

func (*JoinConfiguration) DeepCopyInto

func (in *JoinConfiguration) DeepCopyInto(out *JoinConfiguration)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*JoinConfiguration) Hub

func (*JoinConfiguration) Hub()

func (*JoinConfiguration) IsDefined

func (r *JoinConfiguration) IsDefined() bool

IsDefined returns true if the JoinConfiguration is defined.

type JoinControlPlane

type JoinControlPlane struct {
	// localAPIEndpoint represents the endpoint of the API server instance to be deployed on this node.
	// +optional
	LocalAPIEndpoint APIEndpoint `json:"localAPIEndpoint,omitempty,omitzero"`
}

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

func (*JoinControlPlane) DeepCopy

func (in *JoinControlPlane) DeepCopy() *JoinControlPlane

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JoinControlPlane.

func (*JoinControlPlane) DeepCopyInto

func (in *JoinControlPlane) DeepCopyInto(out *JoinControlPlane)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type KubeConfigAuthExec

type KubeConfigAuthExec struct {
	// command to execute.
	// +required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	Command string `json:"command,omitempty"`

	// args is the arguments to pass to the command when executing it.
	// +optional
	// +listType=atomic
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=100
	// +kubebuilder:validation:items:MinLength=1
	// +kubebuilder:validation:items:MaxLength=512
	Args []string `json:"args,omitempty"`

	// 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.
	// +optional
	// +listType=atomic
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=100
	Env []KubeConfigAuthExecEnv `json:"env,omitempty"`

	// 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.
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=512
	APIVersion string `json:"apiVersion,omitempty"`

	// 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.
	// +optional
	ProvideClusterInfo *bool `json:"provideClusterInfo,omitempty"`
}

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.

func (*KubeConfigAuthExec) DeepCopy

func (in *KubeConfigAuthExec) DeepCopy() *KubeConfigAuthExec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeConfigAuthExec.

func (*KubeConfigAuthExec) DeepCopyInto

func (in *KubeConfigAuthExec) DeepCopyInto(out *KubeConfigAuthExec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*KubeConfigAuthExec) IsDefined

func (r *KubeConfigAuthExec) IsDefined() bool

IsDefined returns true if the KubeConfigAuthExec is defined.

type KubeConfigAuthExecEnv

type KubeConfigAuthExecEnv struct {
	// name of the environment variable
	// +required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=512
	Name string `json:"name,omitempty"`

	// value of the environment variable
	// +required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=512
	Value string `json:"value,omitempty"`
}

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

func (*KubeConfigAuthExecEnv) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeConfigAuthExecEnv.

func (*KubeConfigAuthExecEnv) DeepCopyInto

func (in *KubeConfigAuthExecEnv) DeepCopyInto(out *KubeConfigAuthExecEnv)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type KubeConfigAuthProvider

type KubeConfigAuthProvider struct {
	// name is the name of the authentication plugin.
	// +required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=256
	Name string `json:"name,omitempty"`

	// config holds the parameters for the authentication plugin.
	// +optional
	Config map[string]string `json:"config,omitempty"`
}

KubeConfigAuthProvider holds the configuration for a specified auth provider.

func (*KubeConfigAuthProvider) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeConfigAuthProvider.

func (*KubeConfigAuthProvider) DeepCopyInto

func (in *KubeConfigAuthProvider) DeepCopyInto(out *KubeConfigAuthProvider)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*KubeConfigAuthProvider) IsDefined

func (r *KubeConfigAuthProvider) IsDefined() bool

IsDefined returns true if the KubeConfigAuthProvider is defined.

type KubeConfigCluster

type KubeConfigCluster struct {
	// server is the address of the kubernetes cluster (https://hostname:port).
	//
	// Defaults to https:// + Cluster.Spec.ControlPlaneEndpoint.
	//
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=512
	Server string `json:"server,omitempty"`

	// tlsServerName is used to check server certificate. If TLSServerName is empty, the hostname used to contact the server is used.
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=512
	TLSServerName string `json:"tlsServerName,omitempty"`

	// insecureSkipTLSVerify skips the validity check for the server's certificate. This will make your HTTPS connections insecure.
	// +optional
	InsecureSkipTLSVerify *bool `json:"insecureSkipTLSVerify,omitempty"`

	// certificateAuthorityData contains PEM-encoded certificate authority certificates.
	//
	// Defaults to the Cluster's CA certificate if empty.
	//
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=51200
	CertificateAuthorityData []byte `json:"certificateAuthorityData,omitempty"`

	// 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).
	//
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=512
	ProxyURL string `json:"proxyURL,omitempty"`
}

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

Adapted from clientcmdv1.Cluster. +kubebuilder:validation:MinProperties=1

func (*KubeConfigCluster) DeepCopy

func (in *KubeConfigCluster) DeepCopy() *KubeConfigCluster

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeConfigCluster.

func (*KubeConfigCluster) DeepCopyInto

func (in *KubeConfigCluster) DeepCopyInto(out *KubeConfigCluster)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*KubeConfigCluster) IsDefined

func (r *KubeConfigCluster) IsDefined() bool

IsDefined returns true if the KubeConfigCluster is defined.

type KubeConfigUser

type KubeConfigUser struct {
	// authProvider specifies a custom authentication plugin for the kubernetes cluster.
	// +optional
	AuthProvider KubeConfigAuthProvider `json:"authProvider,omitempty,omitzero"`

	// exec specifies a custom exec-based authentication plugin for the kubernetes cluster.
	// +optional
	Exec KubeConfigAuthExec `json:"exec,omitempty,omitzero"`
}

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. +kubebuilder:validation:MinProperties=1

func (*KubeConfigUser) DeepCopy

func (in *KubeConfigUser) DeepCopy() *KubeConfigUser

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeConfigUser.

func (*KubeConfigUser) DeepCopyInto

func (in *KubeConfigUser) DeepCopyInto(out *KubeConfigUser)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type KubeadmConfig

type KubeadmConfig struct {
	metav1.TypeMeta `json:",inline"`
	// metadata is the standard object's metadata.
	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// spec is the desired state of KubeadmConfig.
	// +optional
	Spec KubeadmConfigSpec `json:"spec,omitempty,omitzero"`
	// status is the observed state of KubeadmConfig.
	// +optional
	Status KubeadmConfigStatus `json:"status,omitempty,omitzero"`
}

KubeadmConfig is the Schema for the kubeadmconfigs API.

func (*KubeadmConfig) DeepCopy

func (in *KubeadmConfig) DeepCopy() *KubeadmConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeadmConfig.

func (*KubeadmConfig) DeepCopyInto

func (in *KubeadmConfig) DeepCopyInto(out *KubeadmConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*KubeadmConfig) DeepCopyObject

func (in *KubeadmConfig) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*KubeadmConfig) GetConditions

func (c *KubeadmConfig) GetConditions() []metav1.Condition

GetConditions returns the set of conditions for this object.

func (*KubeadmConfig) GetV1Beta1Conditions

func (c *KubeadmConfig) GetV1Beta1Conditions() clusterv1.Conditions

GetV1Beta1Conditions returns the set of conditions for this object.

func (*KubeadmConfig) Hub

func (*KubeadmConfig) Hub()

func (*KubeadmConfig) SetConditions

func (c *KubeadmConfig) SetConditions(conditions []metav1.Condition)

SetConditions sets conditions for an API object.

func (*KubeadmConfig) SetV1Beta1Conditions

func (c *KubeadmConfig) SetV1Beta1Conditions(conditions clusterv1.Conditions)

SetV1Beta1Conditions sets the conditions on this object.

type KubeadmConfigDeprecatedStatus

type KubeadmConfigDeprecatedStatus struct {
	// v1beta1 groups all the status fields that are deprecated and will be removed when support for v1beta1 will be dropped.
	// +optional
	V1Beta1 *KubeadmConfigV1Beta1DeprecatedStatus `json:"v1beta1,omitempty"`
}

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

func (*KubeadmConfigDeprecatedStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeadmConfigDeprecatedStatus.

func (*KubeadmConfigDeprecatedStatus) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type KubeadmConfigInitializationStatus

type KubeadmConfigInitializationStatus struct {
	// dataSecretCreated is true when the Machine's boostrap secret is created.
	// NOTE: this field is part of the Cluster API contract, and it is used to orchestrate initial Machine provisioning.
	// +optional
	DataSecretCreated *bool `json:"dataSecretCreated,omitempty"`
}

KubeadmConfigInitializationStatus provides observations of the KubeadmConfig initialization process. +kubebuilder:validation:MinProperties=1

func (*KubeadmConfigInitializationStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeadmConfigInitializationStatus.

func (*KubeadmConfigInitializationStatus) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type KubeadmConfigList

type KubeadmConfigList struct {
	metav1.TypeMeta `json:",inline"`
	// metadata is the standard list's metadata.
	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#lists-and-simple-kinds
	// +optional
	metav1.ListMeta `json:"metadata,omitempty"`
	// items is the list of KubeadmConfigs.
	Items []KubeadmConfig `json:"items"`
}

KubeadmConfigList contains a list of KubeadmConfig.

func (*KubeadmConfigList) DeepCopy

func (in *KubeadmConfigList) DeepCopy() *KubeadmConfigList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeadmConfigList.

func (*KubeadmConfigList) DeepCopyInto

func (in *KubeadmConfigList) DeepCopyInto(out *KubeadmConfigList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*KubeadmConfigList) DeepCopyObject

func (in *KubeadmConfigList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type KubeadmConfigSpec

type KubeadmConfigSpec struct {
	// clusterConfiguration along with InitConfiguration are the configurations necessary for the init command
	// +optional
	ClusterConfiguration ClusterConfiguration `json:"clusterConfiguration,omitempty,omitzero"`

	// initConfiguration along with ClusterConfiguration are the configurations necessary for the init command
	// +optional
	InitConfiguration InitConfiguration `json:"initConfiguration,omitempty,omitzero"`

	// joinConfiguration is the kubeadm configuration for the join command
	// +optional
	JoinConfiguration JoinConfiguration `json:"joinConfiguration,omitempty,omitzero"`

	// files specifies extra files to be passed to user_data upon creation.
	// +optional
	// +listType=atomic
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=200
	Files []File `json:"files,omitempty"`

	// diskSetup specifies options for the creation of partition tables and file systems on devices.
	// +optional
	DiskSetup DiskSetup `json:"diskSetup,omitempty,omitzero"`

	// mounts specifies a list of mount points to be setup.
	// +optional
	// +listType=atomic
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=100
	Mounts []MountPoints `json:"mounts,omitempty"`

	// 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.
	// +optional
	// +listType=atomic
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=1000
	// +kubebuilder:validation:items:MinLength=1
	// +kubebuilder:validation:items:MaxLength=10240
	BootCommands []string `json:"bootCommands,omitempty"`

	// 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.
	// +optional
	// +listType=atomic
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=1000
	// +kubebuilder:validation:items:MinLength=1
	// +kubebuilder:validation:items:MaxLength=10240
	PreKubeadmCommands []string `json:"preKubeadmCommands,omitempty"`

	// 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.
	// +optional
	// +listType=atomic
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=1000
	// +kubebuilder:validation:items:MinLength=1
	// +kubebuilder:validation:items:MaxLength=10240
	PostKubeadmCommands []string `json:"postKubeadmCommands,omitempty"`

	// users specifies extra users to add
	// +optional
	// +listType=atomic
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=100
	Users []User `json:"users,omitempty"`

	// ntp specifies NTP configuration
	// +optional
	NTP NTP `json:"ntp,omitempty,omitzero"`

	// format specifies the output format of the bootstrap data.
	// Defaults to cloud-config if not set.
	// +optional
	Format Format `json:"format,omitempty"`

	// verbosity is the number for the kubeadm log level verbosity.
	// It overrides the `--v` flag in kubeadm commands.
	// +optional
	Verbosity *int32 `json:"verbosity,omitempty"`

	// ignition contains Ignition specific configuration.
	// +optional
	Ignition IgnitionSpec `json:"ignition,omitempty,omitzero"`
}

KubeadmConfigSpec defines the desired state of KubeadmConfig. Either ClusterConfiguration and InitConfiguration should be defined or the JoinConfiguration should be defined. +kubebuilder:validation:MinProperties=1

func (*KubeadmConfigSpec) DeepCopy

func (in *KubeadmConfigSpec) DeepCopy() *KubeadmConfigSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeadmConfigSpec.

func (*KubeadmConfigSpec) DeepCopyInto

func (in *KubeadmConfigSpec) DeepCopyInto(out *KubeadmConfigSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*KubeadmConfigSpec) Validate

func (c *KubeadmConfigSpec) Validate(isKCP bool, pathPrefix *field.Path) field.ErrorList

Validate ensures the KubeadmConfigSpec is valid.

type KubeadmConfigStatus

type KubeadmConfigStatus struct {
	// conditions represents the observations of a KubeadmConfig's current state.
	// Known condition types are Ready, DataSecretAvailable, CertificatesAvailable.
	// +optional
	// +listType=map
	// +listMapKey=type
	// +kubebuilder:validation:MaxItems=32
	Conditions []metav1.Condition `json:"conditions,omitempty"`

	// initialization provides observations of the KubeadmConfig initialization process.
	// NOTE: Fields in this struct are part of the Cluster API contract and are used to orchestrate initial Machine provisioning.
	// +optional
	Initialization KubeadmConfigInitializationStatus `json:"initialization,omitempty,omitzero"`

	// dataSecretName is the name of the secret that stores the bootstrap data script.
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	DataSecretName string `json:"dataSecretName,omitempty"`

	// observedGeneration is the latest generation observed by the controller.
	// +optional
	// +kubebuilder:validation:Minimum=1
	ObservedGeneration int64 `json:"observedGeneration,omitempty"`

	// deprecated groups all the status fields that are deprecated and will be removed when all the nested field are removed.
	// +optional
	Deprecated *KubeadmConfigDeprecatedStatus `json:"deprecated,omitempty"`
}

KubeadmConfigStatus defines the observed state of KubeadmConfig. +kubebuilder:validation:MinProperties=1

func (*KubeadmConfigStatus) DeepCopy

func (in *KubeadmConfigStatus) DeepCopy() *KubeadmConfigStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeadmConfigStatus.

func (*KubeadmConfigStatus) DeepCopyInto

func (in *KubeadmConfigStatus) DeepCopyInto(out *KubeadmConfigStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type KubeadmConfigTemplate

type KubeadmConfigTemplate struct {
	metav1.TypeMeta `json:",inline"`
	// metadata is the standard object's metadata.
	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// spec is the desired state of KubeadmConfigTemplate.
	// +optional
	Spec KubeadmConfigTemplateSpec `json:"spec,omitempty,omitzero"`
}

KubeadmConfigTemplate is the Schema for the kubeadmconfigtemplates API.

func (*KubeadmConfigTemplate) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeadmConfigTemplate.

func (*KubeadmConfigTemplate) DeepCopyInto

func (in *KubeadmConfigTemplate) DeepCopyInto(out *KubeadmConfigTemplate)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*KubeadmConfigTemplate) DeepCopyObject

func (in *KubeadmConfigTemplate) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*KubeadmConfigTemplate) Hub

func (*KubeadmConfigTemplate) Hub()

type KubeadmConfigTemplateList

type KubeadmConfigTemplateList struct {
	metav1.TypeMeta `json:",inline"`
	// metadata is the standard list's metadata.
	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#lists-and-simple-kinds
	// +optional
	metav1.ListMeta `json:"metadata,omitempty"`
	// items is the list of KubeadmConfigTemplates.
	Items []KubeadmConfigTemplate `json:"items"`
}

KubeadmConfigTemplateList contains a list of KubeadmConfigTemplate.

func (*KubeadmConfigTemplateList) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeadmConfigTemplateList.

func (*KubeadmConfigTemplateList) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*KubeadmConfigTemplateList) DeepCopyObject

func (in *KubeadmConfigTemplateList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type KubeadmConfigTemplateResource

type KubeadmConfigTemplateResource struct {
	// metadata is the standard object's metadata.
	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
	// +optional
	ObjectMeta clusterv1.ObjectMeta `json:"metadata,omitempty,omitzero"`

	// spec is the desired state of KubeadmConfig.
	// +optional
	Spec KubeadmConfigSpec `json:"spec,omitempty,omitzero"`
}

KubeadmConfigTemplateResource defines the Template structure. +kubebuilder:validation:MinProperties=1

func (*KubeadmConfigTemplateResource) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeadmConfigTemplateResource.

func (*KubeadmConfigTemplateResource) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type KubeadmConfigTemplateSpec

type KubeadmConfigTemplateSpec struct {
	// template defines the desired state of KubeadmConfigTemplate.
	// +required
	Template KubeadmConfigTemplateResource `json:"template,omitempty,omitzero"`
}

KubeadmConfigTemplateSpec defines the desired state of KubeadmConfigTemplate.

func (*KubeadmConfigTemplateSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeadmConfigTemplateSpec.

func (*KubeadmConfigTemplateSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type KubeadmConfigV1Beta1DeprecatedStatus

type KubeadmConfigV1Beta1DeprecatedStatus struct {
	// conditions defines current service state of the KubeadmConfig.
	//
	// Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
	//
	// +optional
	Conditions clusterv1.Conditions `json:"conditions,omitempty"`

	// failureReason will be set on non-retryable errors
	//
	// Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
	//
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=256
	FailureReason string `json:"failureReason,omitempty"`

	// failureMessage will be set on non-retryable errors
	//
	// Deprecated: This field is deprecated and is going to be removed when support for v1beta1 will be dropped. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
	//
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=10240
	FailureMessage string `json:"failureMessage,omitempty"`
}

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

func (*KubeadmConfigV1Beta1DeprecatedStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeadmConfigV1Beta1DeprecatedStatus.

func (*KubeadmConfigV1Beta1DeprecatedStatus) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type LocalEtcd

type LocalEtcd struct {
	// imageRepository sets the container registry to pull images from.
	// if not set, the ImageRepository defined in ClusterConfiguration will be used instead.
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=512
	ImageRepository string `json:"imageRepository,omitempty"`

	// 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.
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=256
	ImageTag string `json:"imageTag,omitempty"`

	// dataDir is the directory etcd will place its data.
	// Defaults to "/var/lib/etcd".
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=512
	DataDir string `json:"dataDir,omitempty"`

	// extraArgs is a list of args to pass to etcd.
	// The arg name must match the command line flag name except without leading dash(es).
	// Extra arguments will override existing default arguments set by kubeadm.
	// +optional
	// +listType=map
	// +listMapKey=name
	// +listMapKey=value
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=100
	// +kubebuilder:validation:XValidation:rule="self.all(x, self.exists_one(y, x.name == y.name))",message="extraArgs name must be unique"
	ExtraArgs []Arg `json:"extraArgs,omitempty"`

	// extraEnvs is an extra set of environment variables to pass to etcd.
	// Environment variables passed using ExtraEnvs will override any existing environment variables, or *_proxy environment variables that kubeadm adds by default.
	// This option takes effect only on Kubernetes >=1.31.0.
	// +optional
	// +listType=atomic
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=100
	ExtraEnvs *[]EnvVar `json:"extraEnvs,omitempty"`

	// serverCertSANs sets extra Subject Alternative Names for the etcd server signing cert.
	// +optional
	// +listType=atomic
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=100
	// +kubebuilder:validation:items:MinLength=1
	// +kubebuilder:validation:items:MaxLength=253
	ServerCertSANs []string `json:"serverCertSANs,omitempty"`

	// peerCertSANs sets extra Subject Alternative Names for the etcd peer signing cert.
	// +optional
	// +listType=atomic
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=100
	// +kubebuilder:validation:items:MinLength=1
	// +kubebuilder:validation:items:MaxLength=253
	PeerCertSANs []string `json:"peerCertSANs,omitempty"`
}

LocalEtcd describes that kubeadm should run an etcd cluster locally. +kubebuilder:validation:MinProperties=1

func (*LocalEtcd) DeepCopy

func (in *LocalEtcd) DeepCopy() *LocalEtcd

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LocalEtcd.

func (*LocalEtcd) DeepCopyInto

func (in *LocalEtcd) DeepCopyInto(out *LocalEtcd)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*LocalEtcd) IsDefined

func (r *LocalEtcd) IsDefined() bool

IsDefined returns true if the LocalEtcd is defined.

type MountPoints

type MountPoints []string

MountPoints defines input for generated mounts in cloud-init. +kubebuilder:validation:MinItems=1 +kubebuilder:validation:MaxItems=100 +kubebuilder:validation:items:MinLength=1 +kubebuilder:validation:items:MaxLength=512

func (MountPoints) DeepCopy

func (in MountPoints) DeepCopy() MountPoints

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MountPoints.

func (MountPoints) DeepCopyInto

func (in MountPoints) DeepCopyInto(out *MountPoints)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type NTP

type NTP struct {
	// servers specifies which NTP servers to use
	// +optional
	// +listType=atomic
	// +kubebuilder:validation:MaxItems=100
	// +kubebuilder:validation:items:MinLength=1
	// +kubebuilder:validation:items:MaxLength=512
	Servers []string `json:"servers,omitempty"`

	// enabled specifies whether NTP should be enabled
	// +optional
	Enabled *bool `json:"enabled,omitempty"`
}

NTP defines input for generated ntp in cloud-init. +kubebuilder:validation:MinProperties=1

func (*NTP) DeepCopy

func (in *NTP) DeepCopy() *NTP

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NTP.

func (*NTP) DeepCopyInto

func (in *NTP) DeepCopyInto(out *NTP)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*NTP) IsDefined

func (r *NTP) IsDefined() bool

IsDefined returns true if the NTP is defined.

type NodeRegistrationOptions

type NodeRegistrationOptions struct {
	// 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.
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	Name string `json:"name,omitempty"`

	// criSocket is used to retrieve container runtime info. This information will be annotated to the Node API object, for later re-use
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=512
	CRISocket string `json:"criSocket,omitempty"`

	// 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.
	// +optional
	// +kubebuilder:validation:MinItems=0
	// +kubebuilder:validation:MaxItems=100
	Taints *[]corev1.Taint `json:"taints,omitempty"`

	// kubeletExtraArgs is a list of args to pass to kubelet.
	// The arg name must match the command line flag name except without leading dash(es).
	// Extra arguments will override existing default arguments set by kubeadm.
	// +optional
	// +listType=map
	// +listMapKey=name
	// +listMapKey=value
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=100
	// +kubebuilder:validation:XValidation:rule="self.all(x, self.exists_one(y, x.name == y.name))",message="kubeletExtraArgs name must be unique"
	KubeletExtraArgs []Arg `json:"kubeletExtraArgs,omitempty"`

	// ignorePreflightErrors provides a slice of pre-flight errors to be ignored when the current node is registered, e.g. 'IsPrivilegedUser,Swap'.
	// Value 'all' ignores errors from all checks.
	// +optional
	// +listType=atomic
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=50
	// +kubebuilder:validation:items:MinLength=1
	// +kubebuilder:validation:items:MaxLength=512
	IgnorePreflightErrors []string `json:"ignorePreflightErrors,omitempty"`

	// 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" if not set.
	// +kubebuilder:validation:Enum=Always;IfNotPresent;Never
	// +optional
	ImagePullPolicy corev1.PullPolicy `json:"imagePullPolicy,omitempty"`

	// 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)
	// +optional
	ImagePullSerial *bool `json:"imagePullSerial,omitempty"`
}

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. +kubebuilder:validation:MinProperties=1

func (*NodeRegistrationOptions) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeRegistrationOptions.

func (*NodeRegistrationOptions) DeepCopyInto

func (in *NodeRegistrationOptions) DeepCopyInto(out *NodeRegistrationOptions)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Partition

type Partition struct {
	// device is the name of the device.
	// +required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=256
	Device string `json:"device,omitempty"`

	// 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.
	// +required
	Layout *bool `json:"layout,omitempty"`

	// 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'.
	// +optional
	Overwrite *bool `json:"overwrite,omitempty"`

	// 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
	// +optional
	// +kubebuilder:validation:Enum=mbr;gpt
	TableType string `json:"tableType,omitempty"`
}

Partition defines how to create and layout a partition.

func (*Partition) DeepCopy

func (in *Partition) DeepCopy() *Partition

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Partition.

func (*Partition) DeepCopyInto

func (in *Partition) DeepCopyInto(out *Partition)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PasswdSource

type PasswdSource struct {
	// secret represents a secret that should populate this password.
	// +required
	Secret SecretPasswdSource `json:"secret,omitempty,omitzero"`
}

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.

func (*PasswdSource) DeepCopy

func (in *PasswdSource) DeepCopy() *PasswdSource

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PasswdSource.

func (*PasswdSource) DeepCopyInto

func (in *PasswdSource) DeepCopyInto(out *PasswdSource)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*PasswdSource) IsDefined

func (r *PasswdSource) IsDefined() bool

IsDefined returns true if the PasswdSource is defined.

type Patches

type Patches struct {
	// 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.
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=512
	Directory string `json:"directory,omitempty"`
}

Patches contains options related to applying patches to components deployed by kubeadm. +kubebuilder:validation:MinProperties=1

func (*Patches) DeepCopy

func (in *Patches) DeepCopy() *Patches

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Patches.

func (*Patches) DeepCopyInto

func (in *Patches) DeepCopyInto(out *Patches)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Scheduler

type Scheduler struct {
	// extraArgs is a list of args to pass to the control plane component.
	// The arg name must match the command line flag name except without leading dash(es).
	// Extra arguments will override existing default arguments set by kubeadm.
	// +optional
	// +listType=map
	// +listMapKey=name
	// +listMapKey=value
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=100
	// +kubebuilder:validation:XValidation:rule="self.all(x, self.exists_one(y, x.name == y.name))",message="extraArgs name must be unique"
	ExtraArgs []Arg `json:"extraArgs,omitempty"`

	// extraVolumes is an extra set of host volumes, mounted to the control plane component.
	// +optional
	// +listType=atomic
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=100
	ExtraVolumes []HostPathMount `json:"extraVolumes,omitempty"`

	// 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.
	// +optional
	// +listType=atomic
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=100
	ExtraEnvs *[]EnvVar `json:"extraEnvs,omitempty"`
}

Scheduler holds settings necessary for scheduler deployments in the cluster. +kubebuilder:validation:MinProperties=1

func (*Scheduler) DeepCopy

func (in *Scheduler) DeepCopy() *Scheduler

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Scheduler.

func (*Scheduler) DeepCopyInto

func (in *Scheduler) DeepCopyInto(out *Scheduler)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SecretFileSource

type SecretFileSource struct {
	// name of the secret in the KubeadmBootstrapConfig's namespace to use.
	// +required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	Name string `json:"name,omitempty"`

	// key is the key in the secret's data map for this value.
	// +required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=256
	Key string `json:"key,omitempty"`
}

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.

func (*SecretFileSource) DeepCopy

func (in *SecretFileSource) DeepCopy() *SecretFileSource

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecretFileSource.

func (*SecretFileSource) DeepCopyInto

func (in *SecretFileSource) DeepCopyInto(out *SecretFileSource)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SecretPasswdSource

type SecretPasswdSource struct {
	// name of the secret in the KubeadmBootstrapConfig's namespace to use.
	// +required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	Name string `json:"name,omitempty"`

	// key is the key in the secret's data map for this value.
	// +required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=256
	Key string `json:"key,omitempty"`
}

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.

func (*SecretPasswdSource) DeepCopy

func (in *SecretPasswdSource) DeepCopy() *SecretPasswdSource

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecretPasswdSource.

func (*SecretPasswdSource) DeepCopyInto

func (in *SecretPasswdSource) DeepCopyInto(out *SecretPasswdSource)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Timeouts

type Timeouts struct {
	// controlPlaneComponentHealthCheckSeconds is the amount of time to wait for a control plane
	// component, such as the API server, to be healthy during "kubeadm init" and "kubeadm join".
	// If not set, it defaults to 4m (240s).
	// +kubebuilder:validation:Minimum=0
	// +optional
	ControlPlaneComponentHealthCheckSeconds *int32 `json:"controlPlaneComponentHealthCheckSeconds,omitempty"`

	// kubeletHealthCheckSeconds is the amount of time to wait for the kubelet to be healthy
	// during "kubeadm init" and "kubeadm join".
	// If not set, it defaults to 4m (240s).
	// +kubebuilder:validation:Minimum=0
	// +optional
	KubeletHealthCheckSeconds *int32 `json:"kubeletHealthCheckSeconds,omitempty"`

	// kubernetesAPICallSeconds is the amount of time to wait for the kubeadm client to complete a request to
	// the API server. This applies to all types of methods (GET, POST, etc).
	// If not set, it defaults to 1m (60s).
	// +kubebuilder:validation:Minimum=0
	// +optional
	KubernetesAPICallSeconds *int32 `json:"kubernetesAPICallSeconds,omitempty"`

	// etcdAPICallSeconds is the amount of time to wait for the kubeadm etcd client to complete a request to
	// the etcd cluster.
	// If not set, it defaults to 2m (120s).
	// +kubebuilder:validation:Minimum=0
	// +optional
	EtcdAPICallSeconds *int32 `json:"etcdAPICallSeconds,omitempty"`

	// tlsBootstrapSeconds is the amount of time to wait for the kubelet to complete TLS bootstrap
	// for a joining node.
	// If not set, it defaults to 5m (300s).
	// +kubebuilder:validation:Minimum=0
	// +optional
	TLSBootstrapSeconds *int32 `json:"tlsBootstrapSeconds,omitempty"`

	// discoverySeconds is the amount of time to wait for kubeadm to validate the API server identity
	// for a joining node.
	// If not set, it defaults to 5m (300s).
	// +kubebuilder:validation:Minimum=0
	// +optional
	DiscoverySeconds *int32 `json:"discoverySeconds,omitempty"`
}

Timeouts holds various timeouts that apply to kubeadm commands. +kubebuilder:validation:MinProperties=1

func (*Timeouts) DeepCopy

func (in *Timeouts) DeepCopy() *Timeouts

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Timeouts.

func (*Timeouts) DeepCopyInto

func (in *Timeouts) DeepCopyInto(out *Timeouts)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type User

type User struct {
	// name specifies the user name
	// +required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=256
	Name string `json:"name,omitempty"`

	// gecos specifies the gecos to use for the user
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=256
	Gecos string `json:"gecos,omitempty"`

	// groups specifies the additional groups for the user
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=256
	Groups string `json:"groups,omitempty"`

	// homeDir specifies the home directory to use for the user
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=256
	HomeDir string `json:"homeDir,omitempty"`

	// inactive specifies whether to mark the user as inactive
	// +optional
	Inactive *bool `json:"inactive,omitempty"`

	// shell specifies the user's shell
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=256
	Shell string `json:"shell,omitempty"`

	// passwd specifies a hashed password for the user
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=256
	Passwd string `json:"passwd,omitempty"`

	// passwdFrom is a referenced source of passwd to populate the passwd.
	// +optional
	PasswdFrom PasswdSource `json:"passwdFrom,omitempty,omitzero"`

	// primaryGroup specifies the primary group for the user
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=256
	PrimaryGroup string `json:"primaryGroup,omitempty"`

	// lockPassword specifies if password login should be disabled
	// +optional
	LockPassword *bool `json:"lockPassword,omitempty"`

	// sudo specifies a sudo role for the user
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=256
	Sudo string `json:"sudo,omitempty"`

	// sshAuthorizedKeys specifies a list of ssh authorized keys for the user
	// +optional
	// +listType=atomic
	// +kubebuilder:validation:MaxItems=100
	// +kubebuilder:validation:items:MinLength=1
	// +kubebuilder:validation:items:MaxLength=2048
	SSHAuthorizedKeys []string `json:"sshAuthorizedKeys,omitempty"`
}

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

func (*User) DeepCopy

func (in *User) DeepCopy() *User

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new User.

func (*User) DeepCopyInto

func (in *User) DeepCopyInto(out *User)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL