Documentation
¶
Overview ¶
+kubebuilder:object:generate=true +groupName=unbounded-cloud.io
Index ¶
- Constants
- Variables
- func MachineConfigurationVersionName(configurationName string, version int32) string
- type AgentDownloadsSpec
- type AgentSpec
- type AgentStatus
- type BastionSSHSpec
- type CloudInitSpec
- type ConfigMapKeySelector
- type DHCPLease
- type DownloadSource
- type KubernetesSpec
- type LocalObjectReference
- type Machine
- type MachineConfiguration
- type MachineConfigurationAgent
- type MachineConfigurationKubernetes
- type MachineConfigurationList
- type MachineConfigurationRef
- type MachineConfigurationRefStatus
- type MachineConfigurationSpec
- type MachineConfigurationStatus
- type MachineConfigurationTemplate
- type MachineConfigurationUpdateStrategy
- type MachineConfigurationUpdateStrategyType
- type MachineConfigurationVersion
- type MachineConfigurationVersionList
- type MachineConfigurationVersionSpec
- type MachineConfigurationVersionStatus
- type MachineList
- type MachineOperation
- type MachineOperationCredential
- type MachineOperationCredentialAuth
- type MachineOperationCredentialAuthMode
- type MachineOperationCredentialList
- type MachineOperationCredentialSpec
- type MachineOperationList
- type MachineOperationSpec
- type MachineOperationStatus
- type MachineOperationTargetStatus
- type MachinePhase
- type MachineSpec
- type MachineStatus
- type NamespacedSecretReference
- type OperationKind
- type OperationPhase
- type OperationStage
- type OperationsSpec
- type OperationsStatus
- type PXESpec
- type RedfishSpec
- type RedfishStatus
- type SSHSpec
- type SSHStatus
- type SecretKeySelector
- type TPMStatus
Constants ¶
const ( // MachineConditionProvisioned indicates that the machine has been // successfully provisioned. The observedGeneration field on the // condition tracks which generation of the Machine spec was // provisioned. MachineConditionProvisioned = "Provisioned" // MachineConditionSSHReachable indicates whether the machine is // reachable via SSH. The lastTransitionTime and message fields are // updated on probe results. MachineConditionSSHReachable = "SSHReachable" // MachineConditionProvisioning indicates that the machine is // currently being provisioned. The lastTransitionTime records when // provisioning started, which is used to detect stale provisioning // attempts (e.g. after a controller restart). MachineConditionProvisioning = "Provisioning" // MachineConditionRepaved indicates the state of a repave operation. // Status is set to False (with Reason "Pending") when a repave begins, // and True (with Reason "Succeeded") when the repave completes. // The lastTransitionTime records when the repave started, which is // used to detect stale repave attempts. MachineConditionRepaved = "Repaved" // MachineConditionCloudInitDone indicates whether cloud-init has // finished on the machine. Status is True with Reason "Succeeded" // when cloud-init completes without errors, False with Reason // "Running" while cloud-init stages are still executing, and // False with Reason "Failed" when a cloud-init stage reports a // failure. On failure the message includes the stage name and the // error result so that operators can diagnose the problem without // logging into the machine. MachineConditionCloudInitDone = "CloudInitDone" // MachineConditionNodeUpdated indicates the result of a node // update performed by the agent daemon. Status is True with // Reason "Succeeded" after a successful update, and False with // Reason "Failed" when the update fails. While the update is in // progress the status is False with Reason "InProgress". MachineConditionNodeUpdated = "NodeUpdated" // MachineConditionConfigurationPending indicates that no // MachineConfiguration has been assigned to this Machine, either // directly via configurationRef or through a machineSelector // match. The Machine remains in a waiting state until a // configuration is assigned. MachineConditionConfigurationPending = "ConfigurationPending" // MachineConditionRepavePending indicates that the Machine's desired // configuration version has not yet been applied to the running Node. // For OnDelete updates this remains True until the operator deletes // the Node and the agent repaves with the desired version. MachineConditionRepavePending = "RepavePending" )
Condition types for Machine.
const ( // AnnotationProvider associates a Machine with a provider's // controller for reboot/repave operations. AnnotationProvider = "unbounded-cloud.io/provider" // AnnotationConfigurationVersion is set on the Kubernetes Node // object to record which MachineConfigurationVersion was used to // bootstrap the machine. AnnotationConfigurationVersion = "unbounded-cloud.io/machine-configuration-version" )
Annotation keys.
const ( ExternalProviderAzureVM = "AzureVM" ExternalProviderOCIInstance = "OCIInstance" )
External provider names.
const ( // MCVConfigurationLabelKey identifies the parent MachineConfiguration. MCVConfigurationLabelKey = "unbounded-cloud.io/machine-configuration" // MCVVersionLabelKey stores the version number as a label for // efficient selection. MCVVersionLabelKey = "unbounded-cloud.io/machine-configuration-version" )
Label keys set on MachineConfigurationVersion objects.
const (
// MachineSiteLabelKey identifies the site a Machine belongs to.
MachineSiteLabelKey = "unbounded-cloud.io/site"
)
Variables ¶
var ( // GroupVersion is group version used to register these objects. GroupVersion = schema.GroupVersion{Group: "unbounded-cloud.io", Version: "v1alpha3"} // SchemeBuilder is used to add go types to the GroupVersionKind scheme. SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion} // AddToScheme adds the types in this group-version to the given scheme. AddToScheme = SchemeBuilder.AddToScheme )
Functions ¶
func MachineConfigurationVersionName ¶ added in v0.1.4
MachineConfigurationVersionName returns the canonical name for a MachineConfigurationVersion child object.
Types ¶
type AgentDownloadsSpec ¶ added in v0.1.3
type AgentDownloadsSpec struct {
// Kubernetes overrides the download source for kubelet/kubectl/kube-proxy
// (upstream default: https://dl.k8s.io).
// +optional
Kubernetes *DownloadSource `json:"kubernetes,omitempty"`
// Containerd overrides the download source for containerd
// (upstream default: https://github.com/containerd/containerd).
// +optional
Containerd *DownloadSource `json:"containerd,omitempty"`
// Runc overrides the download source for runc
// (upstream default: https://github.com/opencontainers/runc).
// +optional
Runc *DownloadSource `json:"runc,omitempty"`
// CNI overrides the download source for CNI plugins
// (upstream default: https://github.com/containernetworking/plugins).
// +optional
CNI *DownloadSource `json:"cni,omitempty"`
// Crictl overrides the download source for crictl
// (upstream default: https://github.com/kubernetes-sigs/cri-tools).
// +optional
Crictl *DownloadSource `json:"crictl,omitempty"`
}
AgentDownloadsSpec overrides the download sources for the artifacts the agent installs into the nspawn rootfs. Each entry is optional; unset entries fall back to the upstream defaults.
func (*AgentDownloadsSpec) DeepCopy ¶ added in v0.1.3
func (in *AgentDownloadsSpec) DeepCopy() *AgentDownloadsSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentDownloadsSpec.
func (*AgentDownloadsSpec) DeepCopyInto ¶ added in v0.1.3
func (in *AgentDownloadsSpec) DeepCopyInto(out *AgentDownloadsSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AgentSpec ¶
type AgentSpec struct {
// Image is the OCI image reference used for provisioning the
// nspawn machine (e.g. "ghcr.io/org/repo:tag"). When empty the
// agent falls back to its built-in default image.
// +optional
Image string `json:"image,omitempty"`
// Version pins the unbounded-agent release tag that is downloaded
// onto the host (e.g. "v0.0.10"). When empty the install script
// tracks the latest published release.
// +optional
Version string `json:"version,omitempty"`
// BaseURL overrides the base URL used to construct the
// unbounded-agent download URL. Defaults to the upstream GitHub
// releases URL. The layout under BaseURL must match the GitHub
// releases layout (<base>/latest/download/<asset> and
// <base>/download/<tag>/<asset>).
// +optional
BaseURL string `json:"baseURL,omitempty"`
// URL is a fully qualified download URL for the unbounded-agent
// tarball. When set it overrides Version and BaseURL entirely.
// +optional
URL string `json:"url,omitempty"`
// Downloads overrides the download sources for the binaries the
// agent installs into the nspawn rootfs (kubelet, containerd, runc,
// CNI plugins, crictl). When unset the agent downloads each
// artifact from its upstream default host.
// +optional
Downloads *AgentDownloadsSpec `json:"downloads,omitempty"`
}
AgentSpec defines settings for the unbounded node agent.
func (*AgentSpec) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentSpec.
func (*AgentSpec) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AgentStatus ¶
type AgentStatus struct {
// Image is the OCI image reference that was applied to the
// nspawn machine.
Image string `json:"image,omitempty"`
}
AgentStatus holds the applied agent settings for the machine.
func (*AgentStatus) DeepCopy ¶
func (in *AgentStatus) DeepCopy() *AgentStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentStatus.
func (*AgentStatus) DeepCopyInto ¶
func (in *AgentStatus) DeepCopyInto(out *AgentStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type BastionSSHSpec ¶
type BastionSSHSpec struct {
// Host is the hostname or IP address of the bastion, optionally
// including the port (e.g. "1.2.3.4:2222"). When the port is
// omitted, 22 is assumed.
// +kubebuilder:validation:Required
Host string `json:"host"`
// Username is the SSH username for the bastion.
// +kubebuilder:default=azureuser
Username string `json:"username,omitempty"`
// PrivateKeyRef references a secret containing the SSH private key
// for the bastion. If not specified, uses the same key as the
// parent SSHSpec.
// +optional
PrivateKeyRef *SecretKeySelector `json:"privateKeyRef,omitempty"`
}
BastionSSHSpec defines SSH connection details for a bastion host. It mirrors SSHSpec but omits the recursive Bastion field.
func (*BastionSSHSpec) DeepCopy ¶
func (in *BastionSSHSpec) DeepCopy() *BastionSSHSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BastionSSHSpec.
func (*BastionSSHSpec) DeepCopyInto ¶
func (in *BastionSSHSpec) DeepCopyInto(out *BastionSSHSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type CloudInitSpec ¶
type CloudInitSpec struct {
// UserDataConfigMapRef references a ConfigMap containing custom
// cloud-init user-data. The referenced key (default "user-data")
// must contain a valid cloud-init configuration (e.g. a
// #cloud-config YAML document).
// +optional
UserDataConfigMapRef *ConfigMapKeySelector `json:"userDataConfigMapRef,omitempty"`
}
CloudInitSpec defines cloud-init customization for PXE-booted machines. Cloud-init merges vendor-data (managed by unbounded-kube) with user-data (managed by the cluster operator). This spec controls the user-data portion, allowing operators to configure SSH keys, install packages, and perform other host-level customization.
func (*CloudInitSpec) DeepCopy ¶
func (in *CloudInitSpec) DeepCopy() *CloudInitSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CloudInitSpec.
func (*CloudInitSpec) DeepCopyInto ¶
func (in *CloudInitSpec) DeepCopyInto(out *CloudInitSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ConfigMapKeySelector ¶
type ConfigMapKeySelector struct {
// Name of the ConfigMap.
Name string `json:"name"`
// Namespace of the ConfigMap.
Namespace string `json:"namespace"`
// Key within the ConfigMap.
// +kubebuilder:default=user-data
Key string `json:"key,omitempty"`
}
ConfigMapKeySelector selects a key from a ConfigMap.
func (*ConfigMapKeySelector) DeepCopy ¶
func (in *ConfigMapKeySelector) DeepCopy() *ConfigMapKeySelector
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigMapKeySelector.
func (*ConfigMapKeySelector) DeepCopyInto ¶
func (in *ConfigMapKeySelector) DeepCopyInto(out *ConfigMapKeySelector)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type DHCPLease ¶
type DHCPLease struct {
// IPv4 is the IP address to assign.
IPv4 string `json:"ipv4"`
// MAC is the MAC address of the network interface.
MAC string `json:"mac"`
// SubnetMask is the subnet mask for the lease.
SubnetMask string `json:"subnetMask"`
// Gateway is the default gateway.
Gateway string `json:"gateway"`
// DNS is a list of DNS server addresses.
// +optional
DNS []string `json:"dns,omitempty"`
}
DHCPLease defines a static DHCP lease for PXE booting.
func (*DHCPLease) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DHCPLease.
func (*DHCPLease) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type DownloadSource ¶ added in v0.1.3
type DownloadSource struct {
// BaseURL replaces the upstream host + path prefix used to
// construct the download URL. Version and arch substitution are
// preserved so mirrors need to publish assets under the same
// layout as the upstream project.
// +optional
BaseURL string `json:"baseURL,omitempty"`
// URL is a fully qualified download URL template. Version/arch
// substitution via fmt directives is preserved. When set it
// overrides BaseURL entirely.
// +optional
URL string `json:"url,omitempty"`
// Version overrides the version of the artifact that would
// otherwise be derived from the cluster Kubernetes version or the
// agent's compiled-in defaults.
// +optional
Version string `json:"version,omitempty"`
}
DownloadSource configures an override for a binary download source. Exactly one of URL or BaseURL should typically be set; when both are set URL wins. Version overrides the version that would otherwise be derived from the cluster Kubernetes version or agent defaults.
func (*DownloadSource) DeepCopy ¶ added in v0.1.3
func (in *DownloadSource) DeepCopy() *DownloadSource
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DownloadSource.
func (*DownloadSource) DeepCopyInto ¶ added in v0.1.3
func (in *DownloadSource) DeepCopyInto(out *DownloadSource)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type KubernetesSpec ¶
type KubernetesSpec struct {
// Version is the Kubernetes version to install (e.g., "v1.34.0").
// When omitted the controller falls back to the cluster's
// Kubernetes version.
// +optional
Version string `json:"version,omitempty"`
// NodeRef references the Node that corresponds to this Machine.
// +optional
NodeRef *LocalObjectReference `json:"nodeRef,omitempty"`
// NodeLabels are labels passed to kubelet's --node-labels flag.
// +optional
NodeLabels map[string]string `json:"nodeLabels,omitempty"`
// RegisterWithTaints are taints passed to kubelet's --register-with-taints flag.
// Each entry uses the standard Kubernetes taint format: key=value:Effect.
// +optional
RegisterWithTaints []string `json:"registerWithTaints,omitempty"`
// BootstrapTokenRef references a bootstrap token Secret in
// kube-system. The secret must be of type
// bootstrap.kubernetes.io/token with the well-known keys
// "token-id" and "token-secret".
// +kubebuilder:validation:Required
BootstrapTokenRef LocalObjectReference `json:"bootstrapTokenRef"`
}
KubernetesSpec defines Kubernetes-specific configuration for a Machine.
func (*KubernetesSpec) DeepCopy ¶
func (in *KubernetesSpec) DeepCopy() *KubernetesSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubernetesSpec.
func (*KubernetesSpec) DeepCopyInto ¶
func (in *KubernetesSpec) DeepCopyInto(out *KubernetesSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type LocalObjectReference ¶
type LocalObjectReference struct {
// Name of the referenced resource.
// +kubebuilder:validation:MinLength=1
Name string `json:"name"`
}
LocalObjectReference contains enough information to locate the referenced resource.
func (*LocalObjectReference) DeepCopy ¶
func (in *LocalObjectReference) DeepCopy() *LocalObjectReference
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LocalObjectReference.
func (*LocalObjectReference) DeepCopyInto ¶
func (in *LocalObjectReference) DeepCopyInto(out *LocalObjectReference)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Machine ¶
type Machine struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec MachineSpec `json:"spec,omitempty"`
Status MachineStatus `json:"status,omitempty"`
}
Machine represents a machine that can be managed by machina.
func (*Machine) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Machine.
func (*Machine) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Machine) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type MachineConfiguration ¶ added in v0.1.4
type MachineConfiguration struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec MachineConfigurationSpec `json:"spec,omitempty"`
Status MachineConfigurationStatus `json:"status,omitempty"`
}
MachineConfiguration stores a configuration profile for a class of machines. It acts like a Deployment: edits to the spec automatically create or update a child MachineConfigurationVersion, similar to how Deployment edits create or update ReplicaSets.
func (*MachineConfiguration) DeepCopy ¶ added in v0.1.4
func (in *MachineConfiguration) DeepCopy() *MachineConfiguration
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfiguration.
func (*MachineConfiguration) DeepCopyInto ¶ added in v0.1.4
func (in *MachineConfiguration) DeepCopyInto(out *MachineConfiguration)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MachineConfiguration) DeepCopyObject ¶ added in v0.1.4
func (in *MachineConfiguration) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type MachineConfigurationAgent ¶ added in v0.1.4
type MachineConfigurationAgent struct {
// Image is the OCI image reference used for provisioning the
// nspawn machine (e.g. "ghcr.io/org/repo:tag").
// +kubebuilder:validation:Required
Image string `json:"image"`
}
MachineConfigurationAgent holds agent-specific fields that are part of the versioned configuration.
func (*MachineConfigurationAgent) DeepCopy ¶ added in v0.1.4
func (in *MachineConfigurationAgent) DeepCopy() *MachineConfigurationAgent
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationAgent.
func (*MachineConfigurationAgent) DeepCopyInto ¶ added in v0.1.4
func (in *MachineConfigurationAgent) DeepCopyInto(out *MachineConfigurationAgent)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineConfigurationKubernetes ¶ added in v0.1.4
type MachineConfigurationKubernetes struct {
// Version is the Kubernetes version to install (e.g. "v1.34.0").
// +optional
Version string `json:"version,omitempty"`
// NodeLabels are labels passed to kubelet's --node-labels flag.
// +optional
NodeLabels map[string]string `json:"nodeLabels,omitempty"`
// RegisterWithTaints are taints passed to kubelet's
// --register-with-taints flag.
// +optional
RegisterWithTaints []corev1.Taint `json:"registerWithTaints,omitempty"`
}
MachineConfigurationKubernetes holds the Kubernetes-specific fields that are part of the versioned configuration.
func (*MachineConfigurationKubernetes) DeepCopy ¶ added in v0.1.4
func (in *MachineConfigurationKubernetes) DeepCopy() *MachineConfigurationKubernetes
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationKubernetes.
func (*MachineConfigurationKubernetes) DeepCopyInto ¶ added in v0.1.4
func (in *MachineConfigurationKubernetes) DeepCopyInto(out *MachineConfigurationKubernetes)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineConfigurationList ¶ added in v0.1.4
type MachineConfigurationList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []MachineConfiguration `json:"items"`
}
MachineConfigurationList contains a list of MachineConfiguration.
func (*MachineConfigurationList) DeepCopy ¶ added in v0.1.4
func (in *MachineConfigurationList) DeepCopy() *MachineConfigurationList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationList.
func (*MachineConfigurationList) DeepCopyInto ¶ added in v0.1.4
func (in *MachineConfigurationList) DeepCopyInto(out *MachineConfigurationList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MachineConfigurationList) DeepCopyObject ¶ added in v0.1.4
func (in *MachineConfigurationList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type MachineConfigurationRef ¶ added in v0.1.4
type MachineConfigurationRef struct {
// Name is the name of the MachineConfiguration.
// +kubebuilder:validation:Required
// +kubebuilder:validation:MinLength=1
Name string `json:"name"`
// Version is the specific MachineConfigurationVersion number to
// use. If omitted, the controller selects the latest locked
// (deployed) version and populates this field.
// +optional
Version *int32 `json:"version,omitempty"`
}
MachineConfigurationRef references a MachineConfiguration and optionally a specific MachineConfigurationVersion.
func (*MachineConfigurationRef) DeepCopy ¶ added in v0.1.4
func (in *MachineConfigurationRef) DeepCopy() *MachineConfigurationRef
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationRef.
func (*MachineConfigurationRef) DeepCopyInto ¶ added in v0.1.4
func (in *MachineConfigurationRef) DeepCopyInto(out *MachineConfigurationRef)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineConfigurationRefStatus ¶ added in v0.1.4
type MachineConfigurationRefStatus struct {
// Name is the MachineConfiguration name.
Name string `json:"name,omitempty"`
// Version is the MachineConfigurationVersion number that was applied.
Version int32 `json:"version,omitempty"`
// VersionName is the full MachineConfigurationVersion object name
// (e.g. "myconfig-v3").
VersionName string `json:"versionName,omitempty"`
}
MachineConfigurationRefStatus records which configuration version was applied to a Machine.
func (*MachineConfigurationRefStatus) DeepCopy ¶ added in v0.1.4
func (in *MachineConfigurationRefStatus) DeepCopy() *MachineConfigurationRefStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationRefStatus.
func (*MachineConfigurationRefStatus) DeepCopyInto ¶ added in v0.1.4
func (in *MachineConfigurationRefStatus) DeepCopyInto(out *MachineConfigurationRefStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineConfigurationSpec ¶ added in v0.1.4
type MachineConfigurationSpec struct {
// Template contains the configuration fields that are versioned
// into MachineConfigurationVersion objects.
// +kubebuilder:validation:Required
Template MachineConfigurationTemplate `json:"template"`
// MachineSelector selects machines that should automatically
// receive this configuration. If set, new machines matching the
// selector will be assigned the latest locked version of the
// highest priority configuration that matches.
// +optional
MachineSelector *metav1.LabelSelector `json:"machineSelector,omitempty"`
// Priority determines which configuration is selected when multiple
// configurations match a machine's labels. Higher values take
// precedence. When two configurations have the same priority,
// lexicographic ordering of names is used as a tiebreaker.
// +optional
// +kubebuilder:default=0
Priority int32 `json:"priority,omitempty"`
// UpdateStrategy controls how configuration changes are rolled out
// to machines that reference this configuration.
// +optional
UpdateStrategy MachineConfigurationUpdateStrategy `json:"updateStrategy,omitempty"`
// RevisionHistoryLimit is the number of old
// MachineConfigurationVersions to retain for rollback. Versions
// that are still referenced by a Machine are never deleted
// regardless of this limit, so the actual number of retained
// versions may exceed this value.
// +optional
// +kubebuilder:default=10
// +kubebuilder:validation:Minimum=0
RevisionHistoryLimit *int32 `json:"revisionHistoryLimit,omitempty"`
}
MachineConfigurationSpec defines the desired configuration profile for a class of machines.
func (*MachineConfigurationSpec) DeepCopy ¶ added in v0.1.4
func (in *MachineConfigurationSpec) DeepCopy() *MachineConfigurationSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationSpec.
func (*MachineConfigurationSpec) DeepCopyInto ¶ added in v0.1.4
func (in *MachineConfigurationSpec) DeepCopyInto(out *MachineConfigurationSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineConfigurationStatus ¶ added in v0.1.4
type MachineConfigurationStatus struct {
// LatestVersion is the highest version number that has been
// created for this MachineConfiguration. The controller uses this
// to avoid reusing version numbers when versions are deleted.
LatestVersion int32 `json:"latestVersion,omitempty"`
// CurrentVersion is the version number of the latest non-deployed
// (editable) MachineConfigurationVersion. If all versions are
// deployed, this is 0.
CurrentVersion int32 `json:"currentVersion,omitempty"`
// Conditions represent the latest available observations of the
// MachineConfiguration's state.
// +optional
Conditions []metav1.Condition `json:"conditions,omitempty"`
}
MachineConfigurationStatus defines the observed state of a MachineConfiguration.
func (*MachineConfigurationStatus) DeepCopy ¶ added in v0.1.4
func (in *MachineConfigurationStatus) DeepCopy() *MachineConfigurationStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationStatus.
func (*MachineConfigurationStatus) DeepCopyInto ¶ added in v0.1.4
func (in *MachineConfigurationStatus) DeepCopyInto(out *MachineConfigurationStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineConfigurationTemplate ¶ added in v0.1.4
type MachineConfigurationTemplate struct {
// Kubernetes contains Kubernetes-specific configuration such as
// the target version, node labels, and taints.
// +optional
Kubernetes *MachineConfigurationKubernetes `json:"kubernetes,omitempty"`
// Agent contains settings for the unbounded node agent (e.g. the
// OCI image reference for the nspawn machine).
// +optional
Agent *MachineConfigurationAgent `json:"agent,omitempty"`
}
MachineConfigurationTemplate holds the versioned configuration fields. These fields are copied into each MachineConfigurationVersion.
func (*MachineConfigurationTemplate) DeepCopy ¶ added in v0.1.4
func (in *MachineConfigurationTemplate) DeepCopy() *MachineConfigurationTemplate
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationTemplate.
func (*MachineConfigurationTemplate) DeepCopyInto ¶ added in v0.1.4
func (in *MachineConfigurationTemplate) DeepCopyInto(out *MachineConfigurationTemplate)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineConfigurationUpdateStrategy ¶ added in v0.1.4
type MachineConfigurationUpdateStrategy struct {
// Type is the update strategy type.
// +kubebuilder:default=OnDelete
Type MachineConfigurationUpdateStrategyType `json:"type,omitempty"`
// unavailable during a RollingUpdate. Only used when Type is
// RollingUpdate. Can be an absolute number or a percentage.
// +optional
MaxUnavailable *int32 `json:"maxUnavailable,omitempty"`
}
MachineConfigurationUpdateStrategy defines the strategy for applying configuration updates.
func (*MachineConfigurationUpdateStrategy) DeepCopy ¶ added in v0.1.4
func (in *MachineConfigurationUpdateStrategy) DeepCopy() *MachineConfigurationUpdateStrategy
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationUpdateStrategy.
func (*MachineConfigurationUpdateStrategy) DeepCopyInto ¶ added in v0.1.4
func (in *MachineConfigurationUpdateStrategy) DeepCopyInto(out *MachineConfigurationUpdateStrategy)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineConfigurationUpdateStrategyType ¶ added in v0.1.4
type MachineConfigurationUpdateStrategyType string
MachineConfigurationUpdateStrategyType defines how configuration changes are applied to machines. +kubebuilder:validation:Enum=OnDelete;RollingUpdate
const ( // OnDeleteUpdateStrategy requires the operator to manually // cordon, drain, and delete the Node object to trigger a repave // with the new configuration. OnDeleteUpdateStrategy MachineConfigurationUpdateStrategyType = "OnDelete" // RollingUpdateStrategy automates the cordon/drain/delete cycle // across machines, respecting maxUnavailable. Reserved for future // implementation. RollingUpdateStrategy MachineConfigurationUpdateStrategyType = "RollingUpdate" )
type MachineConfigurationVersion ¶ added in v0.1.4
type MachineConfigurationVersion struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec MachineConfigurationVersionSpec `json:"spec,omitempty"`
Status MachineConfigurationVersionStatus `json:"status,omitempty"`
}
MachineConfigurationVersion is an immutable-once-deployed snapshot of a MachineConfiguration's spec at a specific point in time. It acts like a ReplicaSet to a Deployment: the MachineConfiguration controller automatically creates and manages these objects. Versions remain editable until they are deployed (referenced by a Machine). Once deployed, the spec fields become immutable.
func (*MachineConfigurationVersion) DeepCopy ¶ added in v0.1.4
func (in *MachineConfigurationVersion) DeepCopy() *MachineConfigurationVersion
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationVersion.
func (*MachineConfigurationVersion) DeepCopyInto ¶ added in v0.1.4
func (in *MachineConfigurationVersion) DeepCopyInto(out *MachineConfigurationVersion)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MachineConfigurationVersion) DeepCopyObject ¶ added in v0.1.4
func (in *MachineConfigurationVersion) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type MachineConfigurationVersionList ¶ added in v0.1.4
type MachineConfigurationVersionList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []MachineConfigurationVersion `json:"items"`
}
MachineConfigurationVersionList contains a list of MachineConfigurationVersion.
func (*MachineConfigurationVersionList) DeepCopy ¶ added in v0.1.4
func (in *MachineConfigurationVersionList) DeepCopy() *MachineConfigurationVersionList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationVersionList.
func (*MachineConfigurationVersionList) DeepCopyInto ¶ added in v0.1.4
func (in *MachineConfigurationVersionList) DeepCopyInto(out *MachineConfigurationVersionList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MachineConfigurationVersionList) DeepCopyObject ¶ added in v0.1.4
func (in *MachineConfigurationVersionList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type MachineConfigurationVersionSpec ¶ added in v0.1.4
type MachineConfigurationVersionSpec struct {
// Version is the monotonically increasing version number within
// the parent MachineConfiguration.
// +kubebuilder:validation:Minimum=1
Version int32 `json:"version"`
// Template is the configuration snapshot copied from the parent
// MachineConfiguration at the time this version was created or
// last updated (while still editable).
Template MachineConfigurationTemplate `json:"template"`
}
MachineConfigurationVersionSpec defines the versioned configuration snapshot.
func (*MachineConfigurationVersionSpec) DeepCopy ¶ added in v0.1.4
func (in *MachineConfigurationVersionSpec) DeepCopy() *MachineConfigurationVersionSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationVersionSpec.
func (*MachineConfigurationVersionSpec) DeepCopyInto ¶ added in v0.1.4
func (in *MachineConfigurationVersionSpec) DeepCopyInto(out *MachineConfigurationVersionSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineConfigurationVersionStatus ¶ added in v0.1.4
type MachineConfigurationVersionStatus struct {
// Deployed indicates whether any Machine has been provisioned
// using this version. Once true, the spec fields are immutable.
Deployed bool `json:"deployed,omitempty"`
// DeployedMachines is the count of Machines currently referencing
// this version.
DeployedMachines int32 `json:"deployedMachines,omitempty"`
// Conditions represent the latest available observations.
// +optional
Conditions []metav1.Condition `json:"conditions,omitempty"`
}
MachineConfigurationVersionStatus defines the observed state of a MachineConfigurationVersion.
func (*MachineConfigurationVersionStatus) DeepCopy ¶ added in v0.1.4
func (in *MachineConfigurationVersionStatus) DeepCopy() *MachineConfigurationVersionStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationVersionStatus.
func (*MachineConfigurationVersionStatus) DeepCopyInto ¶ added in v0.1.4
func (in *MachineConfigurationVersionStatus) DeepCopyInto(out *MachineConfigurationVersionStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineList ¶
type MachineList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []Machine `json:"items"`
}
MachineList contains a list of Machine.
func (*MachineList) DeepCopy ¶
func (in *MachineList) DeepCopy() *MachineList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineList.
func (*MachineList) DeepCopyInto ¶
func (in *MachineList) DeepCopyInto(out *MachineList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MachineList) DeepCopyObject ¶
func (in *MachineList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type MachineOperation ¶ added in v0.1.4
type MachineOperation struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec MachineOperationSpec `json:"spec,omitempty"`
Status MachineOperationStatus `json:"status,omitempty"`
}
MachineOperation represents a discrete operation to be performed on a Machine. MachineOperations are created by CLI commands or controllers and processed by the appropriate agent. The in-VM agent handles operations like NodeReboot, while cloud or PXE controllers handle operations like HostReboot, HostPowerOff, and HostPowerOn.
func (*MachineOperation) DeepCopy ¶ added in v0.1.4
func (in *MachineOperation) DeepCopy() *MachineOperation
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineOperation.
func (*MachineOperation) DeepCopyInto ¶ added in v0.1.4
func (in *MachineOperation) DeepCopyInto(out *MachineOperation)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MachineOperation) DeepCopyObject ¶ added in v0.1.4
func (in *MachineOperation) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type MachineOperationCredential ¶ added in v0.1.8
type MachineOperationCredential struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec MachineOperationCredentialSpec `json:"spec,omitempty"`
}
MachineOperationCredential defines the credential source used by external MachineOperation controllers for machines in a site.
func (*MachineOperationCredential) DeepCopy ¶ added in v0.1.8
func (in *MachineOperationCredential) DeepCopy() *MachineOperationCredential
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineOperationCredential.
func (*MachineOperationCredential) DeepCopyInto ¶ added in v0.1.8
func (in *MachineOperationCredential) DeepCopyInto(out *MachineOperationCredential)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MachineOperationCredential) DeepCopyObject ¶ added in v0.1.8
func (in *MachineOperationCredential) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type MachineOperationCredentialAuth ¶ added in v0.1.8
type MachineOperationCredentialAuth struct {
// Mode identifies the credential source.
// +kubebuilder:validation:Required
Mode MachineOperationCredentialAuthMode `json:"mode"`
// SecretRef references provider-specific external plugin configuration. It
// is required for ExternalPlugin mode.
// +optional
SecretRef *NamespacedSecretReference `json:"secretRef,omitempty"`
}
MachineOperationCredentialAuth defines the credential source configuration.
func (*MachineOperationCredentialAuth) DeepCopy ¶ added in v0.1.8
func (in *MachineOperationCredentialAuth) DeepCopy() *MachineOperationCredentialAuth
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineOperationCredentialAuth.
func (*MachineOperationCredentialAuth) DeepCopyInto ¶ added in v0.1.8
func (in *MachineOperationCredentialAuth) DeepCopyInto(out *MachineOperationCredentialAuth)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineOperationCredentialAuthMode ¶ added in v0.1.8
type MachineOperationCredentialAuthMode string
MachineOperationCredentialAuthMode identifies the credential source used by a MachineOperation controller. +kubebuilder:validation:Enum=WorkloadIdentity;ExternalPlugin
const ( // MachineOperationCredentialAuthWorkloadIdentity uses OIDC/workload identity // credentials available to the controller process. MachineOperationCredentialAuthWorkloadIdentity MachineOperationCredentialAuthMode = "WorkloadIdentity" // MachineOperationCredentialAuthExternalPlugin delegates credential handling // to provider-specific external plugin configuration. MachineOperationCredentialAuthExternalPlugin MachineOperationCredentialAuthMode = "ExternalPlugin" )
type MachineOperationCredentialList ¶ added in v0.1.8
type MachineOperationCredentialList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []MachineOperationCredential `json:"items"`
}
MachineOperationCredentialList contains a list of MachineOperationCredential.
func (*MachineOperationCredentialList) DeepCopy ¶ added in v0.1.8
func (in *MachineOperationCredentialList) DeepCopy() *MachineOperationCredentialList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineOperationCredentialList.
func (*MachineOperationCredentialList) DeepCopyInto ¶ added in v0.1.8
func (in *MachineOperationCredentialList) DeepCopyInto(out *MachineOperationCredentialList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MachineOperationCredentialList) DeepCopyObject ¶ added in v0.1.8
func (in *MachineOperationCredentialList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type MachineOperationCredentialSpec ¶ added in v0.1.8
type MachineOperationCredentialSpec struct {
// SiteName is matched against the Machine site label.
// +kubebuilder:validation:Required
// +kubebuilder:validation:MinLength=1
SiteName string `json:"siteName"`
// Provider identifies the external control provider this credential applies
// to.
// +kubebuilder:validation:Required
// +kubebuilder:validation:MinLength=1
Provider string `json:"provider"`
// Auth identifies how the provider should authenticate.
// +kubebuilder:validation:Required
Auth MachineOperationCredentialAuth `json:"auth"`
}
MachineOperationCredentialSpec defines a provider credential source for a site.
func (*MachineOperationCredentialSpec) DeepCopy ¶ added in v0.1.8
func (in *MachineOperationCredentialSpec) DeepCopy() *MachineOperationCredentialSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineOperationCredentialSpec.
func (*MachineOperationCredentialSpec) DeepCopyInto ¶ added in v0.1.8
func (in *MachineOperationCredentialSpec) DeepCopyInto(out *MachineOperationCredentialSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineOperationList ¶ added in v0.1.4
type MachineOperationList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []MachineOperation `json:"items"`
}
MachineOperationList contains a list of MachineOperation.
func (*MachineOperationList) DeepCopy ¶ added in v0.1.4
func (in *MachineOperationList) DeepCopy() *MachineOperationList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineOperationList.
func (*MachineOperationList) DeepCopyInto ¶ added in v0.1.4
func (in *MachineOperationList) DeepCopyInto(out *MachineOperationList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MachineOperationList) DeepCopyObject ¶ added in v0.1.4
func (in *MachineOperationList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type MachineOperationSpec ¶ added in v0.1.4
type MachineOperationSpec struct {
// MachineRef is the name of the Machine CR this operation targets.
// Either machineRef or machineSelector must be set.
// +optional
MachineRef string `json:"machineRef,omitempty"`
// MachineSelector selects machines by labels. When set, the
// controller creates individual MachineOperation children for
// each matched machine. Either machineRef or machineSelector
// must be set.
// +optional
MachineSelector *metav1.LabelSelector `json:"machineSelector,omitempty"`
// OperationKind is the operation to perform on the target machine.
// +kubebuilder:validation:Required
OperationKind OperationKind `json:"operationKind"`
// Parameters is an optional set of key-value pairs passed to the
// operation executor. For example, RestartService uses "service" to
// specify the systemd unit name.
// TODO: Revisit whether map[string]string is sufficient or if we
// need a richer type (e.g. runtime.RawExtension for arbitrary
// JSON, or a typed []OperationParameter struct).
// +optional
Parameters map[string]string `json:"parameters,omitempty"`
// TTLSecondsAfterFinished limits the lifetime of a completed or failed
// MachineOperation. If set, the agent deletes the MachineOperation
// this many seconds after it reaches a terminal phase. If unset, the
// MachineOperation is kept indefinitely.
// +optional
// +kubebuilder:validation:Minimum=0
TTLSecondsAfterFinished *int32 `json:"ttlSecondsAfterFinished,omitempty"`
}
MachineOperationSpec defines the desired state of a MachineOperation.
func (*MachineOperationSpec) DeepCopy ¶ added in v0.1.4
func (in *MachineOperationSpec) DeepCopy() *MachineOperationSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineOperationSpec.
func (*MachineOperationSpec) DeepCopyInto ¶ added in v0.1.4
func (in *MachineOperationSpec) DeepCopyInto(out *MachineOperationSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineOperationStatus ¶ added in v0.1.4
type MachineOperationStatus struct {
// Phase is the current phase of the operation.
Phase OperationPhase `json:"phase,omitempty"`
// Message is a human-readable description of the current state.
// +optional
Message string `json:"message,omitempty"`
// StartedAt is when the agent began executing the operation.
// +optional
StartedAt *metav1.Time `json:"startedAt,omitempty"`
// CompletedAt is when the operation reached a terminal state
// (Complete or Failed).
// +optional
CompletedAt *metav1.Time `json:"completedAt,omitempty"`
// ObservedMachineGeneration is the Machine's metadata.generation
// at the time the agent began executing the operation. Clients
// can compare this to the current Machine generation to determine
// whether the operation acted on the expected machine state.
// +optional
ObservedMachineGeneration int64 `json:"observedMachineGeneration,omitempty"`
// Targets records the per-machine execution state for this operation.
// For single-machine operations this contains one entry. For selector
// operations, targets are snapshotted when execution begins and remain
// authoritative even if selector matches change later.
// +optional
// +listType=map
// +listMapKey=machineRef
Targets []MachineOperationTargetStatus `json:"targets,omitempty"`
// Conditions represent the latest available observations of the
// operation's state.
// +optional
Conditions []metav1.Condition `json:"conditions,omitempty"`
}
MachineOperationStatus defines the observed state of a MachineOperation.
func (*MachineOperationStatus) DeepCopy ¶ added in v0.1.4
func (in *MachineOperationStatus) DeepCopy() *MachineOperationStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineOperationStatus.
func (*MachineOperationStatus) DeepCopyInto ¶ added in v0.1.4
func (in *MachineOperationStatus) DeepCopyInto(out *MachineOperationStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MachineOperationStatus) IsTerminal ¶ added in v0.1.4
func (s *MachineOperationStatus) IsTerminal() bool
IsTerminal returns true if the operation phase is Complete or Failed.
type MachineOperationTargetStatus ¶ added in v0.1.7
type MachineOperationTargetStatus struct {
// MachineRef is the name of the targeted Machine.
// +kubebuilder:validation:Required
MachineRef string `json:"machineRef"`
// Phase is the current lifecycle phase for this target.
// +optional
Phase OperationPhase `json:"phase,omitempty"`
// Stage is the current operation-specific stage for this target.
// +optional
Stage OperationStage `json:"stage,omitempty"`
// Message is a human-readable description of target progress or failure.
// +optional
Message string `json:"message,omitempty"`
// StartedAt is when execution began for this target.
// +optional
StartedAt *metav1.Time `json:"startedAt,omitempty"`
// CompletedAt is when this target reached a terminal phase.
// +optional
CompletedAt *metav1.Time `json:"completedAt,omitempty"`
// ObservedGeneration is the target Machine generation acted on.
// +optional
ObservedGeneration int64 `json:"observedGeneration,omitempty"`
// TargetOperations records the Machine operation counters this operation
// requested. It is used by counter-backed HostReplace operations to remain
// idempotent across controller restarts.
// +optional
TargetOperations *OperationsStatus `json:"targetOperations,omitempty"`
// Attempts is the number of external action attempts made for this target.
// Polling expected state changes does not increment this field.
// +optional
Attempts int32 `json:"attempts,omitempty"`
// LastAttemptAt records when the latest external action attempt occurred.
// +optional
LastAttemptAt *metav1.Time `json:"lastAttemptAt,omitempty"`
}
MachineOperationTargetStatus records execution state for one target Machine.
func (*MachineOperationTargetStatus) DeepCopy ¶ added in v0.1.7
func (in *MachineOperationTargetStatus) DeepCopy() *MachineOperationTargetStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineOperationTargetStatus.
func (*MachineOperationTargetStatus) DeepCopyInto ¶ added in v0.1.7
func (in *MachineOperationTargetStatus) DeepCopyInto(out *MachineOperationTargetStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachinePhase ¶
type MachinePhase string
MachinePhase represents the current phase of a Machine.
const ( MachinePhasePending MachinePhase = "Pending" MachinePhaseRebooting MachinePhase = "Rebooting" MachinePhaseProvisioning MachinePhase = "Provisioning" MachinePhaseJoining MachinePhase = "Joining" MachinePhaseReady MachinePhase = "Ready" MachinePhaseFailed MachinePhase = "Failed" )
type MachineSpec ¶
type MachineSpec struct {
// SSH contains the SSH connection and credential details for the
// machine.
// +optional
SSH *SSHSpec `json:"ssh,omitempty"`
// PXE contains PXE boot configuration for the machine.
// +optional
PXE *PXESpec `json:"pxe,omitempty"`
// Kubernetes contains Kubernetes-specific configuration.
// +optional
Kubernetes *KubernetesSpec `json:"kubernetes,omitempty"`
// Agent contains settings for the unbounded node agent.
// +optional
Agent *AgentSpec `json:"agent,omitempty"`
// Operations contains counter-based operation triggers.
// +optional
Operations *OperationsSpec `json:"operations,omitempty"`
// Provider identifies the external control provider for this machine.
// +optional
// +kubebuilder:validation:MinLength=1
Provider string `json:"provider,omitempty"`
// ProviderID identifies the underlying infrastructure resource for this
// machine, using a Kubernetes-style provider ID such as
// azure:///subscriptions/.../virtualMachines/name or oci://ocid1.instance...
// +optional
ProviderID string `json:"providerID,omitempty"`
// ConfigurationRef references a MachineConfiguration (and
// optionally a specific version) that defines the configuration
// profile for this machine. If a specific version is set, that
// version is used at provisioning time; otherwise the latest
// locked version is used and the version field is set by the
// controller.
// +optional
ConfigurationRef *MachineConfigurationRef `json:"configurationRef,omitempty"`
}
MachineSpec defines the desired state of a Machine.
func (*MachineSpec) DeepCopy ¶
func (in *MachineSpec) DeepCopy() *MachineSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineSpec.
func (*MachineSpec) DeepCopyInto ¶
func (in *MachineSpec) DeepCopyInto(out *MachineSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineStatus ¶
type MachineStatus struct {
// Phase is the current phase of the machine. Intended for human
// consumption; follows the state machine rather than driving it.
Phase MachinePhase `json:"phase,omitempty"`
// Message provides additional status information.
Message string `json:"message,omitempty"`
// SSH holds observed SSH state.
// +optional
SSH *SSHStatus `json:"ssh,omitempty"`
// Redfish holds observed Redfish state.
// +optional
Redfish *RedfishStatus `json:"redfish,omitempty"`
// TPM holds observed TPM state.
// +optional
TPM *TPMStatus `json:"tpm,omitempty"`
// Agent holds the applied agent settings.
// +optional
Agent *AgentStatus `json:"agent,omitempty"`
// Operations holds the last-observed operation counters.
// +optional
Operations *OperationsStatus `json:"operations,omitempty"`
// Configuration records the MachineConfigurationVersion that was
// applied to this machine during the most recent provisioning.
// +optional
Configuration *MachineConfigurationRefStatus `json:"configuration,omitempty"`
// Conditions represent the latest available observations of the
// machine's state.
Conditions []metav1.Condition `json:"conditions,omitempty"`
}
MachineStatus defines the observed state of a Machine.
func (*MachineStatus) DeepCopy ¶
func (in *MachineStatus) DeepCopy() *MachineStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineStatus.
func (*MachineStatus) DeepCopyInto ¶
func (in *MachineStatus) DeepCopyInto(out *MachineStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type NamespacedSecretReference ¶ added in v0.1.8
type NamespacedSecretReference struct {
// Name of the secret.
// +kubebuilder:validation:Required
// +kubebuilder:validation:MinLength=1
Name string `json:"name"`
// Namespace of the secret.
// +kubebuilder:validation:Required
// +kubebuilder:validation:MinLength=1
Namespace string `json:"namespace"`
}
NamespacedSecretReference contains enough information to locate a Secret.
func (*NamespacedSecretReference) DeepCopy ¶ added in v0.1.8
func (in *NamespacedSecretReference) DeepCopy() *NamespacedSecretReference
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NamespacedSecretReference.
func (*NamespacedSecretReference) DeepCopyInto ¶ added in v0.1.8
func (in *NamespacedSecretReference) DeepCopyInto(out *NamespacedSecretReference)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type OperationKind ¶ added in v0.1.4
type OperationKind string
OperationKind identifies the kind of operation to perform. Predefined operations cover common lifecycle actions; custom operations may be supported by individual cloud controllers. +kubebuilder:validation:Enum=NodeReboot;AgentUpgrade;AgentReset;HostReboot;HostPowerOff;HostPowerOn;HostReplace
const ( // OperationNodeReboot restarts the nspawn-backed node in place without // reprovisioning the rootfs. Services are stopped, the nspawn container // is restarted, and services are brought back up. Handled by the // in-VM agent. OperationNodeReboot OperationKind = "NodeReboot" // OperationAgentUpgrade upgrades the host-side unbounded-agent binary. // Handled by the in-VM agent. OperationAgentUpgrade OperationKind = "AgentUpgrade" // OperationAgentReset resets the host by removing the unbounded-agent and // all associated resources. Handled by the in-VM agent. OperationAgentReset OperationKind = "AgentReset" // OperationHostReboot triggers a full hardware power cycle of the host // via BMC (e.g. Redfish). Handled by the machina controller or cloud // controller. OperationHostReboot OperationKind = "HostReboot" // OperationHostPowerOff powers off the host through an out-of-band provider. OperationHostPowerOff OperationKind = "HostPowerOff" // OperationHostPowerOn powers on the host through an out-of-band provider. OperationHostPowerOn OperationKind = "HostPowerOn" // OperationHostReplace replaces the host VM through an out-of-band provider // and reinstalls the unbounded-agent so the node can rejoin the cluster. OperationHostReplace OperationKind = "HostReplace" )
type OperationPhase ¶ added in v0.1.4
type OperationPhase string
OperationPhase represents the current phase of a MachineOperation.
const ( OperationPhasePending OperationPhase = "Pending" OperationPhaseInProgress OperationPhase = "InProgress" OperationPhaseComplete OperationPhase = "Complete" OperationPhaseFailed OperationPhase = "Failed" )
type OperationStage ¶ added in v0.1.7
type OperationStage string
OperationStage represents the current stage of a target operation.
const ( OperationStagePoweringOff OperationStage = "PoweringOff" OperationStageWaitingOff OperationStage = "WaitingOff" OperationStagePoweringOn OperationStage = "PoweringOn" OperationStageWaitingOn OperationStage = "WaitingOn" OperationStageRepaveRequested OperationStage = "RepaveRequested" OperationStageWaitingRepave OperationStage = "WaitingRepave" )
type OperationsSpec ¶
type OperationsSpec struct {
// RebootCounter triggers a reboot when it exceeds the status
// reboot counter.
// +optional
RebootCounter int64 `json:"rebootCounter,omitempty"`
// RepaveCounter triggers a repave when it exceeds the status
// repave counter.
// +optional
RepaveCounter int64 `json:"repaveCounter,omitempty"`
}
OperationsSpec defines counter-based operation triggers. Controllers compare spec counters against status counters to determine if an operation is needed.
func (*OperationsSpec) DeepCopy ¶
func (in *OperationsSpec) DeepCopy() *OperationsSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OperationsSpec.
func (*OperationsSpec) DeepCopyInto ¶
func (in *OperationsSpec) DeepCopyInto(out *OperationsSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type OperationsStatus ¶
type OperationsStatus struct {
// RebootCounter is the last reboot counter value that was acted on.
RebootCounter int64 `json:"rebootCounter,omitempty"`
// RepaveCounter is the last repave counter value that was acted on.
RepaveCounter int64 `json:"repaveCounter,omitempty"`
}
OperationsStatus holds the last-observed operation counters.
func (*OperationsStatus) DeepCopy ¶
func (in *OperationsStatus) DeepCopy() *OperationsStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OperationsStatus.
func (*OperationsStatus) DeepCopyInto ¶
func (in *OperationsStatus) DeepCopyInto(out *OperationsStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PXESpec ¶
type PXESpec struct {
// Image is an OCI image reference containing netboot artifacts.
// Example: "ghcr.io/azure/images/host-ubuntu2404:v1"
// +kubebuilder:validation:Required
Image string `json:"image"`
// DHCPLeases defines static DHCP leases for PXE booting.
// +optional
DHCPLeases []DHCPLease `json:"dhcpLeases,omitempty"`
// Redfish configures optional Redfish BMC access.
// +optional
Redfish *RedfishSpec `json:"redfish,omitempty"`
// CloudInit contains optional cloud-init customization for PXE-booted
// machines.
// +optional
CloudInit *CloudInitSpec `json:"cloudInit,omitempty"`
}
PXESpec defines PXE boot configuration for a Machine.
func (*PXESpec) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PXESpec.
func (*PXESpec) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type RedfishSpec ¶
type RedfishSpec struct {
// URL is the Redfish endpoint URL.
// +kubebuilder:validation:Required
URL string `json:"url"`
// Username is the Redfish username.
// +kubebuilder:validation:Required
Username string `json:"username"`
// DeviceID is the Redfish system device ID. Defaults to "1".
// +kubebuilder:default="1"
DeviceID string `json:"deviceID,omitempty"`
// PasswordRef references a secret containing the Redfish password.
// +kubebuilder:validation:Required
PasswordRef SecretKeySelector `json:"passwordRef"`
}
RedfishSpec defines Redfish BMC connection details.
func (*RedfishSpec) DeepCopy ¶
func (in *RedfishSpec) DeepCopy() *RedfishSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RedfishSpec.
func (*RedfishSpec) DeepCopyInto ¶
func (in *RedfishSpec) DeepCopyInto(out *RedfishSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type RedfishStatus ¶
type RedfishStatus struct {
// CertFingerprint is the TLS certificate fingerprint for the
// Redfish endpoint, pinned on first connection.
CertFingerprint string `json:"certFingerprint,omitempty"`
}
RedfishStatus holds observed Redfish state.
func (*RedfishStatus) DeepCopy ¶
func (in *RedfishStatus) DeepCopy() *RedfishStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RedfishStatus.
func (*RedfishStatus) DeepCopyInto ¶
func (in *RedfishStatus) DeepCopyInto(out *RedfishStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SSHSpec ¶
type SSHSpec struct {
// Host is the hostname or IP address of the machine, optionally
// including the port (e.g. "1.2.3.4:2222"). When the port is
// omitted, 22 is assumed.
// +kubebuilder:validation:Required
Host string `json:"host"`
// Username is the SSH username.
// +kubebuilder:default=azureuser
Username string `json:"username,omitempty"`
// PrivateKeyRef references a secret containing the SSH private key.
// +kubebuilder:validation:Required
PrivateKeyRef SecretKeySelector `json:"privateKeyRef"`
// Bastion configures an optional SSH jump host (bastion) for proxy
// connections. Its structure is identical to SSHSpec minus the
// bastion field itself.
// +optional
Bastion *BastionSSHSpec `json:"bastion,omitempty"`
}
SSHSpec defines SSH connection details. The same structure is reused for both the target machine and the optional bastion host.
func (*SSHSpec) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SSHSpec.
func (*SSHSpec) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SSHStatus ¶
type SSHStatus struct {
// Fingerprint is the SSH host key fingerprint discovered on
// first connection. Subsequent connections must match this value.
Fingerprint string `json:"fingerprint,omitempty"`
}
SSHStatus holds observed SSH state.
func (*SSHStatus) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SSHStatus.
func (*SSHStatus) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SecretKeySelector ¶
type SecretKeySelector struct {
// Name of the secret.
Name string `json:"name"`
// Namespace of the secret.
Namespace string `json:"namespace"`
// Key within the secret.
// +kubebuilder:default=ssh-privatekey
Key string `json:"key,omitempty"`
}
SecretKeySelector selects a key from a Secret.
func (*SecretKeySelector) DeepCopy ¶
func (in *SecretKeySelector) DeepCopy() *SecretKeySelector
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecretKeySelector.
func (*SecretKeySelector) DeepCopyInto ¶
func (in *SecretKeySelector) DeepCopyInto(out *SecretKeySelector)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type TPMStatus ¶
type TPMStatus struct {
// EKPublicKey is the TPM endorsement key public key, written
// when the PXE boot image requests a bootstrap token.
EKPublicKey string `json:"ekPublicKey,omitempty"`
}
TPMStatus holds observed TPM state.
func (*TPMStatus) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TPMStatus.
func (*TPMStatus) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.