kvaps / kube-linstor

Containerized LINSTOR SDS for Kubernetes, ready for production use.
Apache License 2.0
130 stars 25 forks source link
docker drbd kubernetes linstor lvm sds zfs

Kube-Linstor

Containerized Linstor Storage easy to run in your Kubernetes cluster.

:warning: This project currently unmaintained

I decided join forces over creation the union solution for running LINSTOR on Kubenretes, and contribute missing features of this chart to upstream project: piraeus-operator.

If you want to upgrade, you can easily switch between them, see https://github.com/kvaps/kube-linstor/issues/53#issuecomment-1028006151 for more details.

Dockefiles continue maintaining in Deckhouse project.

Images

Image Latest Tag
linstor-controller linstor-controller-version
linstor-satellite linstor-satellite-version
linstor-csi linstor-csi-version
linstor-stork linstor-stork-version
linstor-ha-controller linstor-ha-controller-version

Requirements

QuckStart

Kube-Linstor consists of several components:

Preparation

Install Helm.

NOTE: Commands below provided for Helm v3 but Helm v2 is also supported.
You can use helm template instead of helm install, this is also working as well.

Create linstor namespace.

kubectl create ns linstor

Install Helm repository:

helm repo add kvaps https://kvaps.github.io/charts

Database

Linstor

Install snapshot-controller

https://kubernetes-csi.github.io/docs/snapshot-controller.html#deployment

Usage

The satellite nodes will register themselves on controller automatically by init-container.

You can get interactive linstor shell by simple exec into linstor-controller pod:

kubectl exec -ti -n linstor deploy/linstor-controller -- linstor interactive

Refer to official linstor documentation to define storage pools on them and configure resource groups.

SSL notes

This chart enables SSL encryption for control-plane by default. It does not affect the DRBD performance but makes your LINSTOR setup more secure.

If you want to have external access, you need to download certificates for linstor client:

kubectl get secrets --namespace linstor linstor-client-tls \
  -o go-template='{{ range $k, $v := .data }}{{ $v | base64decode }}{{ end }}'

Then follow official linstor documentation to configure the client.

Additional Information

How Kube-Linstor compares to other DRBD-on-Kubernetes solutions

Piraeus Operator

Piraeus Operator is the operator that powers Piraeus, LINBIT's official Software Defined Storage (SDS) solution for Kubernetes. The dependencies of Kube-Linstor and Piraeus Operator are mostly shared, as both projects aim to create and administer LINSTOR clusters, but there are some differences in methodology and features:

Licenses