Custom resources
SaunaFS Operator introduces three custom resources: SaunafsCluster
, SaunafsMetadataVolume
and SaunafsChunkVolume
.
All three resources are namespaced. Single SaunaFS cluster can consist only of SaunafsCluster
, SaunafsMetadataVolume
s, SaunafsChunkVolume
s and persistent volume claims from the same namespace.
DANGER
SaunaFS Operator doesn't verify if the persistent volume claims are empty before use nor empties them when their Saunafs...Volume
s are removed. Be careful when adding new volumes, especially for metadata - you might lose your data if the volume you introduce already has metadata from another cluster.
SaunafsCluster
This resource represents a single SaunaFS Cluster - you can deploy more than one SaunaFS cluster in a single Kubernetes cluster.
Example manifest:
apiVersion: saunafs.sarkan.io/v1beta1
kind: SaunafsCluster
metadata:
name: example-cluster
namespace: saunafs-operator
spec:
# Decides whether the cluster should be exposed externally (i.e. outside Kubernetes cluster).
#
# If true then
# - metadata servers will be exposed using LoadBalancer service,
# - chunkservers will be exposed using host ports of Kubernetes nodes.
exposeExternally: true
# Optional PVC selectors for metadata and chunk storage. When present operator will
# watch for PVCs with that labels and create a corresponding objects automatically.
pvcSelectors:
# Create SaunafsMetadataVolume object automatically for PVC with that label.
# Required if PV selector for metadata storage is specified.
metadataStorage: example-cluster=metadata
# Create SaunafsChunkVolume object automatically for PVC with that label.
# Required if PV selector for chunk storage is specified.
chunkStorage: example-cluster=chunks
# Optional PV selectors for metadata and chunk storage. When present operator will
# watch for PVs with that labels and create a corresponding PVCs automatically.
pvSelectors:
# The created PVCs will be automatically assigned PVC metadata storage label.
metadataStorage: example-cluster=metadata
# The created PVCs will be automatically assigned PVC chunk storage label.
chunkStorage: example-cluster=chunks
# Optional container image overrides.
images:
metadataServer: ""
chunkServer: ""
elector: ""
SaunafsMetadataVolume
This resource represents a single PVC for metadata storage. Instance of this resource belongs to a SaunafsCluster
instance.
Example manifest:
apiVersion: saunafs.sarkan.io/v1beta1
kind: SaunafsMetadataVolume
metadata:
name: example-metadata-volume
namespace: saunafs-operator
spec:
# Name of the SaunaFS cluster this metadata volume belongs to.
clusterName: example-cluster
# Name of the persistent volume claim to use.
persistentVolumeClaimName: pvc-1
TIP
SaunaFS Metadata Volume must be in the same namespace as SaunaFS Cluster it belongs to.
SaunafsChunkVolume
This resource represents a single PVC for chunk storage. Instance of this resource belongs to a SaunafsCluster
instance.
Example manifest:
apiVersion: saunafs.sarkan.io/v1beta1
kind: SaunafsChunkVolume
metadata:
name: example-chunks-volume
namespace: saunafs-operator
spec:
# Name of the SaunaFS cluster this metadata volume belongs to.
clusterName: example-cluster
# Name of the persistent volume claim to use.
persistentVolumeClaimName: pvc-2
TIP
SaunaFS Metadata Volume must be in the same namespace as SaunaFS Cluster it belongs to.