Abstract

Helm Storage Class documentation master file, created by sphinx-quickstart on Sun Apr 28 15:35:08 2024. You can adapt this file completely to your liking, but it should at least contain the root toctree directive.

Storage Helm Chart#

Repository Contents#

Glossary#

CSI#

Container Storage Interface, described in more detail here.

CSIDriver#

A driver that enables a Kubernetes cluster to interact with storage devices described by the Container Storage Interface. This repository uses csi-driver-lvm and csi-driver-nfs

csi-driver-lvm#

A CSI driver that enables dynamic provisioning of volumes via Logical Volume Manager volume groups. More information is available here.

csi-driver-nfs#

A CSI driver that enables dynamic provisioning of volumes via NFS shares. More information is available here

DaemonSet#

A Kubernetes workload object that is intended to run on all nodes in a cluster by default. Can be configured to ignore control plane nodes. More information is available here.

kubelet#

An application that must run on every node in a Kubernetes cluster, responsible for interfacing with the container runtime and the other components of Kubernetes.

LVM#

Logical Volume Manager, described in more detail here

NFS#

Network File Storage, described in more detail here.

OSSAR#

Open Source Static Analysis Runner, runs GitHub Actions Open Source Static Analysis tools on your repository. More information here

RAID#

Redundant Array of Inexpensive Disks is a method of clustering cheap and easily replaced disks into an array that appears to an operating system as a single disk. More information is available here.

PersistentVolume#

A Kubernetes object that is statically defined by a cluster administrator and may be bound to a PersistentVolumeClaim at runtime. More information is available here.

PersistentVolumeClaim#

A Kubernetes object that may refer to a dynamically or statically provisioned persistent storage class. More information is available here.

StorageClass#

A Kubernetes object that describes a persistent or ephemeral form of storage that may be provisioned by a cluster. Described in more detail here.

Taint#

A condition applied to a Kubernetes node that can be used to prevent certain workloads from being run on it. More information is available here.

Tolerations#

A condition that can be apply to a Kubernetes workload that can be used to allow certain workloads to ignore a Taint that has been applied to a node. More information is available here.

Local Chart Values#

compat03x

CSI Driver LVM configuration


This file contains the settings required to set up a StorageClass that supports dynamic provisioning of Logical Volume Manager volumes.

Enable, if you want to install storage classes with v0.3.x backward-compatible csi-lvm-sc-* names

compat03x: false
customCSISidecars:
  ###
  # To enable custom CSI Sidecars, you should
  # uncomment the lines in the code block below and set
  # `enabled: true`.
  #
  # Set to `false` by default.
  #
  # ```{code-block} yaml
  # :caption: CSI Sidecar Images
  # attacher: k8s.gcr.io/sig-storage/csi-attacher:v3.5.0
  # livenessprobe: k8s.gcr.io/sig-storage/livenessprobe:v2.7.0
  # provisioner: k8s.gcr.io/sig-storage/csi-provisioner:v3.2.1
  # registrar: k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.5.1
  # resizer: k8s.gcr.io/sig-storage/csi-resizer:v1.6.0
  # ```
  enabled: false
###
# Configure a custom {term}`kubelet` write path if necessary.
kubernetes:
  kubeletPath: /var/lib/kubelet
kubernetes

Configure a custom kubelet write path if necessary.

lvm

Logical Volume Manager


This is where you will define the StorageClass for this driver along with a few other settings.

lvm:
  ###
  # This one you should change
  devicePattern: /dev/(nvme[0-9]n[0-9]|sd[a-z][0-9])
  driverName: lvm.csi.metal-stack.io
  ###
  # You will want to change this for read-only file systems
  # For example, in Talos OS, set this to {file}`/var/etc/lvm`.
  hostWritePath: /etc/lvm
  ###
  # these are primarily for testing purposes
  storageClassStub: csi-lvm
  vgName: csi-lvm
nodeSelector

Node Selection


The plugin DaemonSet will run on all nodes if it has a toleration, so it is not necessary to set a nodeSelector for it.

nodeSelector:
  plugin:
    kubernetes.io/os: linux
  provisioner:
    node-role.kubernetes.io/control-plane: true
pluginImage

Plugin Image


Use this to configure settings for the CSI Plugin Image.

pluginImage:
  pullPolicy: IfNotPresent
  repository: ghcr.io/metal-stack/csi-driver-lvm
  tag: v0.5.2
###
# ```{rubric} Provisioner Image
# ```
# ---
# Use this to configure settings for the CSI Provisioner Image
#
# ```{literalinclude} /csi-driver-lvm/values.yaml
# :language: yaml
# :start-at: "provisionerImage:\n"
# :end-at: "  tag: v0.5.2\n"
# ```
provisionerImage:
  pullPolicy: IfNotPresent
  repository: ghcr.io/metal-stack/csi-driver-lvm-provisioner
  tag: v0.5.2
###
# ```{rubric} Role Based Access Control
# ```
# ---
# Set `create: true` if you want to enable this.
#
# ```{literalinclude} /csi-driver-lvm/values.yaml
# :language: yaml
# :start-at: "rbac:\n"
# :end-before: "####"
# ```
rbac:
  create: true
  pspEnabled: true
sidecarImages:
  attacher: k8s.gcr.io/sig-storage/csi-attacher:v3.5.0
  livenessprobe: k8s.gcr.io/sig-storage/livenessprobe:v2.7.0
  provisioner: k8s.gcr.io/sig-storage/csi-provisioner:v3.2.1
  registrar: k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.5.1
  resizer: k8s.gcr.io/sig-storage/csi-resizer:v1.6.0
provisionerImage

Provisioner Image


Use this to configure settings for the CSI Provisioner Image

provisionerImage:
  pullPolicy: IfNotPresent
  repository: ghcr.io/metal-stack/csi-driver-lvm-provisioner
  tag: v0.5.2
rbac

Role Based Access Control


Set create: true if you want to enable this.

rbac:
  create: true
  pspEnabled: true
tolerations

Driver workload tolerations


Configure the driver to run on control plane or other tainted nodes by adding Tolerations here.

tolerations:
  plugin:
  # - key: node-role.kubernetes.io/master
  #   operator: Exists
  #   effect: NoSchedule
  # - key: node-role.kubernetes.io/control-plane
  #   operator: Exists
  #   effect: NoSchedule
  provisioner:
# - key: node-role.kubernetes.io/master
#   operator: Exists
#   effect: NoSchedule
# - key: node-role.kubernetes.io/control-plane
#   operator: Exists
#   effect: NoSchedule

Local Provisioner Plugin#

This chart depends on the static local provisioner plugin described in detail here.

The helm chart and templates are located in charts/local-static-provisioner.