We provide a Helm Chart to install TopoLVM on Kubernetes. The chart depends on cert-manager. If you don't have cert-manager installed, you can install it with the Helm Chart.
A volume group must be created on all nodes where TopoLVM will run.
The default volume group name defined in the Helm Chart is myvg1.
First, add the TopoLVM helm repository.
helm repo add topolvm https://topolvm.github.io/topolvm
helm repo updateTopoLVM uses webhooks. To work webhooks properly, add a label to the target namespace. We also recommend to use a dedicated namespace.
kubectl label namespace topolvm-system topolvm.io/webhook=ignore
kubectl label namespace kube-system topolvm.io/webhook=ignoreThen, install TopoLVM with the release name topolvm.
helm install --namespace=topolvm-system topolvm topolvm/topolvmIf you want to install cert-manager together, use the following command instead.
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/${VERSION}/cert-manager.crds.yaml
helm install --namespace=topolvm-system topolvm topolvm/topolvm --set cert-manager.enabled=trueFinally, check if TopoLVM is running. All TopoLVM pods should be running.
kubectl get pod -n topolvm-systemYou can create PersistentVolumes (PV) by TopoLVM after installation succeeded.
The StorageClass topolvm-provisioner is automatically created by the Helm Chart.
kubectl apply -f - <<EOF
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: topolvm-provisioner
---
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: pause
image: registry.k8s.io/pause
volumeMounts:
- mountPath: /data
name: volume
volumes:
- name: volume
persistentVolumeClaim:
claimName: my-pvc
EOF