Documentation ¶
Overview ¶
Package v1beta1 contains the v1beta1 API implementation. +k8s:openapi-gen=true
Package v1beta1 contains API Schema definitions for the cluster v1beta1 API group +kubebuilder:object:generate=true +groupName=cluster.x-k8s.io
Index ¶
- Constants
- Variables
- func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenAPIDefinition
- func MachineDeploymentDefaulter(scheme *runtime.Scheme) webhook.CustomDefaulter
- func SetMinNodeStartupTimeout(d metav1.Duration)
- type APIEndpoint
- type Bootstrap
- type Cluster
- func (in *Cluster) DeepCopy() *Cluster
- func (in *Cluster) DeepCopyInto(out *Cluster)
- func (in *Cluster) DeepCopyObject() runtime.Object
- func (c *Cluster) GetConditions() Conditions
- func (c *Cluster) GetIPFamily() (ClusterIPFamily, error)
- func (*Cluster) Hub()
- func (c *Cluster) SetConditions(conditions Conditions)
- type ClusterClass
- type ClusterClassList
- type ClusterClassPatch
- type ClusterClassSpec
- type ClusterClassStatus
- type ClusterClassStatusVariable
- type ClusterClassStatusVariableDefinition
- type ClusterClassVariable
- type ClusterIPFamily
- type ClusterList
- type ClusterNetwork
- type ClusterPhase
- type ClusterSpec
- type ClusterStatus
- type ClusterVariable
- type Condition
- type ConditionSeverity
- type ConditionType
- type Conditions
- type ControlPlaneClass
- type ControlPlaneTopology
- type ExternalPatchDefinition
- type FailureDomainSpec
- type FailureDomains
- type JSONPatch
- type JSONPatchValue
- type JSONSchemaProps
- type LocalObjectTemplate
- type Machine
- func (in *Machine) DeepCopy() *Machine
- func (in *Machine) DeepCopyInto(out *Machine)
- func (in *Machine) DeepCopyObject() runtime.Object
- func (m *Machine) Default()
- func (m *Machine) GetConditions() Conditions
- func (*Machine) Hub()
- func (m *Machine) SetConditions(conditions Conditions)
- func (m *Machine) SetupWebhookWithManager(mgr ctrl.Manager) error
- func (m *Machine) ValidateCreate() error
- func (m *Machine) ValidateDelete() error
- func (m *Machine) ValidateUpdate(old runtime.Object) error
- type MachineAddress
- type MachineAddressType
- type MachineAddresses
- type MachineDeployment
- func (in *MachineDeployment) DeepCopy() *MachineDeployment
- func (in *MachineDeployment) DeepCopyInto(out *MachineDeployment)
- func (in *MachineDeployment) DeepCopyObject() runtime.Object
- func (m *MachineDeployment) GetConditions() Conditions
- func (*MachineDeployment) Hub()
- func (m *MachineDeployment) SetConditions(conditions Conditions)
- func (m *MachineDeployment) SetupWebhookWithManager(mgr ctrl.Manager) error
- func (m *MachineDeployment) ValidateCreate() error
- func (m *MachineDeployment) ValidateDelete() error
- func (m *MachineDeployment) ValidateUpdate(old runtime.Object) error
- type MachineDeploymentClass
- type MachineDeploymentClassTemplate
- type MachineDeploymentList
- type MachineDeploymentPhase
- type MachineDeploymentSpec
- type MachineDeploymentStatus
- type MachineDeploymentStrategy
- type MachineDeploymentStrategyType
- type MachineDeploymentTopology
- type MachineDeploymentVariables
- type MachineHealthCheck
- func (in *MachineHealthCheck) DeepCopy() *MachineHealthCheck
- func (in *MachineHealthCheck) DeepCopyInto(out *MachineHealthCheck)
- func (in *MachineHealthCheck) DeepCopyObject() runtime.Object
- func (m *MachineHealthCheck) Default()
- func (m *MachineHealthCheck) GetConditions() Conditions
- func (*MachineHealthCheck) Hub()
- func (m *MachineHealthCheck) SetConditions(conditions Conditions)
- func (m *MachineHealthCheck) SetupWebhookWithManager(mgr ctrl.Manager) error
- func (m *MachineHealthCheck) ValidateCommonFields(fldPath *field.Path) field.ErrorList
- func (m *MachineHealthCheck) ValidateCreate() error
- func (m *MachineHealthCheck) ValidateDelete() error
- func (m *MachineHealthCheck) ValidateUpdate(old runtime.Object) error
- type MachineHealthCheckClass
- type MachineHealthCheckList
- type MachineHealthCheckSpec
- type MachineHealthCheckStatus
- type MachineHealthCheckTopology
- type MachineList
- type MachinePhase
- type MachineRollingUpdateDeployment
- type MachineSet
- func (in *MachineSet) DeepCopy() *MachineSet
- func (in *MachineSet) DeepCopyInto(out *MachineSet)
- func (in *MachineSet) DeepCopyObject() runtime.Object
- func (m *MachineSet) Default()
- func (m *MachineSet) GetConditions() Conditions
- func (*MachineSet) Hub()
- func (m *MachineSet) SetConditions(conditions Conditions)
- func (m *MachineSet) SetupWebhookWithManager(mgr ctrl.Manager) error
- func (m *MachineSet) Validate() field.ErrorList
- func (m *MachineSet) ValidateCreate() error
- func (m *MachineSet) ValidateDelete() error
- func (m *MachineSet) ValidateUpdate(old runtime.Object) error
- type MachineSetDeletePolicy
- type MachineSetList
- type MachineSetSpec
- type MachineSetStatus
- type MachineSpec
- type MachineStatus
- type MachineTemplateSpec
- type NetworkRanges
- type ObjectMeta
- type PatchDefinition
- type PatchSelector
- type PatchSelectorMatch
- type PatchSelectorMatchMachineDeploymentClass
- type Topology
- type UnhealthyCondition
- type VariableSchema
- type WorkersClass
- type WorkersTopology
Constants ¶
const ( // ClusterPhasePending is the first state a Cluster is assigned by // Cluster API Cluster controller after being created. ClusterPhasePending = ClusterPhase("Pending") // ClusterPhaseProvisioning is the state when the Cluster has a provider infrastructure // object associated and can start provisioning. ClusterPhaseProvisioning = ClusterPhase("Provisioning") // ClusterPhaseProvisioned is the state when its // infrastructure has been created and configured. ClusterPhaseProvisioned = ClusterPhase("Provisioned") // ClusterPhaseDeleting is the Cluster state when a delete // request has been sent to the API Server, // but its infrastructure has not yet been fully deleted. ClusterPhaseDeleting = ClusterPhase("Deleting") // ClusterPhaseFailed is the Cluster state when the system // might require user intervention. ClusterPhaseFailed = ClusterPhase("Failed") // ClusterPhaseUnknown is returned if the Cluster state cannot be determined. ClusterPhaseUnknown = ClusterPhase("Unknown") )
const ( // ClusterNameLabel is the label set on machines linked to a cluster and // external objects(bootstrap and infrastructure providers). ClusterNameLabel = "cluster.x-k8s.io/cluster-name" // ClusterTopologyOwnedLabel is the label set on all the object which are managed as part of a ClusterTopology. ClusterTopologyOwnedLabel = "topology.cluster.x-k8s.io/owned" // ClusterTopologyMachineDeploymentNameLabel is the label set on the generated MachineDeployment objects // to track the name of the MachineDeployment topology it represents. ClusterTopologyMachineDeploymentNameLabel = "topology.cluster.x-k8s.io/deployment-name" // ClusterTopologyHoldUpgradeSequenceAnnotation can be used to hold the entire MachineDeployment upgrade sequence. // If the annotation is set on a MachineDeployment topology in Cluster.spec.topology.workers, the Kubernetes upgrade // for this MachineDeployment topology and all subsequent ones is deferred. // Examples: // - If you want to pause upgrade after CP upgrade, this annotation should be applied to the first MachineDeployment // in the list of MachineDeployments in Cluster.spec.topology. The upgrade will not be completed until the annotation // is removed and all MachineDeployments are upgraded. // - If you want to pause upgrade after the 50th MachineDeployment, this annotation should be applied to the 51st // MachineDeployment in the list. ClusterTopologyHoldUpgradeSequenceAnnotation = "topology.cluster.x-k8s.io/hold-upgrade-sequence" // ClusterTopologyDeferUpgradeAnnotation can be used to defer the Kubernetes upgrade of a single MachineDeployment topology. // If the annotation is set on a MachineDeployment topology in Cluster.spec.topology.workers, the Kubernetes upgrade // for this MachineDeployment topology is deferred. It doesn't affect other MachineDeployment topologies. // Example: // - If you want to defer the upgrades of the 3rd and 5th MachineDeployments of the list, set the annotation on them. // The upgrade process will upgrade MachineDeployment in position 1,2, (skip 3), 4, (skip 5), 6 etc. The upgrade // will not be completed until the annotation is removed and all MachineDeployments are upgraded. ClusterTopologyDeferUpgradeAnnotation = "topology.cluster.x-k8s.io/defer-upgrade" // ClusterTopologyUnsafeUpdateClassNameAnnotation can be used to disable the webhook check on // update that disallows a pre-existing Cluster to be populated with Topology information and Class. ClusterTopologyUnsafeUpdateClassNameAnnotation = "unsafe.topology.cluster.x-k8s.io/disable-update-class-name-check" // ProviderNameLabel is the label set on components in the provider manifest. // This label allows to easily identify all the components belonging to a provider; the clusterctl // tool uses this label for implementing provider's lifecycle operations. ProviderNameLabel = "cluster.x-k8s.io/provider" // ClusterNameAnnotation is the annotation set on nodes identifying the name of the cluster the node belongs to. ClusterNameAnnotation = "cluster.x-k8s.io/cluster-name" // ClusterNamespaceAnnotation is the annotation set on nodes identifying the namespace of the cluster the node belongs to. ClusterNamespaceAnnotation = "cluster.x-k8s.io/cluster-namespace" // MachineAnnotation is the annotation set on nodes identifying the machine the node belongs to. MachineAnnotation = "cluster.x-k8s.io/machine" // OwnerKindAnnotation is the annotation set on nodes identifying the owner kind. OwnerKindAnnotation = "cluster.x-k8s.io/owner-kind" // OwnerNameAnnotation is the annotation set on nodes identifying the owner name. OwnerNameAnnotation = "cluster.x-k8s.io/owner-name" // PausedAnnotation is an annotation that can be applied to any Cluster API // object to prevent a controller from processing a resource. // // Controllers working with Cluster API objects must check the existence of this annotation // on the reconciled object. PausedAnnotation = "cluster.x-k8s.io/paused" // DisableMachineCreateAnnotation is an annotation that can be used to signal a MachineSet to stop creating new machines. // It is utilized in the OnDelete MachineDeploymentStrategy to allow the MachineDeployment controller to scale down // older MachineSets when Machines are deleted and add the new replicas to the latest MachineSet. DisableMachineCreateAnnotation = "cluster.x-k8s.io/disable-machine-create" // WatchLabel is a label othat can be applied to any Cluster API object. // // Controllers which allow for selective reconciliation may check this label and proceed // with reconciliation of the object only if this label and a configured value is present. WatchLabel = "cluster.x-k8s.io/watch-filter" // DeleteMachineAnnotation marks control plane and worker nodes that will be given priority for deletion // when KCP or a machineset scales down. This annotation is given top priority on all delete policies. DeleteMachineAnnotation = "cluster.x-k8s.io/delete-machine" // TemplateClonedFromNameAnnotation is the infrastructure machine annotation that stores the name of the infrastructure template resource // that was cloned for the machine. This annotation is set only during cloning a template. Older/adopted machines will not have this annotation. TemplateClonedFromNameAnnotation = "cluster.x-k8s.io/cloned-from-name" // TemplateClonedFromGroupKindAnnotation is the infrastructure machine annotation that stores the group-kind of the infrastructure template resource // that was cloned for the machine. This annotation is set only during cloning a template. Older/adopted machines will not have this annotation. TemplateClonedFromGroupKindAnnotation = "cluster.x-k8s.io/cloned-from-groupkind" // MachineSkipRemediationAnnotation is the annotation used to mark the machines that should not be considered for remediation by MachineHealthCheck reconciler. MachineSkipRemediationAnnotation = "cluster.x-k8s.io/skip-remediation" // ClusterSecretType defines the type of secret created by core components. // Note: This is used by core CAPI, CAPBK, and KCP to determine whether a secret is created by the controllers // themselves or supplied by the user (e.g. bring your own certificates). ClusterSecretType corev1.SecretType = "cluster.x-k8s.io/secret" //nolint:gosec // InterruptibleLabel is the label used to mark the nodes that run on interruptible instances. InterruptibleLabel = "cluster.x-k8s.io/interruptible" // ManagedByAnnotation is an annotation that can be applied to InfraCluster resources to signify that // some external system is managing the cluster infrastructure. // // Provider InfraCluster controllers will ignore resources with this annotation. // An external controller must fulfill the contract of the InfraCluster resource. // External infrastructure providers should ensure that the annotation, once set, cannot be removed. ManagedByAnnotation = "cluster.x-k8s.io/managed-by" // TopologyDryRunAnnotation is an annotation that gets set on objects by the topology controller // only during a server side dry run apply operation. It is used for validating // update webhooks for objects which get updated by template rotation (e.g. InfrastructureMachineTemplate). // When the annotation is set and the admission request is a dry run, the webhook should // deny validation due to immutability. By that the request will succeed (without // any changes to the actual object because it is a dry run) and the topology controller // will receive the resulting object. TopologyDryRunAnnotation = "topology.cluster.x-k8s.io/dry-run" // ReplicasManagedByAnnotation is an annotation that indicates external (non-Cluster API) management of infra scaling. // The practical effect of this is that the capi "replica" count should be passively derived from the number of observed infra machines, // instead of being a source of truth for eventual consistency. // This annotation can be used to inform MachinePool status during in-progress scaling scenarios. ReplicasManagedByAnnotation = "cluster.x-k8s.io/replicas-managed-by" // VariableDefinitionFromInline indicates a patch or variable was defined in the `.spec` of a ClusterClass // rather than from an external patch extension. VariableDefinitionFromInline = "inline" )
const ( // DeletingReason (Severity=Info) documents a condition not in Status=True because the underlying object it is currently being deleted. DeletingReason = "Deleting" // DeletionFailedReason (Severity=Warning) documents a condition not in Status=True because the underlying object // encountered problems during deletion. This is a warning because the reconciler will retry deletion. DeletionFailedReason = "DeletionFailed" // DeletedReason (Severity=Info) documents a condition not in Status=True because the underlying object was deleted. DeletedReason = "Deleted" // IncorrectExternalRefReason (Severity=Error) documents a CAPI object with an incorrect external object reference. IncorrectExternalRefReason = "IncorrectExternalRef" )
Common ConditionReason used by Cluster API objects.
const ( // ControlPlaneInitializedCondition reports if the cluster's control plane has been initialized such that the // cluster's apiserver is reachable. If no Control Plane provider is in use this condition reports that at least one // control plane Machine has a node reference. Once this Condition is marked true, its value is never changed. See // the ControlPlaneReady condition for an indication of the current readiness of the cluster's control plane. ControlPlaneInitializedCondition ConditionType = "ControlPlaneInitialized" // MissingNodeRefReason (Severity=Info) documents a cluster waiting for at least one control plane Machine to have // its node reference populated. MissingNodeRefReason = "MissingNodeRef" // WaitingForControlPlaneProviderInitializedReason (Severity=Info) documents a cluster waiting for the control plane // provider to report successful control plane initialization. WaitingForControlPlaneProviderInitializedReason = "WaitingForControlPlaneProviderInitialized" // ControlPlaneReadyCondition reports the ready condition from the control plane object defined for this cluster. // This condition is mirrored from the Ready condition in the control plane ref object, and // the absence of this condition might signal problems in the reconcile external loops or the fact that // the control plane provider does not implement the Ready condition yet. ControlPlaneReadyCondition ConditionType = "ControlPlaneReady" // WaitingForControlPlaneFallbackReason (Severity=Info) documents a cluster waiting for the control plane // to be available. // NOTE: This reason is used only as a fallback when the control plane object is not reporting its own ready condition. WaitingForControlPlaneFallbackReason = "WaitingForControlPlane" // WaitingForControlPlaneAvailableReason (Severity=Info) documents a Cluster API object // waiting for the control plane machine to be available. // // NOTE: Having the control plane machine available is a pre-condition for joining additional control planes // or workers nodes. WaitingForControlPlaneAvailableReason = "WaitingForControlPlaneAvailable" )
const ( // BootstrapReadyCondition reports a summary of current status of the bootstrap object defined for this machine. // This condition is mirrored from the Ready condition in the bootstrap ref object, and // the absence of this condition might signal problems in the reconcile external loops or the fact that // the bootstrap provider does not implement the Ready condition yet. BootstrapReadyCondition ConditionType = "BootstrapReady" // WaitingForDataSecretFallbackReason (Severity=Info) documents a machine waiting for the bootstrap data secret // to be available. // NOTE: This reason is used only as a fallback when the bootstrap object is not reporting its own ready condition. WaitingForDataSecretFallbackReason = "WaitingForDataSecret" // DrainingSucceededCondition provide evidence of the status of the node drain operation which happens during the machine // deletion process. DrainingSucceededCondition ConditionType = "DrainingSucceeded" // DrainingReason (Severity=Info) documents a machine node being drained. DrainingReason = "Draining" // DrainingFailedReason (Severity=Warning) documents a machine node drain operation failed. DrainingFailedReason = "DrainingFailed" // PreDrainDeleteHookSucceededCondition reports a machine waiting for a PreDrainDeleteHook before being delete. PreDrainDeleteHookSucceededCondition ConditionType = "PreDrainDeleteHookSucceeded" // PreTerminateDeleteHookSucceededCondition reports a machine waiting for a PreDrainDeleteHook before being delete. PreTerminateDeleteHookSucceededCondition ConditionType = "PreTerminateDeleteHookSucceeded" // WaitingExternalHookReason (Severity=Info) provide evidence that we are waiting for an external hook to complete. WaitingExternalHookReason = "WaitingExternalHook" // VolumeDetachSucceededCondition reports a machine waiting for volumes to be detached. VolumeDetachSucceededCondition ConditionType = "VolumeDetachSucceeded" // WaitingForVolumeDetachReason (Severity=Info) provide evidence that a machine node waiting for volumes to be attached. WaitingForVolumeDetachReason = "WaitingForVolumeDetach" )
const ( // MachineHealthCheckSucceededCondition is set on machines that have passed a healthcheck by the MachineHealthCheck controller. // In the event that the health check fails it will be set to False. MachineHealthCheckSucceededCondition ConditionType = "HealthCheckSucceeded" // MachineHasFailureReason is the reason used when a machine has either a FailureReason or a FailureMessage set on its status. MachineHasFailureReason = "MachineHasFailure" // NodeStartupTimeoutReason is the reason used when a machine's node does not appear within the specified timeout. NodeStartupTimeoutReason = "NodeStartupTimeout" // UnhealthyNodeConditionReason is the reason used when a machine's node has one of the MachineHealthCheck's unhealthy conditions. UnhealthyNodeConditionReason = "UnhealthyNode" )
const ( // MachineOwnerRemediatedCondition is set on machines that have failed a healthcheck by the MachineHealthCheck controller. // MachineOwnerRemediatedCondition is set to False after a health check fails, but should be changed to True by the owning controller after remediation succeeds. MachineOwnerRemediatedCondition ConditionType = "OwnerRemediated" // WaitingForRemediationReason is the reason used when a machine fails a health check and remediation is needed. WaitingForRemediationReason = "WaitingForRemediation" // RemediationFailedReason is the reason used when a remediation owner fails to remediate an unhealthy machine. RemediationFailedReason = "RemediationFailed" // RemediationInProgressReason is the reason used when an unhealthy machine is being remediated by the remediation owner. RemediationInProgressReason = "RemediationInProgress" // ExternalRemediationTemplateAvailableCondition is set on machinehealthchecks when MachineHealthCheck controller uses external remediation. // ExternalRemediationTemplateAvailableCondition is set to false if external remediation template is not found. ExternalRemediationTemplateAvailableCondition ConditionType = "ExternalRemediationTemplateAvailable" // ExternalRemediationTemplateNotFoundReason is the reason used when a machine health check fails to find external remediation template. ExternalRemediationTemplateNotFoundReason = "ExternalRemediationTemplateNotFound" // ExternalRemediationRequestAvailableCondition is set on machinehealthchecks when MachineHealthCheck controller uses external remediation. // ExternalRemediationRequestAvailableCondition is set to false if creating external remediation request fails. ExternalRemediationRequestAvailableCondition ConditionType = "ExternalRemediationRequestAvailable" // ExternalRemediationRequestCreationFailedReason is the reason used when a machine health check fails to create external remediation request. ExternalRemediationRequestCreationFailedReason = "ExternalRemediationRequestCreationFailed" )
const ( // MachineNodeHealthyCondition provides info about the operational state of the Kubernetes node hosted on the machine by summarizing node conditions. // If the conditions defined in a Kubernetes node (i.e., NodeReady, NodeMemoryPressure, NodeDiskPressure, NodePIDPressure, and NodeNetworkUnavailable) are in a healthy state, it will be set to True. MachineNodeHealthyCondition ConditionType = "NodeHealthy" // WaitingForNodeRefReason (Severity=Info) documents a machine.spec.providerId is not assigned yet. WaitingForNodeRefReason = "WaitingForNodeRef" // NodeProvisioningReason (Severity=Info) documents machine in the process of provisioning a node. // NB. provisioning --> NodeRef == "". NodeProvisioningReason = "NodeProvisioning" // NodeNotFoundReason (Severity=Error) documents a machine's node has previously been observed but is now gone. // NB. provisioned --> NodeRef != "". NodeNotFoundReason = "NodeNotFound" // NodeConditionsFailedReason (Severity=Warning) documents a node is not in a healthy state due to the failed state of at least 1 Kubelet condition. NodeConditionsFailedReason = "NodeConditionsFailed" )
Conditions and condition Reasons for the Machine's Node object.
const ( // MachinesCreatedCondition documents that the machines controlled by the MachineSet are created. // When this condition is false, it indicates that there was an error when cloning the infrastructure/bootstrap template or // when generating the machine object. MachinesCreatedCondition ConditionType = "MachinesCreated" // MachinesReadyCondition reports an aggregate of current status of the machines controlled by the MachineSet. MachinesReadyCondition ConditionType = "MachinesReady" // BootstrapTemplateCloningFailedReason (Severity=Error) documents a MachineSet failing to // clone the bootstrap template. BootstrapTemplateCloningFailedReason = "BootstrapTemplateCloningFailed" // InfrastructureTemplateCloningFailedReason (Severity=Error) documents a MachineSet failing to // clone the infrastructure template. InfrastructureTemplateCloningFailedReason = "InfrastructureTemplateCloningFailed" // MachineCreationFailedReason (Severity=Error) documents a MachineSet failing to // generate a machine object. MachineCreationFailedReason = "MachineCreationFailed" // ResizedCondition documents a MachineSet is resizing the set of controlled machines. ResizedCondition ConditionType = "Resized" // ScalingUpReason (Severity=Info) documents a MachineSet is increasing the number of replicas. ScalingUpReason = "ScalingUp" // ScalingDownReason (Severity=Info) documents a MachineSet is decreasing the number of replicas. ScalingDownReason = "ScalingDown" )
const ( // TopologyReconciledCondition provides evidence about the reconciliation of a Cluster topology into // the managed objects of the Cluster. // Status false means that for any reason, the values defined in Cluster.spec.topology are not yet applied to // managed objects on the Cluster; status true means that Cluster.spec.topology have been applied to // the objects in the Cluster (but this does not imply those objects are already reconciled to the spec provided). TopologyReconciledCondition ConditionType = "TopologyReconciled" // TopologyReconcileFailedReason (Severity=Error) documents the reconciliation of a Cluster topology // failing due to an error. TopologyReconcileFailedReason = "TopologyReconcileFailed" // TopologyReconciledControlPlaneUpgradePendingReason (Severity=Info) documents reconciliation of a Cluster topology // not yet completed because Control Plane is not yet updated to match the desired topology spec. TopologyReconciledControlPlaneUpgradePendingReason = "ControlPlaneUpgradePending" // TopologyReconciledMachineDeploymentsUpgradePendingReason (Severity=Info) documents reconciliation of a Cluster topology // not yet completed because at least one of the MachineDeployments is not yet updated to match the desired topology spec. TopologyReconciledMachineDeploymentsUpgradePendingReason = "MachineDeploymentsUpgradePending" // TopologyReconciledMachineDeploymentsUpgradeDeferredReason (Severity=Info) documents reconciliation of a Cluster topology // not yet completed because the upgrade for at least one of the MachineDeployments has been deferred. TopologyReconciledMachineDeploymentsUpgradeDeferredReason = "MachineDeploymentsUpgradeDeferred" // TopologyReconciledHookBlockingReason (Severity=Info) documents reconciliation of a Cluster topology // not yet completed because at least one of the lifecycle hooks is blocking. TopologyReconciledHookBlockingReason = "LifecycleHookBlocking" // TopologyReconciledClusterClassNotReconciledReason (Severity=Info) documents reconciliation of a Cluster topology not // yet completed because the ClusterClass has not reconciled yet. If this condition persists there may be an issue // with the ClusterClass surfaced in the ClusterClass status or controller logs. TopologyReconciledClusterClassNotReconciledReason = "ClusterClassNotReconciled" )
Conditions and condition reasons for Clusters with a managed Topology.
const ( // MachinePhasePending is the first state a Machine is assigned by // Cluster API Machine controller after being created. MachinePhasePending = MachinePhase("Pending") // MachinePhaseProvisioning is the state when the // Machine infrastructure is being created. MachinePhaseProvisioning = MachinePhase("Provisioning") // MachinePhaseProvisioned is the state when its // infrastructure has been created and configured. MachinePhaseProvisioned = MachinePhase("Provisioned") // MachinePhaseRunning is the Machine state when it has // become a Kubernetes Node in a Ready state. MachinePhaseRunning = MachinePhase("Running") // MachinePhaseDeleting is the Machine state when a delete // request has been sent to the API Server, // but its infrastructure has not yet been fully deleted. MachinePhaseDeleting = MachinePhase("Deleting") // MachinePhaseDeleted is the Machine state when the object // and the related infrastructure is deleted and // ready to be garbage collected by the API Server. MachinePhaseDeleted = MachinePhase("Deleted") // MachinePhaseFailed is the Machine state when the system // might require user intervention. MachinePhaseFailed = MachinePhase("Failed") // MachinePhaseUnknown is returned if the Machine state cannot be determined. MachinePhaseUnknown = MachinePhase("Unknown") )
const ( // MachineFinalizer is set on PrepareForCreate callback. MachineFinalizer = "machine.cluster.x-k8s.io" // MachineControlPlaneLabel is the label set on machines or related objects that are part of a control plane. MachineControlPlaneLabel = "cluster.x-k8s.io/control-plane" // ExcludeNodeDrainingAnnotation annotation explicitly skips node draining if set. ExcludeNodeDrainingAnnotation = "machine.cluster.x-k8s.io/exclude-node-draining" // ExcludeWaitForNodeVolumeDetachAnnotation annotation explicitly skips the waiting for node volume detaching if set. ExcludeWaitForNodeVolumeDetachAnnotation = "machine.cluster.x-k8s.io/exclude-wait-for-node-volume-detach" // MachineSetNameLabel is the label set on machines if they're controlled by MachineSet. // Note: The value of this label may be a hash if the MachineSet name is longer than 63 characters. MachineSetNameLabel = "cluster.x-k8s.io/set-name" // MachineDeploymentNameLabel is the label set on machines if they're controlled by MachineDeployment. MachineDeploymentNameLabel = "cluster.x-k8s.io/deployment-name" // MachineControlPlaneNameLabel is the label set on machines if they're controlled by a ControlPlane. // Note: The value of this label may be a hash if the control plane name is longer than 63 characters. MachineControlPlaneNameLabel = "cluster.x-k8s.io/control-plane-name" // PreDrainDeleteHookAnnotationPrefix annotation specifies the prefix we // search each annotation for during the pre-drain.delete lifecycle hook // to pause reconciliation of deletion. These hooks will prevent removal of // draining the associated node until all are removed. PreDrainDeleteHookAnnotationPrefix = "pre-drain.delete.hook.machine.cluster.x-k8s.io" // PreTerminateDeleteHookAnnotationPrefix annotation specifies the prefix we // search each annotation for during the pre-terminate.delete lifecycle hook // to pause reconciliation of deletion. These hooks will prevent removal of // an instance from an infrastructure provider until all are removed. PreTerminateDeleteHookAnnotationPrefix = "pre-terminate.delete.hook.machine.cluster.x-k8s.io" // MachineCertificatesExpiryDateAnnotation annotation specifies the expiry date of the machine certificates in RFC3339 format. // This annotation can be used on control plane machines to trigger rollout before certificates expire. // This annotation can be set on BootstrapConfig or Machine objects. The value set on the Machine object takes precedence. // This annotation can only be used on Control Plane Machines. MachineCertificatesExpiryDateAnnotation = "machine.cluster.x-k8s.io/certificates-expiry" // NodeRoleLabelPrefix is one of the CAPI managed Node label prefixes. NodeRoleLabelPrefix = "node-role.kubernetes.io" // NodeRestrictionLabelDomain is one of the CAPI managed Node label domains. NodeRestrictionLabelDomain = "node-restriction.kubernetes.io" // ManagedNodeLabelDomain is one of the CAPI managed Node label domains. ManagedNodeLabelDomain = "node.cluster.x-k8s.io" )
const ( // RollingUpdateMachineDeploymentStrategyType replaces the old MachineSet by new one using rolling update // i.e. gradually scale down the old MachineSet and scale up the new one. RollingUpdateMachineDeploymentStrategyType MachineDeploymentStrategyType = "RollingUpdate" // OnDeleteMachineDeploymentStrategyType replaces old MachineSets when the deletion of the associated machines are completed. OnDeleteMachineDeploymentStrategyType MachineDeploymentStrategyType = "OnDelete" // RevisionAnnotation is the revision annotation of a machine deployment's machine sets which records its rollout sequence. RevisionAnnotation = "machinedeployment.clusters.x-k8s.io/revision" // RevisionHistoryAnnotation maintains the history of all old revisions that a machine set has served for a machine deployment. RevisionHistoryAnnotation = "machinedeployment.clusters.x-k8s.io/revision-history" // DesiredReplicasAnnotation is the desired replicas for a machine deployment recorded as an annotation // in its machine sets. Helps in separating scaling events from the rollout process and for // determining if the new machine set for a deployment is really saturated. DesiredReplicasAnnotation = "machinedeployment.clusters.x-k8s.io/desired-replicas" // MaxReplicasAnnotation is the maximum replicas a deployment can have at a given point, which // is machinedeployment.spec.replicas + maxSurge. Used by the underlying machine sets to estimate their // proportions in case the deployment has surge replicas. MaxReplicasAnnotation = "machinedeployment.clusters.x-k8s.io/max-replicas" // MachineDeploymentUniqueLabel is used to uniquely identify the Machines of a MachineSet. // The MachineDeployment controller will set this label on a MachineSet when it is created. // The label is also applied to the Machines of the MachineSet and used in the MachineSet selector. // Note: For the lifetime of the MachineSet the label's value has to stay the same, otherwise the // MachineSet selector would no longer match its Machines. // Note: In previous Cluster API versions (< v1.4.0), the label value was the hash of the full machine template. // With the introduction of in-place mutation the machine template of the MachineSet can change. // Because of that it is impossible that the label's value to always be the hash of the full machine template. // (Because the hash changes when the machine template changes). // As a result, we use the hash of the machine template while ignoring all in-place mutable fields, i.e. the // machine template with only fields that could trigger a rollout for the machine-template-hash, making it // independent of the changes to any in-place mutable fields. // A random string is appended at the end of the label value (label value format is "<hash>-<random string>")) // to distinguish duplicate MachineSets that have the exact same spec but were created as a result of rolloutAfter. MachineDeploymentUniqueLabel = "machine-template-hash" )
const ( // MachineDeploymentPhaseScalingUp indicates the MachineDeployment is scaling up. MachineDeploymentPhaseScalingUp = MachineDeploymentPhase("ScalingUp") // MachineDeploymentPhaseScalingDown indicates the MachineDeployment is scaling down. MachineDeploymentPhaseScalingDown = MachineDeploymentPhase("ScalingDown") // MachineDeploymentPhaseRunning indicates scaling has completed and all Machines are running. MachineDeploymentPhaseRunning = MachineDeploymentPhase("Running") // MachineDeploymentPhaseFailed indicates there was a problem scaling and user intervention might be required. MachineDeploymentPhaseFailed = MachineDeploymentPhase("Failed") // MachineDeploymentPhaseUnknown indicates the state of the MachineDeployment cannot be determined. MachineDeploymentPhaseUnknown = MachineDeploymentPhase("Unknown") )
const ( // ClusterFinalizer is the finalizer used by the cluster controller to // cleanup the cluster resources when a Cluster is being deleted. ClusterFinalizer = "cluster.cluster.x-k8s.io" )
const ( // MachineDeploymentTopologyFinalizer is the finalizer used by the topology MachineDeployment controller to // clean up referenced template resources if necessary when a MachineDeployment is being deleted. MachineDeploymentTopologyFinalizer = "machinedeployment.topology.cluster.x-k8s.io" )
const ( // MachineSetTopologyFinalizer is the finalizer used by the topology MachineDeployment controller to // clean up referenced template resources if necessary when a MachineSet is being deleted. MachineSetTopologyFinalizer = "machineset.topology.cluster.x-k8s.io" )
const (
// TemplateSuffix is the object kind suffix used by template types.
TemplateSuffix = "Template"
)
Variables ¶
var ( // GroupVersion is group version used to register these objects. GroupVersion = schema.GroupVersion{Group: "cluster.x-k8s.io", Version: "v1beta1"} // 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 )
var ( // DefaultNodeStartupTimeout is the time allowed for a node to start up. // Can be made longer as part of spec if required for particular provider. // 10 minutes should allow the instance to start and the node to join the // cluster on most providers. DefaultNodeStartupTimeout = metav1.Duration{Duration: 10 * time.Minute} )
var NodeUninitializedTaint = corev1.Taint{ Key: "node.cluster.x-k8s.io/uninitialized", Effect: corev1.TaintEffectNoSchedule, }
NodeUninitializedTaint can be added to Nodes at creation by the bootstrap provider, e.g. the KubeadmBootstrap provider will add the taint. This taint is used to prevent workloads to be scheduled on Nodes before the node is initialized by Cluster API. As of today the Node initialization consists of syncing labels from Machines to Nodes. Once the labels have been initially synced the taint is removed from the Node.
var ( // ZeroDuration is a zero value of the metav1.Duration type. ZeroDuration = metav1.Duration{} )
Functions ¶
func GetOpenAPIDefinitions ¶ added in v1.2.0
func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenAPIDefinition
func MachineDeploymentDefaulter ¶ added in v1.4.0
func MachineDeploymentDefaulter(scheme *runtime.Scheme) webhook.CustomDefaulter
MachineDeploymentDefaulter creates a new CustomDefaulter for MachineDeployments.
func SetMinNodeStartupTimeout ¶
SetMinNodeStartupTimeout allows users to optionally set a custom timeout for the validation webhook.
This function is mostly used within envtest (integration tests), and should never be used in a production environment.
Types ¶
type APIEndpoint ¶
type APIEndpoint struct { // The hostname on which the API server is serving. Host string `json:"host"` // The port on which the API server is serving. Port int32 `json:"port"` }
APIEndpoint represents a reachable Kubernetes API endpoint.
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.
func (APIEndpoint) IsValid ¶
func (v APIEndpoint) IsValid() bool
IsValid returns true if both host and port are non-zero values.
func (APIEndpoint) IsZero ¶
func (v APIEndpoint) IsZero() bool
IsZero returns true if both host and port are zero values.
func (APIEndpoint) String ¶
func (v APIEndpoint) String() string
String returns a formatted version HOST:PORT of this APIEndpoint.
type Bootstrap ¶
type Bootstrap struct { // ConfigRef is a reference to a bootstrap provider-specific resource // that holds configuration details. The reference is optional to // allow users/operators to specify Bootstrap.DataSecretName without // the need of a controller. // +optional ConfigRef *corev1.ObjectReference `json:"configRef,omitempty"` // DataSecretName is the name of the secret that stores the bootstrap data script. // If nil, the Machine should remain in the Pending state. // +optional DataSecretName *string `json:"dataSecretName,omitempty"` }
Bootstrap encapsulates fields to configure the Machine’s bootstrapping mechanism.
func (*Bootstrap) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Bootstrap.
func (*Bootstrap) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Cluster ¶
type Cluster struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` Spec ClusterSpec `json:"spec,omitempty"` Status ClusterStatus `json:"status,omitempty"` }
Cluster is the Schema for the clusters API.
func (*Cluster) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Cluster.
func (*Cluster) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Cluster) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*Cluster) GetConditions ¶
func (c *Cluster) GetConditions() Conditions
GetConditions returns the set of conditions for this object.
func (*Cluster) GetIPFamily ¶
func (c *Cluster) GetIPFamily() (ClusterIPFamily, error)
GetIPFamily returns a ClusterIPFamily from the configuration provided. Note: IPFamily is not a concept in Kubernetes. It was originally introduced in CAPI for CAPD. IPFamily may be dropped in a future release. More details at https://github.com/kubernetes-sigs/cluster-api/issues/7521
func (*Cluster) SetConditions ¶
func (c *Cluster) SetConditions(conditions Conditions)
SetConditions sets the conditions on this object.
type ClusterClass ¶
type ClusterClass struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` Spec ClusterClassSpec `json:"spec,omitempty"` Status ClusterClassStatus `json:"status,omitempty"` }
ClusterClass is a template which can be used to create managed topologies.
func (*ClusterClass) DeepCopy ¶
func (in *ClusterClass) DeepCopy() *ClusterClass
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterClass.
func (*ClusterClass) DeepCopyInto ¶
func (in *ClusterClass) DeepCopyInto(out *ClusterClass)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ClusterClass) DeepCopyObject ¶
func (in *ClusterClass) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*ClusterClass) GetConditions ¶ added in v1.3.0
func (c *ClusterClass) GetConditions() Conditions
GetConditions returns the set of conditions for this object.
func (*ClusterClass) Hub ¶
func (*ClusterClass) Hub()
func (*ClusterClass) SetConditions ¶ added in v1.3.0
func (c *ClusterClass) SetConditions(conditions Conditions)
SetConditions sets the conditions on this object.
type ClusterClassList ¶
type ClusterClassList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` Items []ClusterClass `json:"items"` }
ClusterClassList contains a list of Cluster.
func (*ClusterClassList) DeepCopy ¶
func (in *ClusterClassList) DeepCopy() *ClusterClassList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterClassList.
func (*ClusterClassList) DeepCopyInto ¶
func (in *ClusterClassList) DeepCopyInto(out *ClusterClassList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ClusterClassList) DeepCopyObject ¶
func (in *ClusterClassList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*ClusterClassList) Hub ¶
func (*ClusterClassList) Hub()
type ClusterClassPatch ¶
type ClusterClassPatch struct { // Name of the patch. Name string `json:"name"` // Description is a human-readable description of this patch. Description string `json:"description,omitempty"` // EnabledIf is a Go template to be used to calculate if a patch should be enabled. // It can reference variables defined in .spec.variables and builtin variables. // The patch will be enabled if the template evaluates to `true`, otherwise it will // be disabled. // If EnabledIf is not set, the patch will be enabled per default. // +optional EnabledIf *string `json:"enabledIf,omitempty"` // Definitions define inline patches. // Note: Patches will be applied in the order of the array. // Note: Exactly one of Definitions or External must be set. // +optional Definitions []PatchDefinition `json:"definitions,omitempty"` // External defines an external patch. // Note: Exactly one of Definitions or External must be set. // +optional External *ExternalPatchDefinition `json:"external,omitempty"` }
ClusterClassPatch defines a patch which is applied to customize the referenced templates.
func (*ClusterClassPatch) DeepCopy ¶
func (in *ClusterClassPatch) DeepCopy() *ClusterClassPatch
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterClassPatch.
func (*ClusterClassPatch) DeepCopyInto ¶
func (in *ClusterClassPatch) DeepCopyInto(out *ClusterClassPatch)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ClusterClassSpec ¶
type ClusterClassSpec struct { // Infrastructure is a reference to a provider-specific template that holds // the details for provisioning infrastructure specific cluster // for the underlying provider. // The underlying provider is responsible for the implementation // of the template to an infrastructure cluster. // +optional Infrastructure LocalObjectTemplate `json:"infrastructure,omitempty"` // ControlPlane is a reference to a local struct that holds the details // for provisioning the Control Plane for the Cluster. // +optional ControlPlane ControlPlaneClass `json:"controlPlane,omitempty"` // Workers describes the worker nodes for the cluster. // It is a collection of node types which can be used to create // the worker nodes of the cluster. // +optional Workers WorkersClass `json:"workers,omitempty"` // Variables defines the variables which can be configured // in the Cluster topology and are then used in patches. // +optional Variables []ClusterClassVariable `json:"variables,omitempty"` // Patches defines the patches which are applied to customize // referenced templates of a ClusterClass. // Note: Patches will be applied in the order of the array. // +optional Patches []ClusterClassPatch `json:"patches,omitempty"` }
ClusterClassSpec describes the desired state of the ClusterClass.
func (*ClusterClassSpec) DeepCopy ¶
func (in *ClusterClassSpec) DeepCopy() *ClusterClassSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterClassSpec.
func (*ClusterClassSpec) DeepCopyInto ¶
func (in *ClusterClassSpec) DeepCopyInto(out *ClusterClassSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ClusterClassStatus ¶ added in v1.3.0
type ClusterClassStatus struct { // Variables is a list of ClusterClassStatusVariable that are defined for the ClusterClass. // +optional Variables []ClusterClassStatusVariable `json:"variables,omitempty"` // Conditions defines current observed state of the ClusterClass. // +optional Conditions Conditions `json:"conditions,omitempty"` // ObservedGeneration is the latest generation observed by the controller. // +optional ObservedGeneration int64 `json:"observedGeneration,omitempty"` }
ClusterClassStatus defines the observed state of the ClusterClass.
func (*ClusterClassStatus) DeepCopy ¶ added in v1.3.0
func (in *ClusterClassStatus) DeepCopy() *ClusterClassStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterClassStatus.
func (*ClusterClassStatus) DeepCopyInto ¶ added in v1.3.0
func (in *ClusterClassStatus) DeepCopyInto(out *ClusterClassStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ClusterClassStatusVariable ¶ added in v1.4.0
type ClusterClassStatusVariable struct { // Name is the name of the variable. Name string `json:"name"` // DefinitionsConflict specifies whether or not there are conflicting definitions for a single variable name. // +optional DefinitionsConflict bool `json:"definitionsConflict"` // Definitions is a list of definitions for a variable. Definitions []ClusterClassStatusVariableDefinition `json:"definitions"` }
ClusterClassStatusVariable defines a variable which appears in the status of a ClusterClass.
func (*ClusterClassStatusVariable) DeepCopy ¶ added in v1.4.0
func (in *ClusterClassStatusVariable) DeepCopy() *ClusterClassStatusVariable
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterClassStatusVariable.
func (*ClusterClassStatusVariable) DeepCopyInto ¶ added in v1.4.0
func (in *ClusterClassStatusVariable) DeepCopyInto(out *ClusterClassStatusVariable)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ClusterClassStatusVariableDefinition ¶ added in v1.4.0
type ClusterClassStatusVariableDefinition struct { // From specifies the origin of the variable definition. // This will be `inline` for variables defined in the ClusterClass or the name of a patch defined in the ClusterClass // for variables discovered from a DiscoverVariables runtime extensions. From string `json:"from"` // Required specifies if the variable is required. // Note: this applies to the variable as a whole and thus the // top-level object defined in the schema. If nested fields are // required, this will be specified inside the schema. Required bool `json:"required"` // Schema defines the schema of the variable. Schema VariableSchema `json:"schema"` }
ClusterClassStatusVariableDefinition defines a variable which appears in the status of a ClusterClass.
func (*ClusterClassStatusVariableDefinition) DeepCopy ¶ added in v1.4.0
func (in *ClusterClassStatusVariableDefinition) DeepCopy() *ClusterClassStatusVariableDefinition
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterClassStatusVariableDefinition.
func (*ClusterClassStatusVariableDefinition) DeepCopyInto ¶ added in v1.4.0
func (in *ClusterClassStatusVariableDefinition) DeepCopyInto(out *ClusterClassStatusVariableDefinition)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ClusterClassVariable ¶
type ClusterClassVariable struct { // Name of the variable. Name string `json:"name"` // Required specifies if the variable is required. // Note: this applies to the variable as a whole and thus the // top-level object defined in the schema. If nested fields are // required, this will be specified inside the schema. Required bool `json:"required"` // Schema defines the schema of the variable. Schema VariableSchema `json:"schema"` }
ClusterClassVariable defines a variable which can be configured in the Cluster topology and used in patches.
func (*ClusterClassVariable) DeepCopy ¶
func (in *ClusterClassVariable) DeepCopy() *ClusterClassVariable
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterClassVariable.
func (*ClusterClassVariable) DeepCopyInto ¶
func (in *ClusterClassVariable) DeepCopyInto(out *ClusterClassVariable)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ClusterIPFamily ¶
type ClusterIPFamily int
ClusterIPFamily defines the types of supported IP families.
const ( InvalidIPFamily ClusterIPFamily = iota IPv4IPFamily IPv6IPFamily DualStackIPFamily )
Define the ClusterIPFamily constants.
func (ClusterIPFamily) String ¶
func (f ClusterIPFamily) String() string
type ClusterList ¶
type ClusterList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` Items []Cluster `json:"items"` }
ClusterList contains a list of Cluster.
func (*ClusterList) DeepCopy ¶
func (in *ClusterList) DeepCopy() *ClusterList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterList.
func (*ClusterList) DeepCopyInto ¶
func (in *ClusterList) DeepCopyInto(out *ClusterList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ClusterList) DeepCopyObject ¶
func (in *ClusterList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*ClusterList) Hub ¶
func (*ClusterList) Hub()
type ClusterNetwork ¶
type ClusterNetwork struct { // APIServerPort specifies the port the API Server should bind to. // Defaults to 6443. // +optional APIServerPort *int32 `json:"apiServerPort,omitempty"` // The network ranges from which service VIPs are allocated. // +optional Services *NetworkRanges `json:"services,omitempty"` // The network ranges from which Pod networks are allocated. // +optional Pods *NetworkRanges `json:"pods,omitempty"` // Domain name for services. // +optional ServiceDomain string `json:"serviceDomain,omitempty"` }
ClusterNetwork specifies the different networking parameters for a cluster.
func (*ClusterNetwork) DeepCopy ¶
func (in *ClusterNetwork) DeepCopy() *ClusterNetwork
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterNetwork.
func (*ClusterNetwork) DeepCopyInto ¶
func (in *ClusterNetwork) DeepCopyInto(out *ClusterNetwork)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ClusterPhase ¶
type ClusterPhase string
ClusterPhase is a string representation of a Cluster Phase.
This type is a high-level indicator of the status of the Cluster as it is provisioned, from the API user’s perspective.
The value should not be interpreted by any software components as a reliable indication of the actual state of the Cluster, and controllers should not use the Cluster Phase field value when making decisions about what action to take.
Controllers should always look at the actual state of the Cluster’s fields to make those decisions.
type ClusterSpec ¶
type ClusterSpec struct { // Paused can be used to prevent controllers from processing the Cluster and all its associated objects. // +optional Paused bool `json:"paused,omitempty"` // Cluster network configuration. // +optional ClusterNetwork *ClusterNetwork `json:"clusterNetwork,omitempty"` // ControlPlaneEndpoint represents the endpoint used to communicate with the control plane. // +optional ControlPlaneEndpoint APIEndpoint `json:"controlPlaneEndpoint,omitempty"` // ControlPlaneRef is an optional reference to a provider-specific resource that holds // the details for provisioning the Control Plane for a Cluster. // +optional ControlPlaneRef *corev1.ObjectReference `json:"controlPlaneRef,omitempty"` // InfrastructureRef is a reference to a provider-specific resource that holds the details // for provisioning infrastructure for a cluster in said provider. // +optional InfrastructureRef *corev1.ObjectReference `json:"infrastructureRef,omitempty"` // This encapsulates the topology for the cluster. // NOTE: It is required to enable the ClusterTopology // feature gate flag to activate managed topologies support; // this feature is highly experimental, and parts of it might still be not implemented. // +optional Topology *Topology `json:"topology,omitempty"` }
ClusterSpec defines the desired state of Cluster.
func (*ClusterSpec) DeepCopy ¶
func (in *ClusterSpec) DeepCopy() *ClusterSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterSpec.
func (*ClusterSpec) DeepCopyInto ¶
func (in *ClusterSpec) DeepCopyInto(out *ClusterSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ClusterStatus ¶
type ClusterStatus struct { // FailureDomains is a slice of failure domain objects synced from the infrastructure provider. // +optional FailureDomains FailureDomains `json:"failureDomains,omitempty"` // FailureReason indicates that there is a fatal problem reconciling the // state, and will be set to a token value suitable for // programmatic interpretation. // +optional FailureReason *capierrors.ClusterStatusError `json:"failureReason,omitempty"` // FailureMessage indicates that there is a fatal problem reconciling the // state, and will be set to a descriptive error message. // +optional FailureMessage *string `json:"failureMessage,omitempty"` // Phase represents the current phase of cluster actuation. // E.g. Pending, Running, Terminating, Failed etc. // +optional Phase string `json:"phase,omitempty"` // InfrastructureReady is the state of the infrastructure provider. // +optional InfrastructureReady bool `json:"infrastructureReady"` // ControlPlaneReady defines if the control plane is ready. // +optional ControlPlaneReady bool `json:"controlPlaneReady"` // Conditions defines current service state of the cluster. // +optional Conditions Conditions `json:"conditions,omitempty"` // ObservedGeneration is the latest generation observed by the controller. // +optional ObservedGeneration int64 `json:"observedGeneration,omitempty"` }
ClusterStatus defines the observed state of Cluster.
func (*ClusterStatus) DeepCopy ¶
func (in *ClusterStatus) DeepCopy() *ClusterStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterStatus.
func (*ClusterStatus) DeepCopyInto ¶
func (in *ClusterStatus) DeepCopyInto(out *ClusterStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ClusterStatus) GetTypedPhase ¶
func (c *ClusterStatus) GetTypedPhase() ClusterPhase
GetTypedPhase attempts to parse the Phase field and return the typed ClusterPhase representation as described in `machine_phase_types.go`.
func (*ClusterStatus) SetTypedPhase ¶
func (c *ClusterStatus) SetTypedPhase(p ClusterPhase)
SetTypedPhase sets the Phase field to the string representation of ClusterPhase.
type ClusterVariable ¶
type ClusterVariable struct { // Name of the variable. Name string `json:"name"` // DefinitionFrom specifies where the definition of this Variable is from. DefinitionFrom is `inline` when the // definition is from the ClusterClass `.spec.variables` or the name of a patch defined in the ClusterClass // `.spec.patches` where the patch is external and provides external variables. // This field is mandatory if the variable has `DefinitionsConflict: true` in ClusterClass `status.variables[]` // +optional DefinitionFrom string `json:"definitionFrom,omitempty"` // Value of the variable. // Note: the value will be validated against the schema of the corresponding ClusterClassVariable // from the ClusterClass. // Note: We have to use apiextensionsv1.JSON instead of a custom JSON type, because controller-tools has a // hard-coded schema for apiextensionsv1.JSON which cannot be produced by another type via controller-tools, // i.e. it is not possible to have no type field. // Ref: https://github.com/kubernetes-sigs/controller-tools/blob/d0e03a142d0ecdd5491593e941ee1d6b5d91dba6/pkg/crd/known_types.go#L106-L111 Value apiextensionsv1.JSON `json:"value"` }
ClusterVariable can be used to customize the Cluster through patches. Each ClusterVariable is associated with a Variable definition in the ClusterClass `status` variables.
func (*ClusterVariable) DeepCopy ¶
func (in *ClusterVariable) DeepCopy() *ClusterVariable
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterVariable.
func (*ClusterVariable) DeepCopyInto ¶
func (in *ClusterVariable) DeepCopyInto(out *ClusterVariable)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Condition ¶
type Condition struct { // Type of condition in CamelCase or in foo.example.com/CamelCase. // Many .condition.type values are consistent across resources like Available, but because arbitrary conditions // can be useful (see .node.status.conditions), the ability to deconflict is important. Type ConditionType `json:"type"` // Status of the condition, one of True, False, Unknown. Status corev1.ConditionStatus `json:"status"` // Severity provides an explicit classification of Reason code, so the users or machines can immediately // understand the current situation and act accordingly. // The Severity field MUST be set only when Status=False. // +optional Severity ConditionSeverity `json:"severity,omitempty"` // Last time the condition transitioned from one status to another. // This should be when the underlying condition changed. If that is not known, then using the time when // the API field changed is acceptable. LastTransitionTime metav1.Time `json:"lastTransitionTime"` // The reason for the condition's last transition in CamelCase. // The specific API may choose whether or not this field is considered a guaranteed API. // This field may not be empty. // +optional Reason string `json:"reason,omitempty"` // A human readable message indicating details about the transition. // This field may be empty. // +optional Message string `json:"message,omitempty"` }
Condition defines an observation of a Cluster API resource operational state.
func (*Condition) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Condition.
func (*Condition) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ConditionSeverity ¶
type ConditionSeverity string
ConditionSeverity expresses the severity of a Condition Type failing.
const ( // ConditionSeverityError specifies that a condition with `Status=False` is an error. ConditionSeverityError ConditionSeverity = "Error" // ConditionSeverityWarning specifies that a condition with `Status=False` is a warning. ConditionSeverityWarning ConditionSeverity = "Warning" // ConditionSeverityInfo specifies that a condition with `Status=False` is informative. ConditionSeverityInfo ConditionSeverity = "Info" // ConditionSeverityNone should apply only to conditions with `Status=True`. ConditionSeverityNone ConditionSeverity = "" )
type ConditionType ¶
type ConditionType string
ConditionType is a valid value for Condition.Type.
const ( // InfrastructureReadyCondition reports a summary of current status of the infrastructure object defined for this cluster/machine/machinepool. // This condition is mirrored from the Ready condition in the infrastructure ref object, and // the absence of this condition might signal problems in the reconcile external loops or the fact that // the infrastructure provider does not implement the Ready condition yet. InfrastructureReadyCondition ConditionType = "InfrastructureReady" // WaitingForInfrastructureFallbackReason (Severity=Info) documents a cluster/machine/machinepool waiting for the underlying infrastructure // to be available. // NOTE: This reason is used only as a fallback when the infrastructure object is not reporting its own ready condition. WaitingForInfrastructureFallbackReason = "WaitingForInfrastructure" )
const ( // ClusterClassVariablesReconciledCondition reports if the ClusterClass variables, including both inline and external // variables, have been successfully reconciled. // This signals that the ClusterClass is ready to be used to default and validate variables on Clusters using // this ClusterClass. ClusterClassVariablesReconciledCondition ConditionType = "VariablesReconciled" // VariableDiscoveryFailedReason (Severity=Error) documents a ClusterClass with VariableDiscovery extensions that // failed. VariableDiscoveryFailedReason = "VariableDiscoveryFailed" )
Conditions and condition Reasons for the ClusterClass object.
const ( // RemediationAllowedCondition is set on MachineHealthChecks to show the status of whether the MachineHealthCheck is // allowed to remediate any Machines or whether it is blocked from remediating any further. RemediationAllowedCondition ConditionType = "RemediationAllowed" // TooManyUnhealthyReason is the reason used when too many Machines are unhealthy and the MachineHealthCheck is blocked // from making any further remediations. TooManyUnhealthyReason = "TooManyUnhealthy" )
const ( // MachineDeploymentAvailableCondition means the MachineDeployment is available, that is, at least the minimum available // machines required (i.e. Spec.Replicas-MaxUnavailable when MachineDeploymentStrategyType = RollingUpdate) are up and running for at least minReadySeconds. MachineDeploymentAvailableCondition ConditionType = "Available" // WaitingForAvailableMachinesReason (Severity=Warning) reflects the fact that the required minimum number of machines for a machinedeployment are not available. WaitingForAvailableMachinesReason = "WaitingForAvailableMachines" )
const ( // ClusterClassRefVersionsUpToDateCondition documents if the references in the ClusterClass are // up-to-date (i.e. they are using the latest apiVersion of the current Cluster API contract from // the corresponding CRD). ClusterClassRefVersionsUpToDateCondition ConditionType = "RefVersionsUpToDate" // ClusterClassOutdatedRefVersionsReason (Severity=Warning) that the references in the ClusterClass are not // up-to-date (i.e. they are not using the latest apiVersion of the current Cluster API contract from // the corresponding CRD). ClusterClassOutdatedRefVersionsReason = "OutdatedRefVersions" )
Conditions and condition reasons for ClusterClass.
const ( // ReadyCondition defines the Ready condition type that summarizes the operational state of a Cluster API object. ReadyCondition ConditionType = "Ready" )
Common ConditionTypes used by Cluster API objects.
type Conditions ¶
type Conditions []Condition
Conditions provide observations of the operational state of a Cluster API resource.
func (Conditions) DeepCopy ¶
func (in Conditions) DeepCopy() Conditions
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Conditions.
func (Conditions) DeepCopyInto ¶
func (in Conditions) DeepCopyInto(out *Conditions)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ControlPlaneClass ¶
type ControlPlaneClass struct { // Metadata is the metadata applied to the ControlPlane and the Machines of the ControlPlane // if the ControlPlaneTemplate referenced is machine based. If not, it is applied only to the // ControlPlane. // At runtime this metadata is merged with the corresponding metadata from the topology. // // This field is supported if and only if the control plane provider template // referenced is Machine based. // +optional Metadata ObjectMeta `json:"metadata,omitempty"` // LocalObjectTemplate contains the reference to the control plane provider. LocalObjectTemplate `json:",inline"` // MachineInfrastructure defines the metadata and infrastructure information // for control plane machines. // // This field is supported if and only if the control plane provider template // referenced above is Machine based and supports setting replicas. // // +optional MachineInfrastructure *LocalObjectTemplate `json:"machineInfrastructure,omitempty"` // MachineHealthCheck defines a MachineHealthCheck for this ControlPlaneClass. // This field is supported if and only if the ControlPlane provider template // referenced above is Machine based and supports setting replicas. // +optional MachineHealthCheck *MachineHealthCheckClass `json:"machineHealthCheck,omitempty"` // NodeDrainTimeout is the total amount of time that the controller will spend on draining a node. // The default value is 0, meaning that the node can be drained without any time limitations. // NOTE: NodeDrainTimeout is different from `kubectl drain --timeout` // NOTE: This value can be overridden while defining a Cluster.Topology. // +optional NodeDrainTimeout *metav1.Duration `json:"nodeDrainTimeout,omitempty"` // NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes // to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations. // NOTE: This value can be overridden while defining a Cluster.Topology. // +optional NodeVolumeDetachTimeout *metav1.Duration `json:"nodeVolumeDetachTimeout,omitempty"` // NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine // hosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely. // Defaults to 10 seconds. // NOTE: This value can be overridden while defining a Cluster.Topology. // +optional NodeDeletionTimeout *metav1.Duration `json:"nodeDeletionTimeout,omitempty"` }
ControlPlaneClass defines the class for the control plane.
func (*ControlPlaneClass) DeepCopy ¶
func (in *ControlPlaneClass) DeepCopy() *ControlPlaneClass
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControlPlaneClass.
func (*ControlPlaneClass) DeepCopyInto ¶
func (in *ControlPlaneClass) DeepCopyInto(out *ControlPlaneClass)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ControlPlaneTopology ¶
type ControlPlaneTopology struct { // Metadata is the metadata applied to the ControlPlane and the Machines of the ControlPlane // if the ControlPlaneTemplate referenced by the ClusterClass is machine based. If not, it // is applied only to the ControlPlane. // At runtime this metadata is merged with the corresponding metadata from the ClusterClass. // +optional Metadata ObjectMeta `json:"metadata,omitempty"` // Replicas is the number of control plane nodes. // If the value is nil, the ControlPlane object is created without the number of Replicas // and it's assumed that the control plane controller does not implement support for this field. // When specified against a control plane provider that lacks support for this field, this value will be ignored. // +optional Replicas *int32 `json:"replicas,omitempty"` // MachineHealthCheck allows to enable, disable and override // the MachineHealthCheck configuration in the ClusterClass for this control plane. // +optional MachineHealthCheck *MachineHealthCheckTopology `json:"machineHealthCheck,omitempty"` // NodeDrainTimeout is the total amount of time that the controller will spend on draining a node. // The default value is 0, meaning that the node can be drained without any time limitations. // NOTE: NodeDrainTimeout is different from `kubectl drain --timeout` // +optional NodeDrainTimeout *metav1.Duration `json:"nodeDrainTimeout,omitempty"` // NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes // to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations. // +optional NodeVolumeDetachTimeout *metav1.Duration `json:"nodeVolumeDetachTimeout,omitempty"` // NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine // hosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely. // Defaults to 10 seconds. // +optional NodeDeletionTimeout *metav1.Duration `json:"nodeDeletionTimeout,omitempty"` }
ControlPlaneTopology specifies the parameters for the control plane nodes in the cluster.
func (*ControlPlaneTopology) DeepCopy ¶
func (in *ControlPlaneTopology) DeepCopy() *ControlPlaneTopology
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControlPlaneTopology.
func (*ControlPlaneTopology) DeepCopyInto ¶
func (in *ControlPlaneTopology) DeepCopyInto(out *ControlPlaneTopology)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ExternalPatchDefinition ¶ added in v1.2.0
type ExternalPatchDefinition struct { // GenerateExtension references an extension which is called to generate patches. // +optional GenerateExtension *string `json:"generateExtension,omitempty"` // ValidateExtension references an extension which is called to validate the topology. // +optional ValidateExtension *string `json:"validateExtension,omitempty"` // DiscoverVariablesExtension references an extension which is called to discover variables. // +optional DiscoverVariablesExtension *string `json:"discoverVariablesExtension,omitempty"` // Settings defines key value pairs to be passed to the extensions. // Values defined here take precedence over the values defined in the // corresponding ExtensionConfig. // +optional Settings map[string]string `json:"settings,omitempty"` }
ExternalPatchDefinition defines an external patch. Note: At least one of GenerateExtension or ValidateExtension must be set.
func (*ExternalPatchDefinition) DeepCopy ¶ added in v1.2.0
func (in *ExternalPatchDefinition) DeepCopy() *ExternalPatchDefinition
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalPatchDefinition.
func (*ExternalPatchDefinition) DeepCopyInto ¶ added in v1.2.0
func (in *ExternalPatchDefinition) DeepCopyInto(out *ExternalPatchDefinition)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FailureDomainSpec ¶
type FailureDomainSpec struct { // ControlPlane determines if this failure domain is suitable for use by control plane machines. // +optional ControlPlane bool `json:"controlPlane,omitempty"` // Attributes is a free form map of attributes an infrastructure provider might use or require. // +optional Attributes map[string]string `json:"attributes,omitempty"` }
FailureDomainSpec is the Schema for Cluster API failure domains. It allows controllers to understand how many failure domains a cluster can optionally span across.
func (*FailureDomainSpec) DeepCopy ¶
func (in *FailureDomainSpec) DeepCopy() *FailureDomainSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FailureDomainSpec.
func (*FailureDomainSpec) DeepCopyInto ¶
func (in *FailureDomainSpec) DeepCopyInto(out *FailureDomainSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FailureDomains ¶
type FailureDomains map[string]FailureDomainSpec
FailureDomains is a slice of FailureDomains.
func (FailureDomains) DeepCopy ¶
func (in FailureDomains) DeepCopy() FailureDomains
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FailureDomains.
func (FailureDomains) DeepCopyInto ¶
func (in FailureDomains) DeepCopyInto(out *FailureDomains)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (FailureDomains) FilterControlPlane ¶
func (in FailureDomains) FilterControlPlane() FailureDomains
FilterControlPlane returns a FailureDomain slice containing only the domains suitable to be used for control plane nodes.
func (FailureDomains) GetIDs ¶
func (in FailureDomains) GetIDs() []*string
GetIDs returns a slice containing the ids for failure domains.
type JSONPatch ¶
type JSONPatch struct { // Op defines the operation of the patch. // Note: Only `add`, `replace` and `remove` are supported. Op string `json:"op"` // Path defines the path of the patch. // Note: Only the spec of a template can be patched, thus the path has to start with /spec/. // Note: For now the only allowed array modifications are `append` and `prepend`, i.e.: // * for op: `add`: only index 0 (prepend) and - (append) are allowed // * for op: `replace` or `remove`: no indexes are allowed Path string `json:"path"` // Value defines the value of the patch. // Note: Either Value or ValueFrom is required for add and replace // operations. Only one of them is allowed to be set at the same time. // Note: We have to use apiextensionsv1.JSON instead of our JSON type, // because controller-tools has a hard-coded schema for apiextensionsv1.JSON // which cannot be produced by another type (unset type field). // Ref: https://github.com/kubernetes-sigs/controller-tools/blob/d0e03a142d0ecdd5491593e941ee1d6b5d91dba6/pkg/crd/known_types.go#L106-L111 // +optional Value *apiextensionsv1.JSON `json:"value,omitempty"` // ValueFrom defines the value of the patch. // Note: Either Value or ValueFrom is required for add and replace // operations. Only one of them is allowed to be set at the same time. // +optional ValueFrom *JSONPatchValue `json:"valueFrom,omitempty"` }
JSONPatch defines a JSON patch.
func (*JSONPatch) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JSONPatch.
func (*JSONPatch) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type JSONPatchValue ¶
type JSONPatchValue struct { // Variable is the variable to be used as value. // Variable can be one of the variables defined in .spec.variables or a builtin variable. // +optional Variable *string `json:"variable,omitempty"` // Template is the Go template to be used to calculate the value. // A template can reference variables defined in .spec.variables and builtin variables. // Note: The template must evaluate to a valid YAML or JSON value. // +optional Template *string `json:"template,omitempty"` }
JSONPatchValue defines the value of a patch. Note: Only one of the fields is allowed to be set at the same time.
func (*JSONPatchValue) DeepCopy ¶
func (in *JSONPatchValue) DeepCopy() *JSONPatchValue
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JSONPatchValue.
func (*JSONPatchValue) DeepCopyInto ¶
func (in *JSONPatchValue) DeepCopyInto(out *JSONPatchValue)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type JSONSchemaProps ¶
type JSONSchemaProps struct { // Description is a human-readable description of this variable. Description string `json:"description,omitempty"` // Example is an example for this variable. Example *apiextensionsv1.JSON `json:"example,omitempty"` // Type is the type of the variable. // Valid values are: object, array, string, integer, number or boolean. Type string `json:"type"` // Properties specifies fields of an object. // NOTE: Can only be set if type is object. // NOTE: Properties is mutually exclusive with AdditionalProperties. // NOTE: This field uses PreserveUnknownFields and Schemaless, // because recursive validation is not possible. // +optional // +kubebuilder:pruning:PreserveUnknownFields // +kubebuilder:validation:Schemaless Properties map[string]JSONSchemaProps `json:"properties,omitempty"` // AdditionalProperties specifies the schema of values in a map (keys are always strings). // NOTE: Can only be set if type is object. // NOTE: AdditionalProperties is mutually exclusive with Properties. // NOTE: This field uses PreserveUnknownFields and Schemaless, // because recursive validation is not possible. // +optional // +kubebuilder:pruning:PreserveUnknownFields // +kubebuilder:validation:Schemaless AdditionalProperties *JSONSchemaProps `json:"additionalProperties,omitempty"` // Required specifies which fields of an object are required. // NOTE: Can only be set if type is object. // +optional Required []string `json:"required,omitempty"` // Items specifies fields of an array. // NOTE: Can only be set if type is array. // NOTE: This field uses PreserveUnknownFields and Schemaless, // because recursive validation is not possible. // +optional // +kubebuilder:pruning:PreserveUnknownFields // +kubebuilder:validation:Schemaless Items *JSONSchemaProps `json:"items,omitempty"` // MaxItems is the max length of an array variable. // NOTE: Can only be set if type is array. // +optional MaxItems *int64 `json:"maxItems,omitempty"` // MinItems is the min length of an array variable. // NOTE: Can only be set if type is array. // +optional MinItems *int64 `json:"minItems,omitempty"` // UniqueItems specifies if items in an array must be unique. // NOTE: Can only be set if type is array. // +optional UniqueItems bool `json:"uniqueItems,omitempty"` // Format is an OpenAPI v3 format string. Unknown formats are ignored. // For a list of supported formats please see: (of the k8s.io/apiextensions-apiserver version we're currently using) // https://github.com/kubernetes/apiextensions-apiserver/blob/master/pkg/apiserver/validation/formats.go // NOTE: Can only be set if type is string. // +optional Format string `json:"format,omitempty"` // MaxLength is the max length of a string variable. // NOTE: Can only be set if type is string. // +optional MaxLength *int64 `json:"maxLength,omitempty"` // MinLength is the min length of a string variable. // NOTE: Can only be set if type is string. // +optional MinLength *int64 `json:"minLength,omitempty"` // Pattern is the regex which a string variable must match. // NOTE: Can only be set if type is string. // +optional Pattern string `json:"pattern,omitempty"` // Maximum is the maximum of an integer or number variable. // If ExclusiveMaximum is false, the variable is valid if it is lower than, or equal to, the value of Maximum. // If ExclusiveMaximum is true, the variable is valid if it is strictly lower than the value of Maximum. // NOTE: Can only be set if type is integer or number. // +optional Maximum *int64 `json:"maximum,omitempty"` // ExclusiveMaximum specifies if the Maximum is exclusive. // NOTE: Can only be set if type is integer or number. // +optional ExclusiveMaximum bool `json:"exclusiveMaximum,omitempty"` // Minimum is the minimum of an integer or number variable. // If ExclusiveMinimum is false, the variable is valid if it is greater than, or equal to, the value of Minimum. // If ExclusiveMinimum is true, the variable is valid if it is strictly greater than the value of Minimum. // NOTE: Can only be set if type is integer or number. // +optional Minimum *int64 `json:"minimum,omitempty"` // ExclusiveMinimum specifies if the Minimum is exclusive. // NOTE: Can only be set if type is integer or number. // +optional ExclusiveMinimum bool `json:"exclusiveMinimum,omitempty"` // XPreserveUnknownFields allows setting fields in a variable object // which are not defined in the variable schema. This affects fields recursively, // except if nested properties or additionalProperties are specified in the schema. // +optional XPreserveUnknownFields bool `json:"x-kubernetes-preserve-unknown-fields,omitempty"` // Enum is the list of valid values of the variable. // NOTE: Can be set for all types. // +optional Enum []apiextensionsv1.JSON `json:"enum,omitempty"` // Default is the default value of the variable. // NOTE: Can be set for all types. // +optional Default *apiextensionsv1.JSON `json:"default,omitempty"` }
JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/). This struct has been initially copied from apiextensionsv1.JSONSchemaProps, but all fields which are not supported in CAPI have been removed.
func (*JSONSchemaProps) DeepCopy ¶
func (in *JSONSchemaProps) DeepCopy() *JSONSchemaProps
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JSONSchemaProps.
func (*JSONSchemaProps) DeepCopyInto ¶
func (in *JSONSchemaProps) DeepCopyInto(out *JSONSchemaProps)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type LocalObjectTemplate ¶
type LocalObjectTemplate struct { // Ref is a required reference to a custom resource // offered by a provider. Ref *corev1.ObjectReference `json:"ref"` }
LocalObjectTemplate defines a template for a topology Class.
func (*LocalObjectTemplate) DeepCopy ¶
func (in *LocalObjectTemplate) DeepCopy() *LocalObjectTemplate
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LocalObjectTemplate.
func (*LocalObjectTemplate) DeepCopyInto ¶
func (in *LocalObjectTemplate) DeepCopyInto(out *LocalObjectTemplate)
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 is the Schema for the machines API.
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.
func (*Machine) Default ¶
func (m *Machine) Default()
Default implements webhook.Defaulter so a webhook will be registered for the type.
func (*Machine) GetConditions ¶
func (m *Machine) GetConditions() Conditions
GetConditions returns the set of conditions for this object.
func (*Machine) SetConditions ¶
func (m *Machine) SetConditions(conditions Conditions)
SetConditions sets the conditions on this object.
func (*Machine) SetupWebhookWithManager ¶
func (*Machine) ValidateCreate ¶
ValidateCreate implements webhook.Validator so a webhook will be registered for the type.
func (*Machine) ValidateDelete ¶
ValidateDelete implements webhook.Validator so a webhook will be registered for the type.
type MachineAddress ¶
type MachineAddress struct { // Machine address type, one of Hostname, ExternalIP, InternalIP, ExternalDNS or InternalDNS. Type MachineAddressType `json:"type"` // The machine address. Address string `json:"address"` }
MachineAddress contains information for the node's address.
func (*MachineAddress) DeepCopy ¶
func (in *MachineAddress) DeepCopy() *MachineAddress
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineAddress.
func (*MachineAddress) DeepCopyInto ¶
func (in *MachineAddress) DeepCopyInto(out *MachineAddress)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineAddressType ¶
type MachineAddressType string
MachineAddressType describes a valid MachineAddress type.
const ( MachineHostName MachineAddressType = "Hostname" MachineExternalIP MachineAddressType = "ExternalIP" MachineInternalIP MachineAddressType = "InternalIP" MachineExternalDNS MachineAddressType = "ExternalDNS" MachineInternalDNS MachineAddressType = "InternalDNS" )
Define the MachineAddressType constants.
type MachineAddresses ¶
type MachineAddresses []MachineAddress
MachineAddresses is a slice of MachineAddress items to be used by infrastructure providers.
func (MachineAddresses) DeepCopy ¶
func (in MachineAddresses) DeepCopy() MachineAddresses
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineAddresses.
func (MachineAddresses) DeepCopyInto ¶
func (in MachineAddresses) DeepCopyInto(out *MachineAddresses)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineDeployment ¶
type MachineDeployment struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` Spec MachineDeploymentSpec `json:"spec,omitempty"` Status MachineDeploymentStatus `json:"status,omitempty"` }
MachineDeployment is the Schema for the machinedeployments API.
func (*MachineDeployment) DeepCopy ¶
func (in *MachineDeployment) DeepCopy() *MachineDeployment
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineDeployment.
func (*MachineDeployment) DeepCopyInto ¶
func (in *MachineDeployment) DeepCopyInto(out *MachineDeployment)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MachineDeployment) DeepCopyObject ¶
func (in *MachineDeployment) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*MachineDeployment) GetConditions ¶
func (m *MachineDeployment) GetConditions() Conditions
GetConditions returns the set of conditions for the machinedeployment.
func (*MachineDeployment) Hub ¶
func (*MachineDeployment) Hub()
func (*MachineDeployment) SetConditions ¶
func (m *MachineDeployment) SetConditions(conditions Conditions)
SetConditions updates the set of conditions on the machinedeployment.
func (*MachineDeployment) SetupWebhookWithManager ¶
func (m *MachineDeployment) SetupWebhookWithManager(mgr ctrl.Manager) error
func (*MachineDeployment) ValidateCreate ¶
func (m *MachineDeployment) ValidateCreate() error
ValidateCreate implements webhook.Validator so a webhook will be registered for the type.
func (*MachineDeployment) ValidateDelete ¶
func (m *MachineDeployment) ValidateDelete() error
ValidateDelete implements webhook.Validator so a webhook will be registered for the type.
func (*MachineDeployment) ValidateUpdate ¶
func (m *MachineDeployment) ValidateUpdate(old runtime.Object) error
ValidateUpdate implements webhook.Validator so a webhook will be registered for the type.
type MachineDeploymentClass ¶
type MachineDeploymentClass struct { // Class denotes a type of worker node present in the cluster, // this name MUST be unique within a ClusterClass and can be referenced // in the Cluster to create a managed MachineDeployment. Class string `json:"class"` // Template is a local struct containing a collection of templates for creation of // MachineDeployment objects representing a set of worker nodes. Template MachineDeploymentClassTemplate `json:"template"` // MachineHealthCheck defines a MachineHealthCheck for this MachineDeploymentClass. // +optional MachineHealthCheck *MachineHealthCheckClass `json:"machineHealthCheck,omitempty"` // FailureDomain is the failure domain the machines will be created in. // Must match a key in the FailureDomains map stored on the cluster object. // NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass. // +optional FailureDomain *string `json:"failureDomain,omitempty"` // NodeDrainTimeout is the total amount of time that the controller will spend on draining a node. // The default value is 0, meaning that the node can be drained without any time limitations. // NOTE: NodeDrainTimeout is different from `kubectl drain --timeout` // NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass. // +optional NodeDrainTimeout *metav1.Duration `json:"nodeDrainTimeout,omitempty"` // NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes // to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations. // NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass. // +optional NodeVolumeDetachTimeout *metav1.Duration `json:"nodeVolumeDetachTimeout,omitempty"` // NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine // hosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely. // Defaults to 10 seconds. // NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass. // +optional NodeDeletionTimeout *metav1.Duration `json:"nodeDeletionTimeout,omitempty"` // Minimum number of seconds for which a newly created machine should // be ready. // Defaults to 0 (machine will be considered available as soon as it // is ready) // NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass. MinReadySeconds *int32 `json:"minReadySeconds,omitempty"` // The deployment strategy to use to replace existing machines with // new ones. // NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass. Strategy *MachineDeploymentStrategy `json:"strategy,omitempty"` }
MachineDeploymentClass serves as a template to define a set of worker nodes of the cluster provisioned using the `ClusterClass`.
func (*MachineDeploymentClass) DeepCopy ¶
func (in *MachineDeploymentClass) DeepCopy() *MachineDeploymentClass
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineDeploymentClass.
func (*MachineDeploymentClass) DeepCopyInto ¶
func (in *MachineDeploymentClass) DeepCopyInto(out *MachineDeploymentClass)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineDeploymentClassTemplate ¶
type MachineDeploymentClassTemplate struct { // Metadata is the metadata applied to the MachineDeployment and the machines of the MachineDeployment. // At runtime this metadata is merged with the corresponding metadata from the topology. // +optional Metadata ObjectMeta `json:"metadata,omitempty"` // Bootstrap contains the bootstrap template reference to be used // for the creation of worker Machines. Bootstrap LocalObjectTemplate `json:"bootstrap"` // Infrastructure contains the infrastructure template reference to be used // for the creation of worker Machines. Infrastructure LocalObjectTemplate `json:"infrastructure"` }
MachineDeploymentClassTemplate defines how a MachineDeployment generated from a MachineDeploymentClass should look like.
func (*MachineDeploymentClassTemplate) DeepCopy ¶
func (in *MachineDeploymentClassTemplate) DeepCopy() *MachineDeploymentClassTemplate
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineDeploymentClassTemplate.
func (*MachineDeploymentClassTemplate) DeepCopyInto ¶
func (in *MachineDeploymentClassTemplate) DeepCopyInto(out *MachineDeploymentClassTemplate)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineDeploymentList ¶
type MachineDeploymentList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` Items []MachineDeployment `json:"items"` }
MachineDeploymentList contains a list of MachineDeployment.
func (*MachineDeploymentList) DeepCopy ¶
func (in *MachineDeploymentList) DeepCopy() *MachineDeploymentList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineDeploymentList.
func (*MachineDeploymentList) DeepCopyInto ¶
func (in *MachineDeploymentList) DeepCopyInto(out *MachineDeploymentList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MachineDeploymentList) DeepCopyObject ¶
func (in *MachineDeploymentList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*MachineDeploymentList) Hub ¶
func (*MachineDeploymentList) Hub()
type MachineDeploymentPhase ¶
type MachineDeploymentPhase string
MachineDeploymentPhase indicates the progress of the machine deployment.
type MachineDeploymentSpec ¶
type MachineDeploymentSpec struct { // ClusterName is the name of the Cluster this object belongs to. // +kubebuilder:validation:MinLength=1 ClusterName string `json:"clusterName"` // Number of desired machines. // This is a pointer to distinguish between explicit zero and not specified. // // Defaults to: // * if the Kubernetes autoscaler min size and max size annotations are set: // - if it's a new MachineDeployment, use min size // - if the replicas field of the old MachineDeployment is < min size, use min size // - if the replicas field of the old MachineDeployment is > max size, use max size // - if the replicas field of the old MachineDeployment is in the (min size, max size) range, keep the value from the oldMD // * otherwise use 1 // Note: Defaulting will be run whenever the replicas field is not set: // * A new MachineDeployment is created with replicas not set. // * On an existing MachineDeployment the replicas field was first set and is now unset. // Those cases are especially relevant for the following Kubernetes autoscaler use cases: // * A new MachineDeployment is created and replicas should be managed by the autoscaler // * An existing MachineDeployment which initially wasn't controlled by the autoscaler // should be later controlled by the autoscaler // +optional Replicas *int32 `json:"replicas,omitempty"` // RolloutAfter is a field to indicate a rollout should be performed // after the specified time even if no changes have been made to the // MachineDeployment. // Example: In the YAML the time can be specified in the RFC3339 format. // To specify the rolloutAfter target as March 9, 2023, at 9 am UTC // use "2023-03-09T09:00:00Z". // +optional RolloutAfter *metav1.Time `json:"rolloutAfter,omitempty"` // Label selector for machines. Existing MachineSets whose machines are // selected by this will be the ones affected by this deployment. // It must match the machine template's labels. Selector metav1.LabelSelector `json:"selector"` // Template describes the machines that will be created. Template MachineTemplateSpec `json:"template"` // The deployment strategy to use to replace existing machines with // new ones. // +optional Strategy *MachineDeploymentStrategy `json:"strategy,omitempty"` // Minimum number of seconds for which a newly created machine should // be ready. // Defaults to 0 (machine will be considered available as soon as it // is ready) // +optional MinReadySeconds *int32 `json:"minReadySeconds,omitempty"` // The number of old MachineSets to retain to allow rollback. // This is a pointer to distinguish between explicit zero and not specified. // Defaults to 1. // +optional RevisionHistoryLimit *int32 `json:"revisionHistoryLimit,omitempty"` // Indicates that the deployment is paused. // +optional Paused bool `json:"paused,omitempty"` // The maximum time in seconds for a deployment to make progress before it // is considered to be failed. The deployment controller will continue to // process failed deployments and a condition with a ProgressDeadlineExceeded // reason will be surfaced in the deployment status. Note that progress will // not be estimated during the time a deployment is paused. Defaults to 600s. // +optional ProgressDeadlineSeconds *int32 `json:"progressDeadlineSeconds,omitempty"` }
MachineDeploymentSpec defines the desired state of MachineDeployment.
func (*MachineDeploymentSpec) DeepCopy ¶
func (in *MachineDeploymentSpec) DeepCopy() *MachineDeploymentSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineDeploymentSpec.
func (*MachineDeploymentSpec) DeepCopyInto ¶
func (in *MachineDeploymentSpec) DeepCopyInto(out *MachineDeploymentSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineDeploymentStatus ¶
type MachineDeploymentStatus struct { // The generation observed by the deployment controller. // +optional ObservedGeneration int64 `json:"observedGeneration,omitempty"` // Selector is the same as the label selector but in the string format to avoid introspection // by clients. The string will be in the same format as the query-param syntax. // More info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors // +optional Selector string `json:"selector,omitempty"` // Total number of non-terminated machines targeted by this deployment // (their labels match the selector). // +optional Replicas int32 `json:"replicas"` // Total number of non-terminated machines targeted by this deployment // that have the desired template spec. // +optional UpdatedReplicas int32 `json:"updatedReplicas"` // Total number of ready machines targeted by this deployment. // +optional ReadyReplicas int32 `json:"readyReplicas"` // Total number of available machines (ready for at least minReadySeconds) // targeted by this deployment. // +optional AvailableReplicas int32 `json:"availableReplicas"` // This is the total number of machines that are still required for // the deployment to have 100% available capacity. They may either // be machines that are running but not yet available or machines // that still have not been created. // +optional UnavailableReplicas int32 `json:"unavailableReplicas"` // Phase represents the current phase of a MachineDeployment (ScalingUp, ScalingDown, Running, Failed, or Unknown). // +optional Phase string `json:"phase,omitempty"` // Conditions defines current service state of the MachineDeployment. // +optional Conditions Conditions `json:"conditions,omitempty"` }
MachineDeploymentStatus defines the observed state of MachineDeployment.
func (*MachineDeploymentStatus) DeepCopy ¶
func (in *MachineDeploymentStatus) DeepCopy() *MachineDeploymentStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineDeploymentStatus.
func (*MachineDeploymentStatus) DeepCopyInto ¶
func (in *MachineDeploymentStatus) DeepCopyInto(out *MachineDeploymentStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MachineDeploymentStatus) GetTypedPhase ¶
func (md *MachineDeploymentStatus) GetTypedPhase() MachineDeploymentPhase
GetTypedPhase attempts to parse the Phase field and return the typed MachineDeploymentPhase representation.
func (*MachineDeploymentStatus) SetTypedPhase ¶
func (md *MachineDeploymentStatus) SetTypedPhase(p MachineDeploymentPhase)
SetTypedPhase sets the Phase field to the string representation of MachineDeploymentPhase.
type MachineDeploymentStrategy ¶
type MachineDeploymentStrategy struct { // Type of deployment. // Default is RollingUpdate. // +kubebuilder:validation:Enum=RollingUpdate;OnDelete // +optional Type MachineDeploymentStrategyType `json:"type,omitempty"` // Rolling update config params. Present only if // MachineDeploymentStrategyType = RollingUpdate. // +optional RollingUpdate *MachineRollingUpdateDeployment `json:"rollingUpdate,omitempty"` }
MachineDeploymentStrategy describes how to replace existing machines with new ones.
func (*MachineDeploymentStrategy) DeepCopy ¶
func (in *MachineDeploymentStrategy) DeepCopy() *MachineDeploymentStrategy
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineDeploymentStrategy.
func (*MachineDeploymentStrategy) DeepCopyInto ¶
func (in *MachineDeploymentStrategy) DeepCopyInto(out *MachineDeploymentStrategy)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineDeploymentStrategyType ¶
type MachineDeploymentStrategyType string
MachineDeploymentStrategyType defines the type of MachineDeployment rollout strategies.
type MachineDeploymentTopology ¶
type MachineDeploymentTopology struct { // Metadata is the metadata applied to the MachineDeployment and the machines of the MachineDeployment. // At runtime this metadata is merged with the corresponding metadata from the ClusterClass. // +optional Metadata ObjectMeta `json:"metadata,omitempty"` // Class is the name of the MachineDeploymentClass used to create the set of worker nodes. // This should match one of the deployment classes defined in the ClusterClass object // mentioned in the `Cluster.Spec.Class` field. Class string `json:"class"` // Name is the unique identifier for this MachineDeploymentTopology. // The value is used with other unique identifiers to create a MachineDeployment's Name // (e.g. cluster's name, etc). In case the name is greater than the allowed maximum length, // the values are hashed together. Name string `json:"name"` // FailureDomain is the failure domain the machines will be created in. // Must match a key in the FailureDomains map stored on the cluster object. // +optional FailureDomain *string `json:"failureDomain,omitempty"` // Replicas is the number of worker nodes belonging to this set. // If the value is nil, the MachineDeployment is created without the number of Replicas (defaulting to 1) // and it's assumed that an external entity (like cluster autoscaler) is responsible for the management // of this value. // +optional Replicas *int32 `json:"replicas,omitempty"` // MachineHealthCheck allows to enable, disable and override // the MachineHealthCheck configuration in the ClusterClass for this MachineDeployment. // +optional MachineHealthCheck *MachineHealthCheckTopology `json:"machineHealthCheck,omitempty"` // NodeDrainTimeout is the total amount of time that the controller will spend on draining a node. // The default value is 0, meaning that the node can be drained without any time limitations. // NOTE: NodeDrainTimeout is different from `kubectl drain --timeout` // +optional NodeDrainTimeout *metav1.Duration `json:"nodeDrainTimeout,omitempty"` // NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes // to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations. // +optional NodeVolumeDetachTimeout *metav1.Duration `json:"nodeVolumeDetachTimeout,omitempty"` // NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine // hosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely. // Defaults to 10 seconds. // +optional NodeDeletionTimeout *metav1.Duration `json:"nodeDeletionTimeout,omitempty"` // Minimum number of seconds for which a newly created machine should // be ready. // Defaults to 0 (machine will be considered available as soon as it // is ready) // +optional MinReadySeconds *int32 `json:"minReadySeconds,omitempty"` // The deployment strategy to use to replace existing machines with // new ones. // +optional Strategy *MachineDeploymentStrategy `json:"strategy,omitempty"` // Variables can be used to customize the MachineDeployment through patches. // +optional Variables *MachineDeploymentVariables `json:"variables,omitempty"` }
MachineDeploymentTopology specifies the different parameters for a set of worker nodes in the topology. This set of nodes is managed by a MachineDeployment object whose lifecycle is managed by the Cluster controller.
func (*MachineDeploymentTopology) DeepCopy ¶
func (in *MachineDeploymentTopology) DeepCopy() *MachineDeploymentTopology
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineDeploymentTopology.
func (*MachineDeploymentTopology) DeepCopyInto ¶
func (in *MachineDeploymentTopology) DeepCopyInto(out *MachineDeploymentTopology)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineDeploymentVariables ¶ added in v1.1.0
type MachineDeploymentVariables struct { // Overrides can be used to override Cluster level variables. // +optional Overrides []ClusterVariable `json:"overrides,omitempty"` }
MachineDeploymentVariables can be used to provide variables for a specific MachineDeployment.
func (*MachineDeploymentVariables) DeepCopy ¶ added in v1.1.0
func (in *MachineDeploymentVariables) DeepCopy() *MachineDeploymentVariables
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineDeploymentVariables.
func (*MachineDeploymentVariables) DeepCopyInto ¶ added in v1.1.0
func (in *MachineDeploymentVariables) DeepCopyInto(out *MachineDeploymentVariables)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineHealthCheck ¶
type MachineHealthCheck struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` // Specification of machine health check policy Spec MachineHealthCheckSpec `json:"spec,omitempty"` // Most recently observed status of MachineHealthCheck resource Status MachineHealthCheckStatus `json:"status,omitempty"` }
MachineHealthCheck is the Schema for the machinehealthchecks API.
func (*MachineHealthCheck) DeepCopy ¶
func (in *MachineHealthCheck) DeepCopy() *MachineHealthCheck
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineHealthCheck.
func (*MachineHealthCheck) DeepCopyInto ¶
func (in *MachineHealthCheck) DeepCopyInto(out *MachineHealthCheck)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MachineHealthCheck) DeepCopyObject ¶
func (in *MachineHealthCheck) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*MachineHealthCheck) Default ¶
func (m *MachineHealthCheck) Default()
Default implements webhook.Defaulter so a webhook will be registered for the type.
func (*MachineHealthCheck) GetConditions ¶
func (m *MachineHealthCheck) GetConditions() Conditions
GetConditions returns the set of conditions for this object.
func (*MachineHealthCheck) Hub ¶
func (*MachineHealthCheck) Hub()
func (*MachineHealthCheck) SetConditions ¶
func (m *MachineHealthCheck) SetConditions(conditions Conditions)
SetConditions sets the conditions on this object.
func (*MachineHealthCheck) SetupWebhookWithManager ¶
func (m *MachineHealthCheck) SetupWebhookWithManager(mgr ctrl.Manager) error
func (*MachineHealthCheck) ValidateCommonFields ¶ added in v1.3.0
func (m *MachineHealthCheck) ValidateCommonFields(fldPath *field.Path) field.ErrorList
ValidateCommonFields validates UnhealthyConditions NodeStartupTimeout, MaxUnhealthy, and RemediationTemplate of the MHC. These are the fields in common with other types which define MachineHealthChecks such as MachineHealthCheckClass and MachineHealthCheckTopology.
func (*MachineHealthCheck) ValidateCreate ¶
func (m *MachineHealthCheck) ValidateCreate() error
ValidateCreate implements webhook.Validator so a webhook will be registered for the type.
func (*MachineHealthCheck) ValidateDelete ¶
func (m *MachineHealthCheck) ValidateDelete() error
ValidateDelete implements webhook.Validator so a webhook will be registered for the type.
func (*MachineHealthCheck) ValidateUpdate ¶
func (m *MachineHealthCheck) ValidateUpdate(old runtime.Object) error
ValidateUpdate implements webhook.Validator so a webhook will be registered for the type.
type MachineHealthCheckClass ¶ added in v1.1.0
type MachineHealthCheckClass struct { // UnhealthyConditions contains a list of the conditions that determine // whether a node is considered unhealthy. The conditions are combined in a // logical OR, i.e. if any of the conditions is met, the node is unhealthy. UnhealthyConditions []UnhealthyCondition `json:"unhealthyConditions,omitempty"` // Any further remediation is only allowed if at most "MaxUnhealthy" machines selected by // "selector" are not healthy. // +optional MaxUnhealthy *intstr.IntOrString `json:"maxUnhealthy,omitempty"` // Any further remediation is only allowed if the number of machines selected by "selector" as not healthy // is within the range of "UnhealthyRange". Takes precedence over MaxUnhealthy. // Eg. "[3-5]" - This means that remediation will be allowed only when: // (a) there are at least 3 unhealthy machines (and) // (b) there are at most 5 unhealthy machines // +optional // +kubebuilder:validation:Pattern=^\[[0-9]+-[0-9]+\]$ UnhealthyRange *string `json:"unhealthyRange,omitempty"` // Machines older than this duration without a node will be considered to have // failed and will be remediated. // If you wish to disable this feature, set the value explicitly to 0. // +optional NodeStartupTimeout *metav1.Duration `json:"nodeStartupTimeout,omitempty"` // RemediationTemplate is a reference to a remediation template // provided by an infrastructure provider. // // This field is completely optional, when filled, the MachineHealthCheck controller // creates a new object from the template referenced and hands off remediation of the machine to // a controller that lives outside of Cluster API. // +optional RemediationTemplate *corev1.ObjectReference `json:"remediationTemplate,omitempty"` }
MachineHealthCheckClass defines a MachineHealthCheck for a group of Machines.
func (*MachineHealthCheckClass) DeepCopy ¶ added in v1.1.0
func (in *MachineHealthCheckClass) DeepCopy() *MachineHealthCheckClass
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineHealthCheckClass.
func (*MachineHealthCheckClass) DeepCopyInto ¶ added in v1.1.0
func (in *MachineHealthCheckClass) DeepCopyInto(out *MachineHealthCheckClass)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (MachineHealthCheckClass) IsZero ¶ added in v1.3.0
func (m MachineHealthCheckClass) IsZero() bool
IsZero returns true if none of the values of MachineHealthCheckClass are defined.
type MachineHealthCheckList ¶
type MachineHealthCheckList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` Items []MachineHealthCheck `json:"items"` }
MachineHealthCheckList contains a list of MachineHealthCheck.
func (*MachineHealthCheckList) DeepCopy ¶
func (in *MachineHealthCheckList) DeepCopy() *MachineHealthCheckList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineHealthCheckList.
func (*MachineHealthCheckList) DeepCopyInto ¶
func (in *MachineHealthCheckList) DeepCopyInto(out *MachineHealthCheckList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MachineHealthCheckList) DeepCopyObject ¶
func (in *MachineHealthCheckList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*MachineHealthCheckList) Hub ¶
func (*MachineHealthCheckList) Hub()
type MachineHealthCheckSpec ¶
type MachineHealthCheckSpec struct { // ClusterName is the name of the Cluster this object belongs to. // +kubebuilder:validation:MinLength=1 ClusterName string `json:"clusterName"` // Label selector to match machines whose health will be exercised Selector metav1.LabelSelector `json:"selector"` // UnhealthyConditions contains a list of the conditions that determine // whether a node is considered unhealthy. The conditions are combined in a // logical OR, i.e. if any of the conditions is met, the node is unhealthy. // // +kubebuilder:validation:MinItems=1 UnhealthyConditions []UnhealthyCondition `json:"unhealthyConditions"` // Any further remediation is only allowed if at most "MaxUnhealthy" machines selected by // "selector" are not healthy. // +optional MaxUnhealthy *intstr.IntOrString `json:"maxUnhealthy,omitempty"` // Any further remediation is only allowed if the number of machines selected by "selector" as not healthy // is within the range of "UnhealthyRange". Takes precedence over MaxUnhealthy. // Eg. "[3-5]" - This means that remediation will be allowed only when: // (a) there are at least 3 unhealthy machines (and) // (b) there are at most 5 unhealthy machines // +optional // +kubebuilder:validation:Pattern=^\[[0-9]+-[0-9]+\]$ UnhealthyRange *string `json:"unhealthyRange,omitempty"` // Machines older than this duration without a node will be considered to have // failed and will be remediated. // If not set, this value is defaulted to 10 minutes. // If you wish to disable this feature, set the value explicitly to 0. // +optional NodeStartupTimeout *metav1.Duration `json:"nodeStartupTimeout,omitempty"` // RemediationTemplate is a reference to a remediation template // provided by an infrastructure provider. // // This field is completely optional, when filled, the MachineHealthCheck controller // creates a new object from the template referenced and hands off remediation of the machine to // a controller that lives outside of Cluster API. // +optional RemediationTemplate *corev1.ObjectReference `json:"remediationTemplate,omitempty"` }
MachineHealthCheckSpec defines the desired state of MachineHealthCheck.
func (*MachineHealthCheckSpec) DeepCopy ¶
func (in *MachineHealthCheckSpec) DeepCopy() *MachineHealthCheckSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineHealthCheckSpec.
func (*MachineHealthCheckSpec) DeepCopyInto ¶
func (in *MachineHealthCheckSpec) DeepCopyInto(out *MachineHealthCheckSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineHealthCheckStatus ¶
type MachineHealthCheckStatus struct { // total number of machines counted by this machine health check // +kubebuilder:validation:Minimum=0 // +optional ExpectedMachines int32 `json:"expectedMachines"` // total number of healthy machines counted by this machine health check // +kubebuilder:validation:Minimum=0 // +optional CurrentHealthy int32 `json:"currentHealthy"` // RemediationsAllowed is the number of further remediations allowed by this machine health check before // maxUnhealthy short circuiting will be applied // +kubebuilder:validation:Minimum=0 // +optional RemediationsAllowed int32 `json:"remediationsAllowed"` // ObservedGeneration is the latest generation observed by the controller. // +optional ObservedGeneration int64 `json:"observedGeneration,omitempty"` // Targets shows the current list of machines the machine health check is watching // +optional Targets []string `json:"targets,omitempty"` // Conditions defines current service state of the MachineHealthCheck. // +optional Conditions Conditions `json:"conditions,omitempty"` }
MachineHealthCheckStatus defines the observed state of MachineHealthCheck.
func (*MachineHealthCheckStatus) DeepCopy ¶
func (in *MachineHealthCheckStatus) DeepCopy() *MachineHealthCheckStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineHealthCheckStatus.
func (*MachineHealthCheckStatus) DeepCopyInto ¶
func (in *MachineHealthCheckStatus) DeepCopyInto(out *MachineHealthCheckStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineHealthCheckTopology ¶ added in v1.3.0
type MachineHealthCheckTopology struct { // Enable controls if a MachineHealthCheck should be created for the target machines. // // If false: No MachineHealthCheck will be created. // // If not set(default): A MachineHealthCheck will be created if it is defined here or // in the associated ClusterClass. If no MachineHealthCheck is defined then none will be created. // // If true: A MachineHealthCheck is guaranteed to be created. Cluster validation will // block if `enable` is true and no MachineHealthCheck definition is available. // +optional Enable *bool `json:"enable,omitempty"` // MachineHealthCheckClass defines a MachineHealthCheck for a group of machines. // If specified (any field is set), it entirely overrides the MachineHealthCheckClass defined in ClusterClass. MachineHealthCheckClass `json:",inline"` }
MachineHealthCheckTopology defines a MachineHealthCheck for a group of machines.
func (*MachineHealthCheckTopology) DeepCopy ¶ added in v1.3.0
func (in *MachineHealthCheckTopology) DeepCopy() *MachineHealthCheckTopology
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineHealthCheckTopology.
func (*MachineHealthCheckTopology) DeepCopyInto ¶ added in v1.3.0
func (in *MachineHealthCheckTopology) DeepCopyInto(out *MachineHealthCheckTopology)
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.
func (*MachineList) Hub ¶
func (*MachineList) Hub()
type MachinePhase ¶
type MachinePhase string
MachinePhase is a string representation of a Machine Phase.
This type is a high-level indicator of the status of the Machine as it is provisioned, from the API user’s perspective.
The value should not be interpreted by any software components as a reliable indication of the actual state of the Machine, and controllers should not use the Machine Phase field value when making decisions about what action to take.
Controllers should always look at the actual state of the Machine’s fields to make those decisions.
type MachineRollingUpdateDeployment ¶
type MachineRollingUpdateDeployment struct { // Value can be an absolute number (ex: 5) or a percentage of desired // machines (ex: 10%). // Absolute number is calculated from percentage by rounding down. // This can not be 0 if MaxSurge is 0. // Defaults to 0. // Example: when this is set to 30%, the old MachineSet can be scaled // down to 70% of desired machines immediately when the rolling update // starts. Once new machines are ready, old MachineSet can be scaled // down further, followed by scaling up the new MachineSet, ensuring // that the total number of machines available at all times // during the update is at least 70% of desired machines. // +optional MaxUnavailable *intstr.IntOrString `json:"maxUnavailable,omitempty"` // The maximum number of machines that can be scheduled above the // desired number of machines. // Value can be an absolute number (ex: 5) or a percentage of // desired machines (ex: 10%). // This can not be 0 if MaxUnavailable is 0. // Absolute number is calculated from percentage by rounding up. // Defaults to 1. // Example: when this is set to 30%, the new MachineSet can be scaled // up immediately when the rolling update starts, such that the total // number of old and new machines do not exceed 130% of desired // machines. Once old machines have been killed, new MachineSet can // be scaled up further, ensuring that total number of machines running // at any time during the update is at most 130% of desired machines. // +optional MaxSurge *intstr.IntOrString `json:"maxSurge,omitempty"` // DeletePolicy defines the policy used by the MachineDeployment to identify nodes to delete when downscaling. // Valid values are "Random, "Newest", "Oldest" // When no value is supplied, the default DeletePolicy of MachineSet is used // +kubebuilder:validation:Enum=Random;Newest;Oldest // +optional DeletePolicy *string `json:"deletePolicy,omitempty"` }
MachineRollingUpdateDeployment is used to control the desired behavior of rolling update.
func (*MachineRollingUpdateDeployment) DeepCopy ¶
func (in *MachineRollingUpdateDeployment) DeepCopy() *MachineRollingUpdateDeployment
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineRollingUpdateDeployment.
func (*MachineRollingUpdateDeployment) DeepCopyInto ¶
func (in *MachineRollingUpdateDeployment) DeepCopyInto(out *MachineRollingUpdateDeployment)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineSet ¶
type MachineSet struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` Spec MachineSetSpec `json:"spec,omitempty"` Status MachineSetStatus `json:"status,omitempty"` }
MachineSet is the Schema for the machinesets API.
func (*MachineSet) DeepCopy ¶
func (in *MachineSet) DeepCopy() *MachineSet
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineSet.
func (*MachineSet) DeepCopyInto ¶
func (in *MachineSet) DeepCopyInto(out *MachineSet)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MachineSet) DeepCopyObject ¶
func (in *MachineSet) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*MachineSet) Default ¶
func (m *MachineSet) Default()
Default sets default MachineSet field values.
func (*MachineSet) GetConditions ¶
func (m *MachineSet) GetConditions() Conditions
GetConditions returns the set of conditions for the MachineSet.
func (*MachineSet) Hub ¶
func (*MachineSet) Hub()
func (*MachineSet) SetConditions ¶
func (m *MachineSet) SetConditions(conditions Conditions)
SetConditions updates the set of conditions on the MachineSet.
func (*MachineSet) SetupWebhookWithManager ¶
func (m *MachineSet) SetupWebhookWithManager(mgr ctrl.Manager) error
func (*MachineSet) Validate ¶
func (m *MachineSet) Validate() field.ErrorList
Validate validates the MachineSet fields.
func (*MachineSet) ValidateCreate ¶
func (m *MachineSet) ValidateCreate() error
ValidateCreate implements webhook.Validator so a webhook will be registered for the type.
func (*MachineSet) ValidateDelete ¶
func (m *MachineSet) ValidateDelete() error
ValidateDelete implements webhook.Validator so a webhook will be registered for the type.
func (*MachineSet) ValidateUpdate ¶
func (m *MachineSet) ValidateUpdate(old runtime.Object) error
ValidateUpdate implements webhook.Validator so a webhook will be registered for the type.
type MachineSetDeletePolicy ¶
type MachineSetDeletePolicy string
MachineSetDeletePolicy defines how priority is assigned to nodes to delete when downscaling a MachineSet. Defaults to "Random".
const ( // RandomMachineSetDeletePolicy prioritizes both Machines that have the annotation // "cluster.x-k8s.io/delete-machine=yes" and Machines that are unhealthy // (Status.FailureReason or Status.FailureMessage are set to a non-empty value // or NodeHealthy type of Status.Conditions is not true). // Finally, it picks Machines at random to delete. RandomMachineSetDeletePolicy MachineSetDeletePolicy = "Random" // NewestMachineSetDeletePolicy prioritizes both Machines that have the annotation // "cluster.x-k8s.io/delete-machine=yes" and Machines that are unhealthy // (Status.FailureReason or Status.FailureMessage are set to a non-empty value // or NodeHealthy type of Status.Conditions is not true). // It then prioritizes the newest Machines for deletion based on the Machine's CreationTimestamp. NewestMachineSetDeletePolicy MachineSetDeletePolicy = "Newest" // OldestMachineSetDeletePolicy prioritizes both Machines that have the annotation // "cluster.x-k8s.io/delete-machine=yes" and Machines that are unhealthy // (Status.FailureReason or Status.FailureMessage are set to a non-empty value // or NodeHealthy type of Status.Conditions is not true). // It then prioritizes the oldest Machines for deletion based on the Machine's CreationTimestamp. OldestMachineSetDeletePolicy MachineSetDeletePolicy = "Oldest" )
type MachineSetList ¶
type MachineSetList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` Items []MachineSet `json:"items"` }
MachineSetList contains a list of MachineSet.
func (*MachineSetList) DeepCopy ¶
func (in *MachineSetList) DeepCopy() *MachineSetList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineSetList.
func (*MachineSetList) DeepCopyInto ¶
func (in *MachineSetList) DeepCopyInto(out *MachineSetList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MachineSetList) DeepCopyObject ¶
func (in *MachineSetList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*MachineSetList) Hub ¶
func (*MachineSetList) Hub()
type MachineSetSpec ¶
type MachineSetSpec struct { // ClusterName is the name of the Cluster this object belongs to. // +kubebuilder:validation:MinLength=1 ClusterName string `json:"clusterName"` // Replicas is the number of desired replicas. // This is a pointer to distinguish between explicit zero and unspecified. // Defaults to 1. // +optional // +kubebuilder:default=1 Replicas *int32 `json:"replicas,omitempty"` // MinReadySeconds is the minimum number of seconds for which a newly created machine should be ready. // Defaults to 0 (machine will be considered available as soon as it is ready) // +optional MinReadySeconds int32 `json:"minReadySeconds,omitempty"` // DeletePolicy defines the policy used to identify nodes to delete when downscaling. // Defaults to "Random". Valid values are "Random, "Newest", "Oldest" // +kubebuilder:validation:Enum=Random;Newest;Oldest // +optional DeletePolicy string `json:"deletePolicy,omitempty"` // Selector is a label query over machines that should match the replica count. // Label keys and values that must match in order to be controlled by this MachineSet. // It must match the machine template's labels. // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors Selector metav1.LabelSelector `json:"selector"` // Template is the object that describes the machine that will be created if // insufficient replicas are detected. // Object references to custom resources are treated as templates. // +optional Template MachineTemplateSpec `json:"template,omitempty"` }
MachineSetSpec defines the desired state of MachineSet.
func (*MachineSetSpec) DeepCopy ¶
func (in *MachineSetSpec) DeepCopy() *MachineSetSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineSetSpec.
func (*MachineSetSpec) DeepCopyInto ¶
func (in *MachineSetSpec) DeepCopyInto(out *MachineSetSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineSetStatus ¶
type MachineSetStatus struct { // Selector is the same as the label selector but in the string format to avoid introspection // by clients. The string will be in the same format as the query-param syntax. // More info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors // +optional Selector string `json:"selector,omitempty"` // Replicas is the most recently observed number of replicas. // +optional Replicas int32 `json:"replicas"` // The number of replicas that have labels matching the labels of the machine template of the MachineSet. // +optional FullyLabeledReplicas int32 `json:"fullyLabeledReplicas"` // The number of ready replicas for this MachineSet. A machine is considered ready when the node has been created and is "Ready". // +optional ReadyReplicas int32 `json:"readyReplicas"` // The number of available replicas (ready for at least minReadySeconds) for this MachineSet. // +optional AvailableReplicas int32 `json:"availableReplicas"` // ObservedGeneration reflects the generation of the most recently observed MachineSet. // +optional ObservedGeneration int64 `json:"observedGeneration,omitempty"` // In the event that there is a terminal problem reconciling the // replicas, both FailureReason and FailureMessage will be set. FailureReason // will be populated with a succinct value suitable for machine // interpretation, while FailureMessage will contain a more verbose // string suitable for logging and human consumption. // // These fields should not be set for transitive errors that a // controller faces that are expected to be fixed automatically over // time (like service outages), but instead indicate that something is // fundamentally wrong with the MachineTemplate's spec or the configuration of // the machine controller, and that manual intervention is required. Examples // of terminal errors would be invalid combinations of settings in the // spec, values that are unsupported by the machine controller, or the // responsible machine controller itself being critically misconfigured. // // Any transient errors that occur during the reconciliation of Machines // can be added as events to the MachineSet object and/or logged in the // controller's output. // +optional FailureReason *capierrors.MachineSetStatusError `json:"failureReason,omitempty"` // +optional FailureMessage *string `json:"failureMessage,omitempty"` // Conditions defines current service state of the MachineSet. // +optional Conditions Conditions `json:"conditions,omitempty"` }
MachineSetStatus defines the observed state of MachineSet.
func (*MachineSetStatus) DeepCopy ¶
func (in *MachineSetStatus) DeepCopy() *MachineSetStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineSetStatus.
func (*MachineSetStatus) DeepCopyInto ¶
func (in *MachineSetStatus) DeepCopyInto(out *MachineSetStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineSpec ¶
type MachineSpec struct { // ClusterName is the name of the Cluster this object belongs to. // +kubebuilder:validation:MinLength=1 ClusterName string `json:"clusterName"` // Bootstrap is a reference to a local struct which encapsulates // fields to configure the Machine’s bootstrapping mechanism. Bootstrap Bootstrap `json:"bootstrap"` // InfrastructureRef is a required reference to a custom resource // offered by an infrastructure provider. InfrastructureRef corev1.ObjectReference `json:"infrastructureRef"` // Version defines the desired Kubernetes version. // This field is meant to be optionally used by bootstrap providers. // +optional Version *string `json:"version,omitempty"` // ProviderID is the identification ID of the machine provided by the provider. // This field must match the provider ID as seen on the node object corresponding to this machine. // This field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler // with cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out // machines at provider which could not get registered as Kubernetes nodes. With cluster-api as a // generic out-of-tree provider for autoscaler, this field is required by autoscaler to be // able to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver // and then a comparison is done to find out unregistered machines and are marked for delete. // This field will be set by the actuators and consumed by higher level entities like autoscaler that will // be interfacing with cluster-api as generic provider. // +optional ProviderID *string `json:"providerID,omitempty"` // FailureDomain is the failure domain the machine will be created in. // Must match a key in the FailureDomains map stored on the cluster object. // +optional FailureDomain *string `json:"failureDomain,omitempty"` // NodeDrainTimeout is the total amount of time that the controller will spend on draining a node. // The default value is 0, meaning that the node can be drained without any time limitations. // NOTE: NodeDrainTimeout is different from `kubectl drain --timeout` // +optional NodeDrainTimeout *metav1.Duration `json:"nodeDrainTimeout,omitempty"` // NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes // to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations. // +optional NodeVolumeDetachTimeout *metav1.Duration `json:"nodeVolumeDetachTimeout,omitempty"` // NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine // hosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely. // Defaults to 10 seconds. // +optional NodeDeletionTimeout *metav1.Duration `json:"nodeDeletionTimeout,omitempty"` }
MachineSpec defines the desired state of 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 { // NodeRef will point to the corresponding Node if it exists. // +optional NodeRef *corev1.ObjectReference `json:"nodeRef,omitempty"` // NodeInfo is a set of ids/uuids to uniquely identify the node. // More info: https://kubernetes.io/docs/concepts/nodes/node/#info // +optional NodeInfo *corev1.NodeSystemInfo `json:"nodeInfo,omitempty"` // LastUpdated identifies when the phase of the Machine last transitioned. // +optional LastUpdated *metav1.Time `json:"lastUpdated,omitempty"` // FailureReason will be set in the event that there is a terminal problem // reconciling the Machine and will contain a succinct value suitable // for machine interpretation. // // This field should not be set for transitive errors that a controller // faces that are expected to be fixed automatically over // time (like service outages), but instead indicate that something is // fundamentally wrong with the Machine's spec or the configuration of // the controller, and that manual intervention is required. Examples // of terminal errors would be invalid combinations of settings in the // spec, values that are unsupported by the controller, or the // responsible controller itself being critically misconfigured. // // Any transient errors that occur during the reconciliation of Machines // can be added as events to the Machine object and/or logged in the // controller's output. // +optional FailureReason *capierrors.MachineStatusError `json:"failureReason,omitempty"` // FailureMessage will be set in the event that there is a terminal problem // reconciling the Machine and will contain a more verbose string suitable // for logging and human consumption. // // This field should not be set for transitive errors that a controller // faces that are expected to be fixed automatically over // time (like service outages), but instead indicate that something is // fundamentally wrong with the Machine's spec or the configuration of // the controller, and that manual intervention is required. Examples // of terminal errors would be invalid combinations of settings in the // spec, values that are unsupported by the controller, or the // responsible controller itself being critically misconfigured. // // Any transient errors that occur during the reconciliation of Machines // can be added as events to the Machine object and/or logged in the // controller's output. // +optional FailureMessage *string `json:"failureMessage,omitempty"` // Addresses is a list of addresses assigned to the machine. // This field is copied from the infrastructure provider reference. // +optional Addresses MachineAddresses `json:"addresses,omitempty"` // Phase represents the current phase of machine actuation. // E.g. Pending, Running, Terminating, Failed etc. // +optional Phase string `json:"phase,omitempty"` // CertificatesExpiryDate is the expiry date of the machine certificates. // This value is only set for control plane machines. // +optional CertificatesExpiryDate *metav1.Time `json:"certificatesExpiryDate,omitempty"` // BootstrapReady is the state of the bootstrap provider. // +optional BootstrapReady bool `json:"bootstrapReady"` // InfrastructureReady is the state of the infrastructure provider. // +optional InfrastructureReady bool `json:"infrastructureReady"` // ObservedGeneration is the latest generation observed by the controller. // +optional ObservedGeneration int64 `json:"observedGeneration,omitempty"` // Conditions defines current service state of the Machine. // +optional Conditions Conditions `json:"conditions,omitempty"` }
MachineStatus defines the observed state of 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.
func (*MachineStatus) GetTypedPhase ¶
func (m *MachineStatus) GetTypedPhase() MachinePhase
GetTypedPhase attempts to parse the Phase field and return the typed MachinePhase representation as described in `machine_phase_types.go`.
func (*MachineStatus) SetTypedPhase ¶
func (m *MachineStatus) SetTypedPhase(p MachinePhase)
SetTypedPhase sets the Phase field to the string representation of MachinePhase.
type MachineTemplateSpec ¶
type MachineTemplateSpec struct { // Standard object's metadata. // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata // +optional ObjectMeta `json:"metadata,omitempty"` // Specification of the desired behavior of the machine. // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status // +optional Spec MachineSpec `json:"spec,omitempty"` }
MachineTemplateSpec describes the data needed to create a Machine from a template.
func (*MachineTemplateSpec) DeepCopy ¶
func (in *MachineTemplateSpec) DeepCopy() *MachineTemplateSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineTemplateSpec.
func (*MachineTemplateSpec) DeepCopyInto ¶
func (in *MachineTemplateSpec) DeepCopyInto(out *MachineTemplateSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type NetworkRanges ¶
type NetworkRanges struct {
CIDRBlocks []string `json:"cidrBlocks"`
}
NetworkRanges represents ranges of network addresses.
func (*NetworkRanges) DeepCopy ¶
func (in *NetworkRanges) DeepCopy() *NetworkRanges
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkRanges.
func (*NetworkRanges) DeepCopyInto ¶
func (in *NetworkRanges) DeepCopyInto(out *NetworkRanges)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (NetworkRanges) String ¶
func (n NetworkRanges) String() string
type ObjectMeta ¶
type ObjectMeta struct { // Map of string keys and values that can be used to organize and categorize // (scope and select) objects. May match selectors of replication controllers // and services. // More info: http://kubernetes.io/docs/user-guide/labels // +optional Labels map[string]string `json:"labels,omitempty"` // Annotations is an unstructured key value map stored with a resource that may be // set by external tools to store and retrieve arbitrary metadata. They are not // queryable and should be preserved when modifying objects. // More info: http://kubernetes.io/docs/user-guide/annotations // +optional Annotations map[string]string `json:"annotations,omitempty"` }
ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create. This is a copy of customizable fields from metav1.ObjectMeta.
ObjectMeta is embedded in `Machine.Spec`, `MachineDeployment.Template` and `MachineSet.Template`, which are not top-level Kubernetes objects. Given that metav1.ObjectMeta has lots of special cases and read-only fields which end up in the generated CRD validation, having it as a subset simplifies the API and some issues that can impact user experience.
During the [upgrade to controller-tools@v2](https://github.com/kubernetes-sigs/cluster-api/pull/1054) for v1alpha2, we noticed a failure would occur running Cluster API test suite against the new CRDs, specifically `spec.metadata.creationTimestamp in body must be of type string: "null"`. The investigation showed that `controller-tools@v2` behaves differently than its previous version when handling types from metav1(k8s.io/apimachinery/pkg/apis/meta/v1) package.
In more details, we found that embedded (non-top level) types that embedded `metav1.ObjectMeta` had validation properties, including for `creationTimestamp` (metav1.Time). The `metav1.Time` type specifies a custom json marshaller that, when IsZero() is true, returns `null` which breaks validation because the field isn't marked as nullable.
In future versions, controller-tools@v2 might allow overriding the type and validation for embedded types. When that happens, this hack should be revisited.
func (*ObjectMeta) DeepCopy ¶
func (in *ObjectMeta) DeepCopy() *ObjectMeta
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ObjectMeta.
func (*ObjectMeta) DeepCopyInto ¶
func (in *ObjectMeta) DeepCopyInto(out *ObjectMeta)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PatchDefinition ¶
type PatchDefinition struct { // Selector defines on which templates the patch should be applied. Selector PatchSelector `json:"selector"` // JSONPatches defines the patches which should be applied on the templates // matching the selector. // Note: Patches will be applied in the order of the array. JSONPatches []JSONPatch `json:"jsonPatches"` }
PatchDefinition defines a patch which is applied to customize the referenced templates.
func (*PatchDefinition) DeepCopy ¶
func (in *PatchDefinition) DeepCopy() *PatchDefinition
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PatchDefinition.
func (*PatchDefinition) DeepCopyInto ¶
func (in *PatchDefinition) DeepCopyInto(out *PatchDefinition)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PatchSelector ¶
type PatchSelector struct { // APIVersion filters templates by apiVersion. APIVersion string `json:"apiVersion"` // Kind filters templates by kind. Kind string `json:"kind"` // MatchResources selects templates based on where they are referenced. MatchResources PatchSelectorMatch `json:"matchResources"` }
PatchSelector defines on which templates the patch should be applied. Note: Matching on APIVersion and Kind is mandatory, to enforce that the patches are written for the correct version. The version of the references in the ClusterClass may be automatically updated during reconciliation if there is a newer version for the same contract. Note: The results of selection based on the individual fields are ANDed.
func (*PatchSelector) DeepCopy ¶
func (in *PatchSelector) DeepCopy() *PatchSelector
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PatchSelector.
func (*PatchSelector) DeepCopyInto ¶
func (in *PatchSelector) DeepCopyInto(out *PatchSelector)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PatchSelectorMatch ¶
type PatchSelectorMatch struct { // ControlPlane selects templates referenced in .spec.ControlPlane. // Note: this will match the controlPlane and also the controlPlane // machineInfrastructure (depending on the kind and apiVersion). // +optional ControlPlane bool `json:"controlPlane,omitempty"` // InfrastructureCluster selects templates referenced in .spec.infrastructure. // +optional InfrastructureCluster bool `json:"infrastructureCluster,omitempty"` // MachineDeploymentClass selects templates referenced in specific MachineDeploymentClasses in // .spec.workers.machineDeployments. // +optional MachineDeploymentClass *PatchSelectorMatchMachineDeploymentClass `json:"machineDeploymentClass,omitempty"` }
PatchSelectorMatch selects templates based on where they are referenced. Note: The selector must match at least one template. Note: The results of selection based on the individual fields are ORed.
func (*PatchSelectorMatch) DeepCopy ¶
func (in *PatchSelectorMatch) DeepCopy() *PatchSelectorMatch
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PatchSelectorMatch.
func (*PatchSelectorMatch) DeepCopyInto ¶
func (in *PatchSelectorMatch) DeepCopyInto(out *PatchSelectorMatch)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PatchSelectorMatchMachineDeploymentClass ¶
type PatchSelectorMatchMachineDeploymentClass struct { // Names selects templates by class names. // +optional Names []string `json:"names,omitempty"` }
PatchSelectorMatchMachineDeploymentClass selects templates referenced in specific MachineDeploymentClasses in .spec.workers.machineDeployments.
func (*PatchSelectorMatchMachineDeploymentClass) DeepCopy ¶
func (in *PatchSelectorMatchMachineDeploymentClass) DeepCopy() *PatchSelectorMatchMachineDeploymentClass
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PatchSelectorMatchMachineDeploymentClass.
func (*PatchSelectorMatchMachineDeploymentClass) DeepCopyInto ¶
func (in *PatchSelectorMatchMachineDeploymentClass) DeepCopyInto(out *PatchSelectorMatchMachineDeploymentClass)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Topology ¶
type Topology struct { // The name of the ClusterClass object to create the topology. Class string `json:"class"` // The Kubernetes version of the cluster. Version string `json:"version"` // RolloutAfter performs a rollout of the entire cluster one component at a time, // control plane first and then machine deployments. // +optional // Deprecated: This field has no function and is going to be removed in the next apiVersion. RolloutAfter *metav1.Time `json:"rolloutAfter,omitempty"` // ControlPlane describes the cluster control plane. // +optional ControlPlane ControlPlaneTopology `json:"controlPlane,omitempty"` // Workers encapsulates the different constructs that form the worker nodes // for the cluster. // +optional Workers *WorkersTopology `json:"workers,omitempty"` // Variables can be used to customize the Cluster through // patches. They must comply to the corresponding // VariableClasses defined in the ClusterClass. // +optional Variables []ClusterVariable `json:"variables,omitempty"` }
Topology encapsulates the information of the managed resources.
func (*Topology) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Topology.
func (*Topology) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type UnhealthyCondition ¶
type UnhealthyCondition struct { // +kubebuilder:validation:Type=string // +kubebuilder:validation:MinLength=1 Type corev1.NodeConditionType `json:"type"` // +kubebuilder:validation:Type=string // +kubebuilder:validation:MinLength=1 Status corev1.ConditionStatus `json:"status"` Timeout metav1.Duration `json:"timeout"` }
UnhealthyCondition represents a Node condition type and value with a timeout specified as a duration. When the named condition has been in the given status for at least the timeout value, a node is considered unhealthy.
func (*UnhealthyCondition) DeepCopy ¶
func (in *UnhealthyCondition) DeepCopy() *UnhealthyCondition
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UnhealthyCondition.
func (*UnhealthyCondition) DeepCopyInto ¶
func (in *UnhealthyCondition) DeepCopyInto(out *UnhealthyCondition)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type VariableSchema ¶
type VariableSchema struct { // OpenAPIV3Schema defines the schema of a variable via OpenAPI v3 // schema. The schema is a subset of the schema used in // Kubernetes CRDs. OpenAPIV3Schema JSONSchemaProps `json:"openAPIV3Schema"` }
VariableSchema defines the schema of a variable.
func (*VariableSchema) DeepCopy ¶
func (in *VariableSchema) DeepCopy() *VariableSchema
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VariableSchema.
func (*VariableSchema) DeepCopyInto ¶
func (in *VariableSchema) DeepCopyInto(out *VariableSchema)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type WorkersClass ¶
type WorkersClass struct { // MachineDeployments is a list of machine deployment classes that can be used to create // a set of worker nodes. // +optional MachineDeployments []MachineDeploymentClass `json:"machineDeployments,omitempty"` }
WorkersClass is a collection of deployment classes.
func (*WorkersClass) DeepCopy ¶
func (in *WorkersClass) DeepCopy() *WorkersClass
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkersClass.
func (*WorkersClass) DeepCopyInto ¶
func (in *WorkersClass) DeepCopyInto(out *WorkersClass)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type WorkersTopology ¶
type WorkersTopology struct { // MachineDeployments is a list of machine deployments in the cluster. // +optional MachineDeployments []MachineDeploymentTopology `json:"machineDeployments,omitempty"` }
WorkersTopology represents the different sets of worker nodes in the cluster.
func (*WorkersTopology) DeepCopy ¶
func (in *WorkersTopology) DeepCopy() *WorkersTopology
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkersTopology.
func (*WorkersTopology) DeepCopyInto ¶
func (in *WorkersTopology) DeepCopyInto(out *WorkersTopology)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
Source Files ¶
- cluster_phase_types.go
- cluster_types.go
- clusterclass_types.go
- common_types.go
- condition_consts.go
- condition_types.go
- conversion.go
- doc.go
- groupversion_info.go
- machine_phase_types.go
- machine_types.go
- machine_webhook.go
- machinedeployment_types.go
- machinedeployment_webhook.go
- machinehealthcheck_types.go
- machinehealthcheck_webhook.go
- machineset_types.go
- machineset_webhook.go
- zz_generated.deepcopy.go
- zz_generated.openapi.go