Mailing List Archive

LINSTOR Operator v2.0.1
Dear LINBIT SDS on Kubernetes users,

We've recently released the first stable version 2.0.1 of our
next-generation Kubernetes Operator.

This new version of the Operator represents a complete rewrite, taking into
account all the common issues encountered with our existing Operator
offering. The new Operator is much easier to set up and maintain, while
allowing a greater degree of customization for those that require it.

To give you an overview over the most important new features:

* The LINSTOR Satellites are now running in the normal Kubernetes Pod
network instead of the host network. This makes it possible to use all the
Kubernetes tools such as NetworkPolicies to control DRBD replication
traffic. This feature is made possible by using the new network namespace
support in DRBD 9.2.

* The default mode for when DRBD can't access data is now "suspend-io".
This ensures that your volumes won't suddenly switch to read-only mode. To
ensure that your cluster continues to run in the event of actual
long-lasting networking issues, we've included our HA Controller as well as
a new DRBD Shutdown Guard. The last component ensures that your node can
cleanly shut down even if it has suspended DRBD volumes.

* The Operator now intelligently selects which DRBD loader image to use, so
for many clusters, you won't need to make any specific changes to the
default deployment instructions.

* The Operator has a built-in way to deal with non-uniform storage layouts:
If you have some nodes with storage and some nodes as dedicated worker
nodes without their own storage, this is now much easier to set up than in
previous versions.

* The Operator accepts a list of "patches" to all resources it controls.
This makes it possible to make required changes to the controlled resources
without having to rely on the Operator itself to expose it directly.

To deploy the Operator, we've chosen to switch to using "kustomize", which
is integrated with the normal kubectl command. In contrast to helm, you can
make changes to the deployment without having to learn hundreds of template
options. To deploy the new Operator on a new cluster, you can simply follow
these steps:

1. Create a "kustomization.yaml" file with the following content, replacing
"MY_LINBIT_USER" and "MY_LINBIT_PASSWORD" with your credentials. This
kustomization file will deploy the LINSTOR Operator in the "linbit-sds"
namespace:

---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: linbit-sds
resources:
-
https://github.com/LINBIT/linstor-operator-builder//deploy/default?ref=v2.0.1
generatorOptions:
disableNameSuffixHash: true
secretGenerator:
- name: drbdio-pull-secret
type: kubernetes.io/dockerconfigjson
literals:
- .dockerconfigjson={"auths":{"drbd.io
":{"username":"MY_LINBIT_USER","password":"MY_LINBIT_PASSWORD"}}}
---

2. Apply the kustomization using "kubectl apply -k ."

3. Create a "linbit-sds.yaml" file with the necessary resources for LINSTOR
Operator. This example will create a cluster and configure a simple file
based storage pool on all nodes to get you started:

---
apiVersion: piraeus.io/v1
kind: LinstorCluster
metadata:
name: linstorcluster
spec: {}
---
apiVersion: piraeus.io/v1
kind: LinstorSatelliteConfiguration
metadata:
name: storage-pool
spec:
storagePools:
- name: pool1
fileThinPool:
directory: /var/lib/linbit-sds/pool1
---

4. Apply the resources by running "kubectl apply -f linbit-sds.yaml".

After step 4 you will have a working LINBIT SDS for Kubernetes set up,
configured with storage pools ready for testing. For a more in-depth guide
and the next steps, you can check out our Users Guide[1] and the available
tutorials and how-to guides upstream[2].

A note for users of Operator v1: We will maintain the existing Operator v1
with bug fixes and new software versions until the end of 2023. We will
provide a dedicated upgrade path to Operator v2. We recommend all v1
installations to continue to use v1. For all new clusters we recommend
using v2.

Best regards,
Moritz

[1]: https://linbit.com/drbd-user-guide/linstor-guide-1_0-en/#ch-kubernetes
[2]: https://github.com/piraeusdatastore/piraeus-operator/tree/v2/docs/