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