Documentation
¶
Overview ¶
Package v1 contains API Schema definitions for the v1 API group +kubebuilder:object:generate=true +groupName=piraeus.io
Index ¶
- Variables
- type CAReference
- type ClusterReference
- type ComponentSpec
- type DeletionPolicy
- type DeploymentComponentSpec
- func (in *DeploymentComponentSpec) DeepCopy() *DeploymentComponentSpec
- func (in *DeploymentComponentSpec) DeepCopyInto(out *DeploymentComponentSpec)
- func (d *DeploymentComponentSpec) GetReplicas() *int32
- func (d *DeploymentComponentSpec) GetTemplate() json.RawMessage
- func (d *DeploymentComponentSpec) IsEnabled() bool
- type EvacuationStrategy
- type IPFamily
- type LinstorCluster
- type LinstorClusterApiTLS
- func (in *LinstorClusterApiTLS) DeepCopy() *LinstorClusterApiTLS
- func (in *LinstorClusterApiTLS) DeepCopyInto(out *LinstorClusterApiTLS)
- func (l *LinstorClusterApiTLS) GetAffinityControllerSecretName() string
- func (l *LinstorClusterApiTLS) GetApiSecretName() string
- func (l *LinstorClusterApiTLS) GetClientSecretName() string
- func (l *LinstorClusterApiTLS) GetCsiControllerSecretName() string
- func (l *LinstorClusterApiTLS) GetCsiNodeSecretName() string
- func (l *LinstorClusterApiTLS) GetNFSServerSecretName() string
- type LinstorClusterList
- type LinstorClusterSpec
- type LinstorClusterStatus
- type LinstorControllerProperty
- type LinstorExternalControllerRef
- type LinstorNodeConnection
- type LinstorNodeConnectionList
- type LinstorNodeConnectionPath
- type LinstorNodeConnectionSpec
- type LinstorNodeConnectionStatus
- type LinstorNodeProperty
- type LinstorNodePropertyExpandFrom
- type LinstorNodePropertyValueFrom
- type LinstorSatellite
- type LinstorSatelliteConfiguration
- type LinstorSatelliteConfigurationList
- type LinstorSatelliteConfigurationSpec
- type LinstorSatelliteConfigurationStatus
- type LinstorSatelliteList
- type LinstorSatelliteSpec
- type LinstorSatelliteStatus
- type LinstorStoragePool
- func (p *LinstorStoragePool) BackendProbeCommand() []string
- func (in *LinstorStoragePool) DeepCopy() *LinstorStoragePool
- func (in *LinstorStoragePool) DeepCopyInto(out *LinstorStoragePool)
- func (p *LinstorStoragePool) PoolName() string
- func (p *LinstorStoragePool) ProviderKind() lclient.ProviderKind
- type LinstorStoragePoolFile
- type LinstorStoragePoolLvm
- type LinstorStoragePoolLvmThin
- type LinstorStoragePoolSource
- type LinstorStoragePoolZfs
- type MatchLabelSelector
- type MatchLabelSelectorOperator
- type Patch
- type PatchArgs
- type Selector
- type SelectorTerm
- type TLSConfig
- type TLSConfigWithHandshakeDaemon
Constants ¶
This section is empty.
Variables ¶
var ( // GroupVersion is group version used to register these objects GroupVersion = schema.GroupVersion{Group: "piraeus.io", Version: "v1"} // SchemeBuilder is used to add go types to the GroupVersionKind scheme SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion} // AddToScheme adds the types in this group-version to the given scheme. AddToScheme = SchemeBuilder.AddToScheme )
Functions ¶
This section is empty.
Types ¶
type CAReference ¶ added in v2.5.2
type CAReference struct {
// Kind of the resource containing the CA Certificate, either a ConfigMap or Secret.
// +kubebuilder:default:=Secret
// +kubebuilder:validation:Enum:=ConfigMap;Secret
// +kubebuilder:validation:Optional
Kind string `json:"kind,omitempty"`
// Name of the resource containing the CA Certificate.
// +kubebuilder:validation:Required
Name string `json:"name"`
// Key to select in the resource.
// Defaults to ca.crt if not specified.
// +kubebuilder:default:=ca.crt
// +kubebuilder:validation:Optional
Key string `json:"key,omitempty"`
// Optional specifies whether the resource and its key must exist.
// +kubebuilder:validation:Optional
Optional *bool `json:"optional,omitempty"`
}
func (*CAReference) DeepCopy ¶ added in v2.5.2
func (in *CAReference) DeepCopy() *CAReference
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CAReference.
func (*CAReference) DeepCopyInto ¶ added in v2.5.2
func (in *CAReference) DeepCopyInto(out *CAReference)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*CAReference) ToEnvVarSource ¶ added in v2.5.2
func (c *CAReference) ToEnvVarSource(fallbackSecretName string) *corev1.EnvVarSource
func (*CAReference) ToVolumeProjection ¶ added in v2.5.2
func (c *CAReference) ToVolumeProjection(fallbackSecretName string) corev1.VolumeProjection
type ClusterReference ¶
type ClusterReference struct {
// Name of the LinstorCluster resource controlling this satellite.
Name string `json:"name,omitempty"`
// ClientSecretName references the secret used by the operator to validate the https endpoint.
ClientSecretName string `json:"clientSecretName,omitempty"`
// CAReference configures the CA certificate to use when validating TLS certificates.
// If not set, the TLS secret is expected to contain a "ca.crt" containing the CA certificate.
//+kubebuilder:validation:Optional
CAReference *CAReference `json:"caReference,omitempty"`
// ExternalController references an external controller.
// When set, the Operator uses the external cluster to register satellites.
// +kubebuilder:validation:Optional
ExternalController *LinstorExternalControllerRef `json:"externalController,omitempty"`
}
func (*ClusterReference) DeepCopy ¶
func (in *ClusterReference) DeepCopy() *ClusterReference
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterReference.
func (*ClusterReference) DeepCopyInto ¶
func (in *ClusterReference) DeepCopyInto(out *ClusterReference)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ComponentSpec ¶ added in v2.3.0
type ComponentSpec struct {
// Enable the component.
// +kubebuilder:default:=true
// +kubebuilder:validation:Optional
Enabled bool `json:"enabled,omitempty"`
// Template to apply to Pods of the component.
//
// The template is applied as a patch to the default deployment, so it can be "sparse", not listing any
// containers or volumes that should remain unchanged.
// See https://kubernetes.io/docs/concepts/workloads/pods/#pod-templates
// +kubebuilder:validation:Optional
// +kubebuilder:validation:Schemaless
// +kubebuilder:validation:Type=object
// +kubebuilder:pruning:PreserveUnknownFields
// +structType=atomic
PodTemplate json.RawMessage `json:"podTemplate,omitempty"`
}
func (*ComponentSpec) DeepCopy ¶ added in v2.3.0
func (in *ComponentSpec) DeepCopy() *ComponentSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ComponentSpec.
func (*ComponentSpec) DeepCopyInto ¶ added in v2.3.0
func (in *ComponentSpec) DeepCopyInto(out *ComponentSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ComponentSpec) GetTemplate ¶ added in v2.3.0
func (c *ComponentSpec) GetTemplate() json.RawMessage
func (*ComponentSpec) IsEnabled ¶ added in v2.3.0
func (c *ComponentSpec) IsEnabled() bool
type DeletionPolicy ¶ added in v2.9.0
type DeletionPolicy string
DeletionPolicy configures the way LinstorSatellite resources are deleted.
A LinstorSatellite may be deleted because: * It no longer matches the affinity and node selector of the LinstorCluster resource. * The node it references has been removed from Kubernetes. * It was manually deleted outside the Operator.
A LinstorSatellite may store the last copy of a volume, in which case it is not desirable to unconditionally remove the satellite from the cluster. For this reason, the following deletion policies exist:
* DeletionPolicyEvacuate will start evacuation of the LINSTOR Satellite and wait until it completes before removing the LinstorSatellite object, comparable to the "linstor node evacuate" command. * DeletionPolicyRetain will retain the LINSTOR Satellite, keeping it registered in LINSTOR, but removing associated Kubernetes resources. * DeletionPolicyDelete will remove the LINSTOR Satellite from the LINSTOR Cluster without prior eviction, comparable to the "linstor node lost" command. +kubebuilder:validation:Enum:=Evacuate;Retain;Delete
const ( DeletionPolicyEvacuate DeletionPolicy = "Evacuate" DeletionPolicyRetain DeletionPolicy = "Retain" DeletionPolicyDelete DeletionPolicy = "Delete" )
type DeploymentComponentSpec ¶ added in v2.10.0
type DeploymentComponentSpec struct {
ComponentSpec `json:",inline"`
// Number of desired pods. Defaults to 1.
// +kubebuilder:validation:Optional
// +kubebuilder:validation:Minimum=0
Replicas *int32 `json:"replicas,omitempty"`
}
func (*DeploymentComponentSpec) DeepCopy ¶ added in v2.10.0
func (in *DeploymentComponentSpec) DeepCopy() *DeploymentComponentSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeploymentComponentSpec.
func (*DeploymentComponentSpec) DeepCopyInto ¶ added in v2.10.0
func (in *DeploymentComponentSpec) DeepCopyInto(out *DeploymentComponentSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*DeploymentComponentSpec) GetReplicas ¶ added in v2.10.0
func (d *DeploymentComponentSpec) GetReplicas() *int32
func (*DeploymentComponentSpec) GetTemplate ¶ added in v2.10.0
func (d *DeploymentComponentSpec) GetTemplate() json.RawMessage
func (*DeploymentComponentSpec) IsEnabled ¶ added in v2.10.0
func (d *DeploymentComponentSpec) IsEnabled() bool
type EvacuationStrategy ¶ added in v2.10.2
type EvacuationStrategy struct {
// AttachedVolumeReattachTimeout configures how long evacuation waits for attached volumes to reattach on
// different nodes. Setting this to 0 disable this evacuation step.
// +kubebuilder:validation:Optional
// +kubebuilder:default:="5m"
AttachedVolumeReattachTimeout metav1.Duration `json:"attachedVolumeReattachTimeout"`
// UnattachedVolumeAttachTimeout configures how long evacuation waits for unattached volumes to attach on
// different nodes. Setting this to 0 disable this evacuation step.
// +kubebuilder:validation:Optional
// +kubebuilder:default:="5m"
UnattachedVolumeAttachTimeout metav1.Duration `json:"unattachedVolumeAttachTimeout"`
}
EvacuationStrategy configures the evacuation of volumes from a Satellite when DeletionPolicy "Evacuate" is used.
func (*EvacuationStrategy) DeepCopy ¶ added in v2.10.2
func (in *EvacuationStrategy) DeepCopy() *EvacuationStrategy
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EvacuationStrategy.
func (*EvacuationStrategy) DeepCopyInto ¶ added in v2.10.2
func (in *EvacuationStrategy) DeepCopyInto(out *EvacuationStrategy)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type IPFamily ¶ added in v2.7.0
IPFamily represents the IP Family (IPv4 or IPv6). +kubebuilder:validation:Enum:=IPv4;IPv6
type LinstorCluster ¶
type LinstorCluster struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec LinstorClusterSpec `json:"spec,omitempty"`
Status LinstorClusterStatus `json:"status,omitempty"`
}
LinstorCluster is the Schema for the linstorclusters API +kubebuilder:object:root=true +kubebuilder:subresource:status +kubebuilder:resource:scope=Cluster +kubebuilder:printcolumn:name="Available",type=string,JSONPath=`.status.conditions[?(@.type=='Available')].status`,description="If the LINSTOR Cluster is available" +kubebuilder:printcolumn:name="Configured",type=string,JSONPath=`.status.conditions[?(@.type=='Configured')].status`,description="If the LINSTOR Cluster is fully configured" +kubebuilder:printcolumn:name="Version",type=string,JSONPath=`.status.version`,description="The version of the LINSTOR Cluster",priority=10 +kubebuilder:printcolumn:name="Satellites",type=string,JSONPath=`.status.satellites`,description="The number of running/expected Satellites" +kubebuilder:printcolumn:name="Used Capacity",type=string,JSONPath=`.status.capacity`,description="The used capacity in all storage pools" +kubebuilder:printcolumn:name="Volumes",type=integer,JSONPath=`.status.numberOfVolumes`,description="The number of volumes in the cluster" +kubebuilder:printcolumn:name="Snapshots",type=integer,JSONPath=`.status.numberOfSnapshots`,description="The number of snapshots in the cluster",priority=10 +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp"
func (*LinstorCluster) DeepCopy ¶
func (in *LinstorCluster) DeepCopy() *LinstorCluster
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinstorCluster.
func (*LinstorCluster) DeepCopyInto ¶
func (in *LinstorCluster) DeepCopyInto(out *LinstorCluster)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*LinstorCluster) DeepCopyObject ¶
func (in *LinstorCluster) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type LinstorClusterApiTLS ¶
type LinstorClusterApiTLS struct {
// ApiSecretName references a secret holding the TLS key and certificate used to protect the API.
// Defaults to "linstor-api-tls".
//+kubebuilder:validation:Optional
ApiSecretName string `json:"apiSecretName,omitempty"`
// ClientSecretName references a secret holding the TLS key and certificate used by the operator to configure
// the cluster. Defaults to "linstor-client-tls".
//+kubebuilder:validation:Optional
ClientSecretName string `json:"clientSecretName,omitempty"`
// CsiControllerSecretName references a secret holding the TLS key and certificate used by the CSI Controller
// to provision volumes. Defaults to "linstor-csi-controller-tls".
//+kubebuilder:validation:Optional
CsiControllerSecretName string `json:"csiControllerSecretName,omitempty"`
// CsiNodeSecretName references a secret holding the TLS key and certificate used by the CSI Nodes to query
// the volume state. Defaults to "linstor-csi-node-tls".
//+kubebuilder:validation:Optional
CsiNodeSecretName string `json:"csiNodeSecretName,omitempty"`
// AffinityControllerSecretName references a secret holding the TLS key and certificate used by the Affinity
// Controller to monitor volume state. Defaults to "linstor-affinity-controller-tls".
//+kubebuilder:validation:Optional
AffinityControllerSecretName string `json:"affinityControllerSecretName,omitempty"`
// NFSServerSecretName references a secret holding the TLS key and certificate used by the NFS Server to query
// the cluster state. Defaults to "linstor-csi-nfs-server-tls".
//+kubebuilder:validation:Optional
NFSServerSecretName string `json:"nfsServerSecretName,omitempty"`
// CertManager references a cert-manager Issuer or ClusterIssuer.
// If set, cert-manager.io/Certificate resources will be created, provisioning the secrets referenced in
// *SecretName using the issuer configured here.
//+kubebuilder:validation:Optional
CertManager *cmmetav1.ObjectReference `json:"certManager,omitempty"`
// CAReference configures the CA certificate to use when validating TLS certificates.
// If not set, the TLS secret is expected to contain a "ca.crt" containing the CA certificate.
//+kubebuilder:validation:Optional
CAReference *CAReference `json:"caReference,omitempty"`
}
func (*LinstorClusterApiTLS) DeepCopy ¶
func (in *LinstorClusterApiTLS) DeepCopy() *LinstorClusterApiTLS
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinstorClusterApiTLS.
func (*LinstorClusterApiTLS) DeepCopyInto ¶
func (in *LinstorClusterApiTLS) DeepCopyInto(out *LinstorClusterApiTLS)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*LinstorClusterApiTLS) GetAffinityControllerSecretName ¶ added in v2.10.0
func (l *LinstorClusterApiTLS) GetAffinityControllerSecretName() string
func (*LinstorClusterApiTLS) GetApiSecretName ¶
func (l *LinstorClusterApiTLS) GetApiSecretName() string
func (*LinstorClusterApiTLS) GetClientSecretName ¶
func (l *LinstorClusterApiTLS) GetClientSecretName() string
func (*LinstorClusterApiTLS) GetCsiControllerSecretName ¶
func (l *LinstorClusterApiTLS) GetCsiControllerSecretName() string
func (*LinstorClusterApiTLS) GetCsiNodeSecretName ¶
func (l *LinstorClusterApiTLS) GetCsiNodeSecretName() string
func (*LinstorClusterApiTLS) GetNFSServerSecretName ¶ added in v2.10.0
func (l *LinstorClusterApiTLS) GetNFSServerSecretName() string
type LinstorClusterList ¶
type LinstorClusterList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []LinstorCluster `json:"items"`
}
LinstorClusterList contains a list of LinstorCluster +kubebuilder:object:root=true
func (*LinstorClusterList) DeepCopy ¶
func (in *LinstorClusterList) DeepCopy() *LinstorClusterList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinstorClusterList.
func (*LinstorClusterList) DeepCopyInto ¶
func (in *LinstorClusterList) DeepCopyInto(out *LinstorClusterList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*LinstorClusterList) DeepCopyObject ¶
func (in *LinstorClusterList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type LinstorClusterSpec ¶
type LinstorClusterSpec struct {
// Repository used to pull workload images.
// +kubebuilder:validation:Optional
Repository string `json:"repository,omitempty"`
// ExternalController references an external controller.
// When set, the Operator will skip deploying a LINSTOR Controller and instead use the external cluster
// to register satellites.
// +kubebuilder:validation:Optional
ExternalController *LinstorExternalControllerRef `json:"externalController,omitempty"`
// NodeSelector selects the nodes on which LINSTOR Satellites will be deployed.
// See https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
// +kubebuilder:validation:Optional
NodeSelector map[string]string `json:"nodeSelector,omitempty"`
// NodeAffinity selects the nodes on which LINSTOR Satellites will be deployed.
// See https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
// +kubebuilder:validation:Optional
NodeAffinity *corev1.NodeSelector `json:"nodeAffinity,omitempty"`
// Tolerations selects the nodes on which LINSTOR Satellites will be deployed.
//
// The default tolerations for DaemonSets are automatically added.
// +kubebuilder:validation:Optional
// +listType=atomic
Tolerations []corev1.Toleration `json:"tolerations,omitempty"`
// Properties to apply on the cluster level.
//
// Use to create default settings for DRBD that should apply to all resources or to configure some other cluster
// wide default.
// +kubebuilder:validation:Optional
// +listType=map
// +listMapKey=name
// +patchMergeKey=name
// +patchStrategy=merge
Properties []LinstorControllerProperty `json:"properties,omitempty"`
// Patches is a list of kustomize patches to apply.
//
// See https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/patches/ for how to create patches.
// +kubebuilder:validation:Optional
Patches []Patch `json:"patches,omitempty"`
// LinstorPassphraseSecret used to configure the LINSTOR master passphrase.
//
// The referenced secret must contain a single key "MASTER_PASSPHRASE". The master passphrase is used to
// * Derive encryption keys for volumes using the LUKS layer.
// * Store credentials for accessing remotes for backups.
// See https://linbit.com/drbd-user-guide/linstor-guide-1_0-en/#s-encrypt_commands for more information.
// +kubebuilder:validation:Optional
LinstorPassphraseSecret string `json:"linstorPassphraseSecret,omitempty"`
// InternalTLS secures the connection between LINSTOR Controller and Satellite.
//
// This configures the client certificate used when the Controller connects to a Satellite. This only has an effect
// when the Satellite is configured to for secure connections using `LinstorSatellite.spec.internalTLS`.
// +kubebuilder:validation:Optional
// + See LinstorSatelliteSpec.InternalTLS for why nullable is needed.
// +nullable
InternalTLS *TLSConfig `json:"internalTLS,omitempty"`
// ApiTLS secures the LINSTOR API.
//
// This configures the TLS key and certificate used to secure the LINSTOR API.
// +kubebuilder:validation:Optional
// + See LinstorSatelliteSpec.InternalTLS for why nullable is needed.
// +nullable
ApiTLS *LinstorClusterApiTLS `json:"apiTLS,omitempty"`
// Controller controls the deployment of the LINSTOR Controller Deployment.
// +kubebuilder:validation:Optional
Controller *ComponentSpec `json:"controller,omitempty"`
// CSIController controls the deployment of the CSI Controller Deployment.
// +kubebuilder:validation:Optional
CSIController *DeploymentComponentSpec `json:"csiController,omitempty"`
// CSINode controls the deployment of the CSI Node DaemonSet.
// +kubebuilder:validation:Optional
CSINode *ComponentSpec `json:"csiNode,omitempty"`
// HighAvailabilityController controls the deployment of the High Availability Controller DaemonSet.
// +kubebuilder:validation:Optional
HighAvailabilityController *ComponentSpec `json:"highAvailabilityController,omitempty"`
// AffinityController controls the deployment of the Affinity Controller Deployment.
// +kubebuilder:validation:Optional
AffinityController *DeploymentComponentSpec `json:"affinityController,omitempty"`
// NFSServer controls the deployment of the LINSTOR CSI NFS Server DaemonSet.
// +kubebuilder:validation:Optional
NFSServer *ComponentSpec `json:"nfsServer,omitempty"`
}
LinstorClusterSpec defines the desired state of LinstorCluster
func (*LinstorClusterSpec) DeepCopy ¶
func (in *LinstorClusterSpec) DeepCopy() *LinstorClusterSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinstorClusterSpec.
func (*LinstorClusterSpec) DeepCopyInto ¶
func (in *LinstorClusterSpec) DeepCopyInto(out *LinstorClusterSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type LinstorClusterStatus ¶
type LinstorClusterStatus struct {
// Current LINSTOR Cluster state
// +kubebuilder:validation:Optional
// +listType=map
// +listMapKey=type
Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`
// The Version of the LINSTOR Cluster.
//+kubebuilder:validation:Optional
Version string `json:"version,omitempty"`
// The number of LINSTOR Satellites that are expected to run.
//+kubebuilder:validation:Optional
ScheduledSatellites *int32 `json:"scheduledSatellites"`
// The number of LINSTOR Satellites currently running.
//+kubebuilder:validation:Optional
RunningSatellites *int32 `json:"runningSatellites"`
// The number of volumes in the LINSTOR Cluster.
//+kubebuilder:validation:Optional
NumberOfVolumes *int32 `json:"numberOfVolumes"`
// The number of snapshots in the LINSTOR Cluster.
//+kubebuilder:validation:Optional
NumberOfSnapshots *int32 `json:"numberOfSnapshots"`
// The number of bytes in total in all storage pools in the LINSTOR Cluster.
//+kubebuilder:validation:Optional
TotalCapacityBytes *int64 `json:"availableCapacityBytes"`
// The number of bytes free in all storage pools in the LINSTOR Cluster.
//+kubebuilder:validation:Optional
FreeCapacityBytes *int64 `json:"freeCapacityBytes"`
// Satellites mirrors the information from ScheduledSatellites and RunningSatellites in a human-readable string
//+kubebuilder:validation:Optional
Satellites string `json:"satellites"`
// Capacity mirrors the information from TotalCapacityBytes and FreeCapacityBytes in a human-readable string
//+kubebuilder:validation:Optional
Capacity string `json:"capacity"`
}
LinstorClusterStatus defines the observed state of LinstorCluster
func (*LinstorClusterStatus) DeepCopy ¶
func (in *LinstorClusterStatus) DeepCopy() *LinstorClusterStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinstorClusterStatus.
func (*LinstorClusterStatus) DeepCopyInto ¶
func (in *LinstorClusterStatus) DeepCopyInto(out *LinstorClusterStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type LinstorControllerProperty ¶
type LinstorControllerProperty struct {
// Name of the property to set.
//+kubebuilder:validation:MinLength=1
//+kubebuilder:validation:Required
Name string `json:"name"`
// Value to set the property to.
Value string `json:"value,omitempty"`
}
func (*LinstorControllerProperty) DeepCopy ¶
func (in *LinstorControllerProperty) DeepCopy() *LinstorControllerProperty
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinstorControllerProperty.
func (*LinstorControllerProperty) DeepCopyInto ¶
func (in *LinstorControllerProperty) DeepCopyInto(out *LinstorControllerProperty)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type LinstorExternalControllerRef ¶ added in v2.1.0
type LinstorExternalControllerRef struct {
// URL of the external controller.
//+kubebuilder:validation:MinLength=3
URL string `json:"url"`
}
func (*LinstorExternalControllerRef) DeepCopy ¶ added in v2.1.0
func (in *LinstorExternalControllerRef) DeepCopy() *LinstorExternalControllerRef
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinstorExternalControllerRef.
func (*LinstorExternalControllerRef) DeepCopyInto ¶ added in v2.1.0
func (in *LinstorExternalControllerRef) DeepCopyInto(out *LinstorExternalControllerRef)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type LinstorNodeConnection ¶ added in v2.2.0
type LinstorNodeConnection struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec LinstorNodeConnectionSpec `json:"spec,omitempty"`
Status LinstorNodeConnectionStatus `json:"status,omitempty"`
}
LinstorNodeConnection is the Schema for the linstornodeconnections API +kubebuilder:object:root=true +kubebuilder:subresource:status +kubebuilder:resource:scope=Cluster +kubebuilder:printcolumn:name="Configured",type=string,JSONPath=`.status.conditions[?(@.type=='Configured')].status`,description="If the LINSTOR Node Connection is fully configured" +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp"
func (*LinstorNodeConnection) DeepCopy ¶ added in v2.2.0
func (in *LinstorNodeConnection) DeepCopy() *LinstorNodeConnection
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinstorNodeConnection.
func (*LinstorNodeConnection) DeepCopyInto ¶ added in v2.2.0
func (in *LinstorNodeConnection) DeepCopyInto(out *LinstorNodeConnection)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*LinstorNodeConnection) DeepCopyObject ¶ added in v2.2.0
func (in *LinstorNodeConnection) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type LinstorNodeConnectionList ¶ added in v2.2.0
type LinstorNodeConnectionList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []LinstorNodeConnection `json:"items"`
}
LinstorNodeConnectionList contains a list of LinstorNodeConnection
func (*LinstorNodeConnectionList) DeepCopy ¶ added in v2.2.0
func (in *LinstorNodeConnectionList) DeepCopy() *LinstorNodeConnectionList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinstorNodeConnectionList.
func (*LinstorNodeConnectionList) DeepCopyInto ¶ added in v2.2.0
func (in *LinstorNodeConnectionList) DeepCopyInto(out *LinstorNodeConnectionList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*LinstorNodeConnectionList) DeepCopyObject ¶ added in v2.2.0
func (in *LinstorNodeConnectionList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type LinstorNodeConnectionPath ¶ added in v2.2.0
type LinstorNodeConnectionPath struct {
// Name of the path.
// +required
// +kubebuilder:validation:Required
Name string `json:"name"`
// Interface to use on both nodes.
// +required
// +kubebuilder:validation:Required
Interface string `json:"interface"`
}
func (*LinstorNodeConnectionPath) DeepCopy ¶ added in v2.2.0
func (in *LinstorNodeConnectionPath) DeepCopy() *LinstorNodeConnectionPath
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinstorNodeConnectionPath.
func (*LinstorNodeConnectionPath) DeepCopyInto ¶ added in v2.2.0
func (in *LinstorNodeConnectionPath) DeepCopyInto(out *LinstorNodeConnectionPath)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type LinstorNodeConnectionSpec ¶ added in v2.2.0
type LinstorNodeConnectionSpec struct {
// Selector selects which pair of Satellites the connection should apply to.
// If not given, the connection will be applied to all connections.
// +kubebuilder:validation:Optional
Selector []SelectorTerm `json:"selector,omitempty"`
// Properties to apply for the node connection.
//
// Use to create default settings for DRBD that should apply to all resources connections between a set of
// cluster nodes.
// +kubebuilder:validation:Optional
// +listType=map
// +listMapKey=name
// +patchMergeKey=name
// +patchStrategy=merge
Properties []LinstorControllerProperty `json:"properties,omitempty"`
// Paths configure the network path used when connecting two nodes.
// +kubebuilder:validation:Optional
// +listType=map
// +listMapKey=name
// +patchMergeKey=name
// +patchStrategy=merge
Paths []LinstorNodeConnectionPath `json:"paths,omitempty"`
}
LinstorNodeConnectionSpec defines the desired state of LinstorNodeConnection
func (*LinstorNodeConnectionSpec) DeepCopy ¶ added in v2.2.0
func (in *LinstorNodeConnectionSpec) DeepCopy() *LinstorNodeConnectionSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinstorNodeConnectionSpec.
func (*LinstorNodeConnectionSpec) DeepCopyInto ¶ added in v2.2.0
func (in *LinstorNodeConnectionSpec) DeepCopyInto(out *LinstorNodeConnectionSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type LinstorNodeConnectionStatus ¶ added in v2.2.0
type LinstorNodeConnectionStatus struct {
// Current LINSTOR Node Connection state
// +kubebuilder:validation:Optional
// +listType=map
// +listMapKey=type
Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`
}
LinstorNodeConnectionStatus defines the observed state of LinstorNodeConnection
func (*LinstorNodeConnectionStatus) DeepCopy ¶ added in v2.2.0
func (in *LinstorNodeConnectionStatus) DeepCopy() *LinstorNodeConnectionStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinstorNodeConnectionStatus.
func (*LinstorNodeConnectionStatus) DeepCopyInto ¶ added in v2.2.0
func (in *LinstorNodeConnectionStatus) DeepCopyInto(out *LinstorNodeConnectionStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type LinstorNodeProperty ¶
type LinstorNodeProperty struct {
// Name of the property to set.
//+kubebuilder:validation:MinLength=1
//+kubebuilder:validation:Required
Name string `json:"name"`
// Value to set the property to.
//+kubebuilder:validation:Optional
Value string `json:"value,omitempty"`
// ValueFrom sets the value from an existing resource.
//+kubebuilder:validation:Optional
ValueFrom *LinstorNodePropertyValueFrom `json:"valueFrom,omitempty"`
// ExpandFrom can reference multiple resource fields at once.
// It either sets the property to an aggregate value based on matched resource fields, or expands to multiple
// properties.
//+kubebuilder:validation:Optional
ExpandFrom *LinstorNodePropertyExpandFrom `json:"expandFrom,omitempty"`
// Optional values are only set if they have a non-empty value
//+kubebuilder:validation:Optional
Optional bool `json:"optional,omitempty"`
}
func (*LinstorNodeProperty) DeepCopy ¶
func (in *LinstorNodeProperty) DeepCopy() *LinstorNodeProperty
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinstorNodeProperty.
func (*LinstorNodeProperty) DeepCopyInto ¶
func (in *LinstorNodeProperty) DeepCopyInto(out *LinstorNodeProperty)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type LinstorNodePropertyExpandFrom ¶ added in v2.6.0
type LinstorNodePropertyExpandFrom struct {
LinstorNodePropertyValueFrom `json:",inline"`
// NameTemplate defines how the property key is expanded.
// If set, the template is appended to the defined property name, creating multiple properties instead of one
// aggregate.
// * $1 is replaced with the matched key.
// * $2 is replaced with the matched value.
//+kubebuilder:validation:Optional
NameTemplate string `json:"nameTemplate,omitempty"`
// ValueTemplate defines how the property value is expanded.
// * $1 is replaced with the matched key.
// * $2 is replaced with the matched value.
//+kubebuilder:validation:Optional
ValueTemplate string `json:"valueTemplate,omitempty"`
// Delimiter used to join multiple key and value pairs together.
//+kubebuilder:validation:Optional
Delimiter string `json:"delimiter,omitempty"`
}
func (*LinstorNodePropertyExpandFrom) DeepCopy ¶ added in v2.6.0
func (in *LinstorNodePropertyExpandFrom) DeepCopy() *LinstorNodePropertyExpandFrom
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinstorNodePropertyExpandFrom.
func (*LinstorNodePropertyExpandFrom) DeepCopyInto ¶ added in v2.6.0
func (in *LinstorNodePropertyExpandFrom) DeepCopyInto(out *LinstorNodePropertyExpandFrom)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type LinstorNodePropertyValueFrom ¶
type LinstorNodePropertyValueFrom struct {
// Select a field of the node. Supports `metadata.name`, `metadata.labels['<KEY>']`, `metadata.annotations['<KEY>']`.
//+kubebuilder:validation:MinLength=1
//+kubebuilder:validation:Required
NodeFieldRef string `json:"nodeFieldRef,omitempty"`
}
func (*LinstorNodePropertyValueFrom) DeepCopy ¶
func (in *LinstorNodePropertyValueFrom) DeepCopy() *LinstorNodePropertyValueFrom
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinstorNodePropertyValueFrom.
func (*LinstorNodePropertyValueFrom) DeepCopyInto ¶
func (in *LinstorNodePropertyValueFrom) DeepCopyInto(out *LinstorNodePropertyValueFrom)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type LinstorSatellite ¶
type LinstorSatellite struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec LinstorSatelliteSpec `json:"spec,omitempty"`
Status LinstorSatelliteStatus `json:"status,omitempty"`
}
LinstorSatellite is the Schema for the linstorsatellites API +kubebuilder:object:root=true +kubebuilder:subresource:status +kubebuilder:resource:scope=Cluster +kubebuilder:printcolumn:name="Connected",type=string,JSONPath=`.status.conditions[?(@.type=='Available')].status`,description="If the LINSTOR Satellite is connected" +kubebuilder:printcolumn:name="Configured",type=string,JSONPath=`.status.conditions[?(@.type=='Configured')].status`,description="If the LINSTOR Satellite is fully configured" +kubebuilder:printcolumn:name="Applied Configurations",type=string,JSONPath=`.metadata.annotations.piraeus\.io/applied-configurations`,description="The Satellite Configurations applied to this Satellite",priority=10 +kubebuilder:printcolumn:name="Deletion Policy",type=string,JSONPath=`.spec.deletionPolicy`,description="The deletion policy of the Satellite" +kubebuilder:printcolumn:name="Used Capacity",type=string,JSONPath=`.status.capacity`,description="The used capacity on the node" +kubebuilder:printcolumn:name="Volumes",type=integer,JSONPath=`.status.numberOfVolumes`,description="The number of volumes on the node" +kubebuilder:printcolumn:name="Snapshots",type=integer,JSONPath=`.status.numberOfSnapshots`,description="The number of snapshots on the node",priority=10 +kubebuilder:printcolumn:name="Storage Providers",type=string,JSONPath=`.status.storageProviders`,description="The storage providers supported by the node",priority=10 +kubebuilder:printcolumn:name="Device Layers",type=string,JSONPath=`.status.deviceLayers`,description="The device layers supported by the node",priority=10 +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp"
func (*LinstorSatellite) DeepCopy ¶
func (in *LinstorSatellite) DeepCopy() *LinstorSatellite
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinstorSatellite.
func (*LinstorSatellite) DeepCopyInto ¶
func (in *LinstorSatellite) DeepCopyInto(out *LinstorSatellite)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*LinstorSatellite) DeepCopyObject ¶
func (in *LinstorSatellite) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type LinstorSatelliteConfiguration ¶
type LinstorSatelliteConfiguration struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec LinstorSatelliteConfigurationSpec `json:"spec,omitempty"`
Status LinstorSatelliteConfigurationStatus `json:"status,omitempty"`
}
LinstorSatelliteConfiguration is the Schema for the linstorsatelliteconfigurations API +kubebuilder:object:root=true +kubebuilder:subresource:status +kubebuilder:resource:scope=Cluster +kubebuilder:printcolumn:name="Selector",type=string,JSONPath=`.spec.nodeSelector`,description="The node selector used" +kubebuilder:printcolumn:name="Applied",type=string,JSONPath=`.status.conditions[?(@.type=='Applied')].status`,description="If the Configuration was applied" +kubebuilder:printcolumn:name="Matched",type=integer,JSONPath=`.status.matched`,description="Number of Satellites this Configuration has been applied to" +kubebuilder:printcolumn:name="Satellites",type=string,JSONPath=`.status.appliedTo`,description="Satellites this Configuration has been applied to",priority=10 +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp"
func (*LinstorSatelliteConfiguration) DeepCopy ¶
func (in *LinstorSatelliteConfiguration) DeepCopy() *LinstorSatelliteConfiguration
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinstorSatelliteConfiguration.
func (*LinstorSatelliteConfiguration) DeepCopyInto ¶
func (in *LinstorSatelliteConfiguration) DeepCopyInto(out *LinstorSatelliteConfiguration)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*LinstorSatelliteConfiguration) DeepCopyObject ¶
func (in *LinstorSatelliteConfiguration) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type LinstorSatelliteConfigurationList ¶
type LinstorSatelliteConfigurationList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []LinstorSatelliteConfiguration `json:"items"`
}
LinstorSatelliteConfigurationList contains a list of LinstorSatelliteConfiguration +kubebuilder:object:root=true
func (*LinstorSatelliteConfigurationList) DeepCopy ¶
func (in *LinstorSatelliteConfigurationList) DeepCopy() *LinstorSatelliteConfigurationList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinstorSatelliteConfigurationList.
func (*LinstorSatelliteConfigurationList) DeepCopyInto ¶
func (in *LinstorSatelliteConfigurationList) DeepCopyInto(out *LinstorSatelliteConfigurationList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*LinstorSatelliteConfigurationList) DeepCopyObject ¶
func (in *LinstorSatelliteConfigurationList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type LinstorSatelliteConfigurationSpec ¶
type LinstorSatelliteConfigurationSpec struct {
// NodeSelector selects which LinstorSatellite resources this spec should be applied to.
// See https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
// +kubebuilder:validation:Optional
NodeSelector map[string]string `json:"nodeSelector,omitempty"`
// NodeAffinity selects which LinstorSatellite resources this spec should be applied to.
// See https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
// +kubebuilder:validation:Optional
NodeAffinity *corev1.NodeSelector `json:"nodeAffinity,omitempty"`
// Patches is a list of kustomize patches to apply.
//
// See https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/patches/ for how to create patches.
// +kubebuilder:validation:Optional
Patches []Patch `json:"patches,omitempty"`
// StoragePools is a list of storage pools to configure on the node.
// +kubebuilder:validation:Optional
StoragePools []LinstorStoragePool `json:"storagePools,omitempty"`
// Properties is a list of properties to set on the node.
// +kubebuilder:validation:Optional
// +listType=map
// +listMapKey=name
// +patchMergeKey=name
// +patchStrategy=merge
Properties []LinstorNodeProperty `json:"properties,omitempty"`
// InternalTLS configures secure communication for the LINSTOR Satellite.
//
// If set, the control traffic between LINSTOR Controller and Satellite will be encrypted using mTLS.
// +kubebuilder:validation:Optional
// + See LinstorSatelliteSpec.InternalTLS for why nullable is needed.
// +nullable
InternalTLS *TLSConfigWithHandshakeDaemon `json:"internalTLS,omitempty"`
// IPFamilies configures the IP Family (IPv4 or IPv6) to use to connect to the LINSTOR Satellite.
//
// If set, the control traffic between LINSTOR Controller and Satellite will use only the given IP Family.
// If not set, the Operator will configure all families found in the Satellites Pods' Status.
// +kubebuilder:validation:Optional
IPFamilies []IPFamily `json:"ipFamilies,omitempty"`
// +kubebuilder:validation:Optional
DeletionPolicy DeletionPolicy `json:"deletionPolicy,omitempty"`
// +kubebuilder:validation:Optional
// +nullable
EvacuationStrategy *EvacuationStrategy `json:"evacuationStrategy,omitempty"`
// Template to apply to Satellite Pods.
//
// The template is applied as a patch to the default resource, so it can be "sparse", not listing any
// containers or volumes that should remain unchanged.
// See https://kubernetes.io/docs/concepts/workloads/pods/#pod-templates
// +kubebuilder:validation:Optional
// +kubebuilder:validation:Schemaless
// +kubebuilder:validation:Type=object
// +kubebuilder:pruning:PreserveUnknownFields
// +structType=atomic
PodTemplate json.RawMessage `json:"podTemplate,omitempty"`
}
LinstorSatelliteConfigurationSpec defines a partial, desired state of a LinstorSatelliteSpec.
All the LinstorSatelliteConfiguration resources with matching NodeSelector will be merged into a single LinstorSatelliteSpec.
func (*LinstorSatelliteConfigurationSpec) DeepCopy ¶
func (in *LinstorSatelliteConfigurationSpec) DeepCopy() *LinstorSatelliteConfigurationSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinstorSatelliteConfigurationSpec.
func (*LinstorSatelliteConfigurationSpec) DeepCopyInto ¶
func (in *LinstorSatelliteConfigurationSpec) DeepCopyInto(out *LinstorSatelliteConfigurationSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type LinstorSatelliteConfigurationStatus ¶
type LinstorSatelliteConfigurationStatus struct {
// Current LINSTOR Satellite Config state
// +kubebuilder:validation:Optional
// +listType=map
// +listMapKey=type
Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`
// AppliedTo lists the LinstorSatellite resource this configuration was applied to
// +kubebuilder:validation:Optional
AppliedTo []string `json:"appliedTo"`
// Number of configured LinstorSatellite resource.
// +kubebuilder:validation:Optional
Matched *int64 `json:"matched"`
}
LinstorSatelliteConfigurationStatus defines the observed state of LinstorSatelliteConfiguration
func (*LinstorSatelliteConfigurationStatus) DeepCopy ¶
func (in *LinstorSatelliteConfigurationStatus) DeepCopy() *LinstorSatelliteConfigurationStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinstorSatelliteConfigurationStatus.
func (*LinstorSatelliteConfigurationStatus) DeepCopyInto ¶
func (in *LinstorSatelliteConfigurationStatus) DeepCopyInto(out *LinstorSatelliteConfigurationStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type LinstorSatelliteList ¶
type LinstorSatelliteList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []LinstorSatellite `json:"items"`
}
LinstorSatelliteList contains a list of LinstorSatellite +kubebuilder:object:root=true
func (*LinstorSatelliteList) DeepCopy ¶
func (in *LinstorSatelliteList) DeepCopy() *LinstorSatelliteList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinstorSatelliteList.
func (*LinstorSatelliteList) DeepCopyInto ¶
func (in *LinstorSatelliteList) DeepCopyInto(out *LinstorSatelliteList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*LinstorSatelliteList) DeepCopyObject ¶
func (in *LinstorSatelliteList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type LinstorSatelliteSpec ¶
type LinstorSatelliteSpec struct {
// ClusterRef references the LinstorCluster used to create this LinstorSatellite.
ClusterRef ClusterReference `json:"clusterRef"`
// Repository used to pull workload images.
// +kubebuilder:validation:Optional
Repository string `json:"repository,omitempty"`
// Patches is a list of kustomize patches to apply.
//
// See https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/patches/ for how to create patches.
// +kubebuilder:validation:Optional
Patches []Patch `json:"patches,omitempty"`
// StoragePools is a list of storage pools to configure on the node.
// +kubebuilder:validation:Optional
StoragePools []LinstorStoragePool `json:"storagePools,omitempty"`
// Properties is a list of properties to set on the node.
// +kubebuilder:validation:Optional
// +listType=map
// +listMapKey=name
// +patchMergeKey=name
// +patchStrategy=merge
Properties []LinstorNodeProperty `json:"properties,omitempty"`
// InternalTLS configures secure communication for the LINSTOR Satellite.
//
// If set, the control traffic between LINSTOR Controller and Satellite will be encrypted using mTLS.
// The Controller will use the client key from `LinstorCluster.spec.internalTLS` when connecting.
// +kubebuilder:validation:Optional
// + Without "nullable" the k8s API does not accept patches with 'internalTLS: {}', which seems to be a bug.
// +nullable
InternalTLS *TLSConfigWithHandshakeDaemon `json:"internalTLS,omitempty"`
// IPFamilies configures the IP Family (IPv4 or IPv6) to use to connect to the LINSTOR Satellite.
//
// If set, the control traffic between LINSTOR Controller and Satellite will use only the given IP Family.
// If not set, the Operator will configure all families found in the Satellites Pods' Status.
// +kubebuilder:validation:Optional
IPFamilies []IPFamily `json:"ipFamilies,omitempty"`
// +kubebuilder:validation:Optional
// +kubebuilder:default:=Retain
DeletionPolicy DeletionPolicy `json:"deletionPolicy,omitempty"`
// +kubebuilder:validation:Optional
EvacuationStrategy EvacuationStrategy `json:"evacuationStrategy,omitempty"`
}
LinstorSatelliteSpec defines the desired state of LinstorSatellite
func (*LinstorSatelliteSpec) DeepCopy ¶
func (in *LinstorSatelliteSpec) DeepCopy() *LinstorSatelliteSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinstorSatelliteSpec.
func (*LinstorSatelliteSpec) DeepCopyInto ¶
func (in *LinstorSatelliteSpec) DeepCopyInto(out *LinstorSatelliteSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type LinstorSatelliteStatus ¶
type LinstorSatelliteStatus struct {
// Current LINSTOR Satellite state
// +kubebuilder:validation:Optional
// +listType=map
// +listMapKey=type
Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`
// The number of volumes on this Satellite.
//+kubebuilder:validation:Optional
NumberOfVolumes *int32 `json:"numberOfVolumes"`
// The number of snapshots on this Satellite.
//+kubebuilder:validation:Optional
NumberOfSnapshots *int32 `json:"numberOfSnapshots"`
// The number of bytes in total in all storage pools on this Satellite.
//+kubebuilder:validation:Optional
TotalCapacityBytes *int64 `json:"availableCapacityBytes"`
// The number of bytes free in all storage pools on this Satellite.
//+kubebuilder:validation:Optional
FreeCapacityBytes *int64 `json:"freeCapacityBytes"`
// Capacity mirrors the information from TotalCapacityBytes and FreeCapacityBytes in a human-readable string.
//+kubebuilder:validation:Optional
Capacity string `json:"capacity"`
// StorageProviders lists the storage providers (LVM, ZFS, etc...) this Satellite supports.
//+kubebuilder:validation:Optional
StorageProviders []string `json:"storageProviders,omitempty"`
// DeviceLayers lists the device layers (LUKS, CACHE, etc...) this Satellite supports.
//+kubebuilder:validation:Optional
DeviceLayers []string `json:"deviceLayers,omitempty"`
}
LinstorSatelliteStatus defines the observed state of LinstorSatellite
func (*LinstorSatelliteStatus) DeepCopy ¶
func (in *LinstorSatelliteStatus) DeepCopy() *LinstorSatelliteStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinstorSatelliteStatus.
func (*LinstorSatelliteStatus) DeepCopyInto ¶
func (in *LinstorSatelliteStatus) DeepCopyInto(out *LinstorSatelliteStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type LinstorStoragePool ¶
type LinstorStoragePool struct {
// Name of the storage pool in linstor.
//+kubebuilder:validation:MinLength=3
Name string `json:"name"`
// Properties to set on the storage pool.
// +listType=map
// +listMapKey=name
// +patchMergeKey=name
// +patchStrategy=merge
Properties []LinstorNodeProperty `json:"properties,omitempty"`
// Configures a LVM Volume Group as storage pool.
// +kubebuilder:validation:Optional
LvmPool *LinstorStoragePoolLvm `json:"lvmPool,omitempty"`
// Configures a LVM Thin Pool as storage pool.
// +kubebuilder:validation:Optional
LvmThinPool *LinstorStoragePoolLvmThin `json:"lvmThinPool,omitempty"`
// Configures a file system based storage pool, allocating a regular file per volume.
// +kubebuilder:validation:Optional
FilePool *LinstorStoragePoolFile `json:"filePool,omitempty"`
// Configures a file system based storage pool, allocating a sparse file per volume.
// +kubebuilder:validation:Optional
FileThinPool *LinstorStoragePoolFile `json:"fileThinPool,omitempty"`
// Configures a ZFS system based storage pool, allocating zvols from the given zpool.
// +kubebuilder:validation:Optional
ZfsPool *LinstorStoragePoolZfs `json:"zfsPool,omitempty"`
// Configures a ZFS system based storage pool, allocating sparse zvols from the given zpool.
// +kubebuilder:validation:Optional
ZfsThinPool *LinstorStoragePoolZfs `json:"zfsThinPool,omitempty"`
Source *LinstorStoragePoolSource `json:"source,omitempty"`
}
func (*LinstorStoragePool) BackendProbeCommand ¶ added in v2.10.8
func (p *LinstorStoragePool) BackendProbeCommand() []string
BackendProbeCommand returns a read-only command that lists the existing backend storage objects of the same kind as this storage pool (all LVM volume groups, or all ZFS datasets), one identifier per line. It returns nil for storage pools without a separate backend to probe (file based pools).
func (*LinstorStoragePool) DeepCopy ¶
func (in *LinstorStoragePool) DeepCopy() *LinstorStoragePool
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinstorStoragePool.
func (*LinstorStoragePool) DeepCopyInto ¶
func (in *LinstorStoragePool) DeepCopyInto(out *LinstorStoragePool)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*LinstorStoragePool) PoolName ¶
func (p *LinstorStoragePool) PoolName() string
func (*LinstorStoragePool) ProviderKind ¶
func (p *LinstorStoragePool) ProviderKind() lclient.ProviderKind
type LinstorStoragePoolFile ¶
type LinstorStoragePoolFile struct {
// Directory is the path to the host directory used to store volume data.
Directory string `json:"directory,omitempty"`
}
func (*LinstorStoragePoolFile) DeepCopy ¶
func (in *LinstorStoragePoolFile) DeepCopy() *LinstorStoragePoolFile
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinstorStoragePoolFile.
func (*LinstorStoragePoolFile) DeepCopyInto ¶
func (in *LinstorStoragePoolFile) DeepCopyInto(out *LinstorStoragePoolFile)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*LinstorStoragePoolFile) DirectoryOrDefault ¶
func (l *LinstorStoragePoolFile) DirectoryOrDefault(name string) string
type LinstorStoragePoolLvm ¶
type LinstorStoragePoolLvm struct {
VolumeGroup string `json:"volumeGroup,omitempty"`
}
func (*LinstorStoragePoolLvm) DeepCopy ¶
func (in *LinstorStoragePoolLvm) DeepCopy() *LinstorStoragePoolLvm
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinstorStoragePoolLvm.
func (*LinstorStoragePoolLvm) DeepCopyInto ¶
func (in *LinstorStoragePoolLvm) DeepCopyInto(out *LinstorStoragePoolLvm)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type LinstorStoragePoolLvmThin ¶
type LinstorStoragePoolLvmThin struct {
VolumeGroup string `json:"volumeGroup,omitempty"`
// ThinPool is the name of the thinpool LV (without VG prefix).
ThinPool string `json:"thinPool,omitempty"`
}
func (*LinstorStoragePoolLvmThin) DeepCopy ¶
func (in *LinstorStoragePoolLvmThin) DeepCopy() *LinstorStoragePoolLvmThin
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinstorStoragePoolLvmThin.
func (*LinstorStoragePoolLvmThin) DeepCopyInto ¶
func (in *LinstorStoragePoolLvmThin) DeepCopyInto(out *LinstorStoragePoolLvmThin)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type LinstorStoragePoolSource ¶
type LinstorStoragePoolSource struct {
// HostDevices is a list of device paths used to configure the given pool.
// +kubebuilder:validation:Optional
// +kubebuilder:validation:MinItems:=1
HostDevices []string `json:"hostDevices,omitempty"`
}
func (*LinstorStoragePoolSource) DeepCopy ¶
func (in *LinstorStoragePoolSource) DeepCopy() *LinstorStoragePoolSource
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinstorStoragePoolSource.
func (*LinstorStoragePoolSource) DeepCopyInto ¶
func (in *LinstorStoragePoolSource) DeepCopyInto(out *LinstorStoragePoolSource)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type LinstorStoragePoolZfs ¶ added in v2.5.0
type LinstorStoragePoolZfs struct {
// ZPool is the name of the ZFS zpool.
ZPool string `json:"zPool,omitempty"`
}
func (*LinstorStoragePoolZfs) DeepCopy ¶ added in v2.5.0
func (in *LinstorStoragePoolZfs) DeepCopy() *LinstorStoragePoolZfs
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinstorStoragePoolZfs.
func (*LinstorStoragePoolZfs) DeepCopyInto ¶ added in v2.5.0
func (in *LinstorStoragePoolZfs) DeepCopyInto(out *LinstorStoragePoolZfs)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*LinstorStoragePoolZfs) Validate ¶ added in v2.5.0
func (l *LinstorStoragePoolZfs) Validate(oldSP *LinstorStoragePool, fieldPrefix *field.Path, name string, thin bool) field.ErrorList
type MatchLabelSelector ¶ added in v2.2.0
type MatchLabelSelector struct {
// Key is the name of a node label.
//+kubebuilder:validation:MinLength=1
//+kubebuilder:validation:Required
Key string `json:"key"`
// Op to apply to the label.
// Exists (default) checks for the presence of the label on both nodes in the pair.
// DoesNotExist checks that the label is not present on either node in the pair.
// In checks for the presence of the label value given by Values on both nodes in the pair.
// NotIn checks that both nodes in the pair do not have any of the label values given by Values.
// Same checks that the label value is equal in the node pair.
// NotSame checks that the label value is not equal in the node pair.
// +kubebuilder:default:=Exists
// +kubebuilder:validation:Enum:=Exists;DoesNotExist;In;NotIn;Same;NotSame
// +kubebuilder:validation:Optional
Op MatchLabelSelectorOperator `json:"op,omitempty"`
// Values to match on, using the provided Op.
// +kubebuilder:validation:Optional
Values []string `json:"values,omitempty"`
}
func (*MatchLabelSelector) DeepCopy ¶ added in v2.2.0
func (in *MatchLabelSelector) DeepCopy() *MatchLabelSelector
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MatchLabelSelector.
func (*MatchLabelSelector) DeepCopyInto ¶ added in v2.2.0
func (in *MatchLabelSelector) DeepCopyInto(out *MatchLabelSelector)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MatchLabelSelectorOperator ¶ added in v2.2.0
type MatchLabelSelectorOperator string
const ( MatchLabelSelectorOpExists MatchLabelSelectorOperator = "Exists" MatchLabelSelectorOpDoesNotExist MatchLabelSelectorOperator = "DoesNotExist" MatchLabelSelectorOpIn MatchLabelSelectorOperator = "In" MatchLabelSelectorOpNotIn MatchLabelSelectorOperator = "NotIn" MatchLabelSelectorOpSame MatchLabelSelectorOperator = "Same" MatchLabelSelectorOpNotSame MatchLabelSelectorOperator = "NotSame" )
type Patch ¶
type Patch struct {
// Patch is the content of a patch.
//+kubebuilder:validation:MinLength=1
//+kubebuilder:validation:Required
Patch string `json:"patch,omitempty" yaml:"patch,omitempty"`
// Target points to the resources that the patch is applied to
Target *Selector `json:"target,omitempty" yaml:"target,omitempty"`
// Options is a list of options for the patch
// +kubebuilder:validation:Optional
Options *PatchArgs `json:"options,omitempty" yaml:"options,omitempty"`
}
Patch represent either a Strategic Merge Patch or a JSON patch and its targets.
func (*Patch) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Patch.
func (*Patch) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Patch) GetJsonPatch ¶ added in v2.8.0
GetJsonPatch loads a JSON 6902 patch. Taken from sigs.k8s.io/kustomize/api@v0.12.1/internal/builtins/PatchTransformer.go
func (*Patch) GetStrategicMergePatch ¶ added in v2.8.0
func (p *Patch) GetStrategicMergePatch() (*kustresource.Resource, error)
type PatchArgs ¶ added in v2.10.1
type PatchArgs struct {
// AllowNameChange allows name changes to the resource.
AllowNameChange bool `json:"allowNameChange,omitempty" yaml:"allowNameChange,omitempty"`
// AllowKindChange allows kind changes to the resource.
AllowKindChange bool `json:"allowKindChange,omitempty" yaml:"allowKindChange,omitempty"`
}
PatchArgs represent set of options on resources of a patch.
func (*PatchArgs) DeepCopy ¶ added in v2.10.1
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PatchArgs.
func (*PatchArgs) DeepCopyInto ¶ added in v2.10.1
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Selector ¶
type Selector struct {
Group string `json:"group,omitempty" yaml:"group,omitempty"`
Version string `json:"version,omitempty" yaml:"version,omitempty"`
Kind string `json:"kind,omitempty" yaml:"kind,omitempty"`
// Name of the resource.
Name string `json:"name,omitempty" yaml:"name,omitempty"`
// Namespace the resource belongs to, if it can belong to a namespace.
Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
// AnnotationSelector is a string that follows the label selection expression
// https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api
// It matches against the resource annotations.
AnnotationSelector string `json:"annotationSelector,omitempty" yaml:"annotationSelector,omitempty"`
// LabelSelector is a string that follows the label selection expression
// https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api
// It matches against the resource labels.
LabelSelector string `json:"labelSelector,omitempty" yaml:"labelSelector,omitempty"`
}
Selector specifies a set of resources. Any resource that matches all of the conditions is included in this set.
func (*Selector) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Selector.
func (*Selector) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SelectorTerm ¶ added in v2.2.0
type SelectorTerm struct {
// MatchLabels is a list of match expressions that the node pairs must meet.
//+kubebuilder:validation:Required
MatchLabels []MatchLabelSelector `json:"matchLabels,omitempty"`
}
SelectorTerm matches pairs of nodes by checking that the nodes match all specified requirements.
func (*SelectorTerm) DeepCopy ¶ added in v2.2.0
func (in *SelectorTerm) DeepCopy() *SelectorTerm
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SelectorTerm.
func (*SelectorTerm) DeepCopyInto ¶ added in v2.2.0
func (in *SelectorTerm) DeepCopyInto(out *SelectorTerm)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type TLSConfig ¶
type TLSConfig struct {
// SecretName references a secret holding the TLS key and certificates.
//+kubebuilder:validation:Optional
SecretName string `json:"secretName,omitempty"`
// CertManager references a cert-manager Issuer or ClusterIssuer.
// If set, a Certificate resource will be created, provisioning the secret references in SecretName using the
// issuer configured here.
//+kubebuilder:validation:Optional
CertManager *cmmetav1.ObjectReference `json:"certManager,omitempty"`
// CAReference configures the CA certificate to use when validating TLS certificates.
// If not set, the TLS secret is expected to contain a "ca.crt" containing the CA certificate.
//+kubebuilder:validation:Optional
CAReference *CAReference `json:"caReference,omitempty"`
}
TLSConfig configures TLS for a component.
func (*TLSConfig) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TLSConfig.
func (*TLSConfig) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type TLSConfigWithHandshakeDaemon ¶ added in v2.3.0
type TLSConfigWithHandshakeDaemon struct {
TLSConfig `json:",inline"`
// TLSHandshakeDaemon enables tlshd for establishing TLS sessions for use by DRBD.
//
// If enabled, adds a new sidecar to the LINSTOR Satellite that runs the tlshd handshake daemon.
// The daemon uses the TLS certificate and key to establish secure connections on behalf of DRBD.
//+kubebuilder:validation:Optional
TLSHandshakeDaemon bool `json:"tlsHandshakeDaemon,omitempty"`
}
func (*TLSConfigWithHandshakeDaemon) DeepCopy ¶ added in v2.3.0
func (in *TLSConfigWithHandshakeDaemon) DeepCopy() *TLSConfigWithHandshakeDaemon
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TLSConfigWithHandshakeDaemon.
func (*TLSConfigWithHandshakeDaemon) DeepCopyInto ¶ added in v2.3.0
func (in *TLSConfigWithHandshakeDaemon) DeepCopyInto(out *TLSConfigWithHandshakeDaemon)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.