Skip to content

Added a documentation on how to install Simplyblock on a Talos-based Kubernetes cluster#408

Open
noctarius wants to merge 7 commits intosiderolabs:mainfrom
noctarius:simplyblock
Open

Added a documentation on how to install Simplyblock on a Talos-based Kubernetes cluster#408
noctarius wants to merge 7 commits intosiderolabs:mainfrom
noctarius:simplyblock

Conversation

@noctarius
Copy link

@noctarius noctarius commented Mar 3, 2026

This pull request adds a documentation page to explain how simplyblock storage clusters can be installed (fully hypercoverged) into a Talos Kubernetes cluster.

It follows the existing Ceph / Rook style and has a short explanation of the three different simplyblock components that can be installed.

Copilot AI review requested due to automatic review settings March 3, 2026 09:51
@github-project-automation github-project-automation bot moved this to To Do in Planning Mar 3, 2026
@talos-bot talos-bot moved this from To Do to In Review in Planning Mar 3, 2026
@noctarius noctarius marked this pull request as draft March 3, 2026 09:51
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new Kubernetes CSI guide documenting how to install Simplyblock (control plane, storage plane, and CSI driver) on a Talos-based Kubernetes cluster, and wires it into the docs navigation so it appears in the CSI section.

Changes:

  • Added a new MDX guide: simplyblock-storage.mdx covering preparation (kernel modules, hugepages, namespace) and installation/cleanup steps.
  • Updated docs navigation (public/docs.json and kubernetes-guides.yaml) to include the new guide under CSI.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 6 comments.

File Description
public/kubernetes-guides/csi/simplyblock-storage.mdx New Talos-focused Simplyblock installation guide (control plane, storage plane, CSI, cleanup, references).
public/docs.json Adds the Simplyblock guide route to the CSI navigation list.
kubernetes-guides.yaml Adds the Simplyblock guide to the CSI pages list for the docs navigation.
Comments suppressed due to low confidence (2)

public/kubernetes-guides/csi/simplyblock-storage.mdx:16

  • The product name is capitalized inconsistently in this paragraph ("Simplyblock" vs "simplyblock"). For clarity and consistency across the docs, use a single capitalization for the product name (and keep the lowercase form only for things that are explicitly named that way, such as namespaces or CLI flags).
Simplyblock is a highly versatile storage platform that can be deployed on Kubernetes and other platforms. That means that not all components must be installed on Talos. In this guide, we will focus on a full installation of simplyblock into Talos. For all options, see the [simplyblock documentation](https://docs.simplyblock.io/latest/).

public/kubernetes-guides/csi/simplyblock-storage.mdx:235

  • The cleanup section uninstalls a release named simplyblock, but the install sections reference/select release=simplyblock-csi and currently don't clearly define the release name. Once the install commands are fixed, please ensure the uninstall command matches the actual release name users will have installed (and consider uninstalling both CSI and any controller release if applicable).
Uninstall the storage plane and CSI driver chart:

```bash
helm uninstall simplyblock -n simplyblock
</details>



---

💡 <a href="/siderolabs/docs/new/main?filename=.github/instructions/*.instructions.md" class="Link--inTextBlock" target="_blank" rel="noopener noreferrer">Add Copilot custom instructions</a> for smarter, more guided reviews. <a href="https://docs.github.com/en/copilot/customizing-copilot/adding-repository-custom-instructions-for-github-copilot" class="Link--inTextBlock" target="_blank" rel="noopener noreferrer">Learn how to get started</a>.

@noctarius noctarius marked this pull request as ready for review March 3, 2026 11:03
Simplyblock requires pre-reserved huge pages and expects the `hugepages-2Mi` pool (2 MiB page size).
The required amount depends on your planned storage-node sizing (for example, CPU count, number of volumes, and expected provisioned capacity per node), so decide the target huge page memory first, then convert it into page count.

After installing the control plane, run this command from the admin control pod to calculate the required huge pages on the host:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you mean the Kubernetes control plane or the simplyblock control plane? The sbctl command won't be available on Talos.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the simplyblock control plane and sbctl will be available in the simplyblock control plane node. But you're right, this isn't clear yet. Let me move the cp installation before the reconfiguration for the storage plane. Great catch!

@rothgar
Copy link
Member

rothgar commented Mar 3, 2026

A couple questions because I'm not familiar with simplyblock.

  1. Is Simplyblock free to use in this use case? I couldn't tell from the website which parts are open source and which require a license.
  2. Should the storage have a dedicated partition or disk? There's no steps on creating a volume to be used with simplyblock so I'm assuming it would consume part of the EHPEMERAL partition but that may not be ideal if someone wipes the partition during an upgrade.

@noctarius
Copy link
Author

  1. In practice there is no difference between the free and the commercial version of simplyblock. The business model is based on support and storage size. Simplyblock can, however, also be run without a support contract. Meaning, both models are supported with the given installation since we don't have any license keys or anything.
  2. Good question. We require full, unpartitioned NVMe devices. I mentioned the privileged requirement in combination with the direct access to NVMe devices, but I see how this isn't clear without prior knowledge. I'll add a short explanation 👍

@rothgar
Copy link
Member

rothgar commented Mar 3, 2026

  1. Good question. We require full, unpartitioned NVMe devices. I mentioned the privileged requirement in combination with the direct access to NVMe devices, but I see how this isn't clear without prior knowledge. I'll add a short explanation 👍

An example talos patch would be helpful. Knowing you need to have a separate nvme drive for this will be good to call out for people trying to run it in home labs

@noctarius
Copy link
Author

There is no patch required. Simplyblock will either use all free NVMe devices or whatever is configured in the helm parameters. The requirement for additional NVMe devices has been added in the latest commit :)

@github-project-automation github-project-automation bot moved this from In Review to Approved in Planning Mar 4, 2026
pip install sbctl --upgrade
```

Find the Helm chart bundled with `sbctl`, then deploy the control plane:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just curious, do you have plans to publish the helm chart instead of distributing it with the cli?

Create `simplyblock-namespace.yaml`:

```yaml
apiVersion: v1
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If possible we like to use heredocs so they're 1 line copy/pastable

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Namespace
metadata:
  name: simplyblock
  labels:
    pod-security.kubernetes.io/enforce: privileged
    pod-security.kubernetes.io/enforce-version: latest
    pod-security.kubernetes.io/audit: privileged
    pod-security.kubernetes.io/audit-version: latest
    pod-security.kubernetes.io/warn: privileged
    pod-security.kubernetes.io/warn-version: latest
EOF

Label Talos nodes that should run simplyblock storage nodes:

```bash
kubectl label nodes <NODE_NAME> ^\
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is the ^ on this line a mistake?

CLUSTER_SECRET="<SECRET>"
CNTR_ADDR="<CONTROL-PLANE-ADDR>"
POOL_NAME="<POOL-NAME>"

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: separate these two code blocks so variables can be exported together and the second code block can be copy/pasted without modification

CLUSTER_SECRET="<SECRET>"
CNTR_ADDR="<CONTROL-PLANE-ADDR>"
POOL_NAME="<POOL-NAME>"

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: separate variables as it's own code block

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Approved

Development

Successfully merging this pull request may close these issues.

4 participants