This document provides detailed guide on installation of JovianDSS CSI Plugin, further plugin
.
Plugin
expects host machine to have iscsid
daemon, iscsiadm
cli and iscsi\_tcp
kernel module installed.
That is needed as plugin
does not contain mentioned iscsi tool yet relies on them heavily.
Installation of this components is pretty straightforward on most of linux distribution and will not be coverer here except for TalosOS
.
Due to architecture and security policies additional actions have to be take prior to following instructions provided below.
Installation process of JovianDSS CSI plugin goes through creation of appropriate Kubernetes resources.
kubectl apply -f ./deploy/joviandss/namespace.yaml
Grant additional security privileges to joviandss-csi
namespace:
kubectl label ns joviandss-csi pod-security.kubernetes.io/audit=privileged pod-security.kubernetes.io/enforce=privileged pod-security.kubernetes.io/warn=privileged
2. Install CRDT and classes related snapshot support provided for snapshot support. This CRDT's are inherited from github.com/kubernetes-csi/external-snapshotter
kubectl apply -f ./deploy/joviandss/crdt/volumesnapshotclasses.yaml
kubectl apply -f ./deploy/joviandss/crdt/volumesnapshotcontents.yaml
kubectl apply -f ./deploy/joviandss/crdt/volumesnapshots.yaml
Snapshot controller is based on external snapshoter project.
Keep in mind that Cluster roler
for snapshot-controller
is bound to joviandss-csi-controller-service-account
in definition of joviandss-csi-controller
,
therefore possible renaming might require additional changes in ./deploy/joviandss/joviandss-csi-controller.yaml
.
Original RBAC for snapshot-controller
been extended with update
for resources
volumesnapshotcontents/status
Controller can be installed by:
kubectl apply -f ./deploy/joviandss/snapshot-controller/rbac-snapshot-controller.yaml
kubectl apply -f ./deploy/joviandss/snapshot-controller/setup-snapshot-controller.yaml
Main plugin configuration get provided by config file that get attached to controller service of plugin through secret
.
Check this guide on configuration to get more information on plugin
configuration.
kubectl create secret -n joviandss-csi generic jdss-controller-cfg --from-file ./deploy/cfg/cfg.yaml
Please keep in mind that config file name and secret name are both referenced in ./deploy/joviandss/joviandss-csi-controller.yaml
.
[TODO]: # Provide detailed description of how config name and secret name affects controller config
And change in config filename and secret name will require appropriate changes in ./deploy/joviandss/joviandss-csi-controller.yaml
.
kubectl apply -f ./deploy/joviandss/joviandss-csi-controller.yaml
kubectl apply -f ./deploy/joviandss/joviandss-csi-node.yaml
If everything is OK, you should be able to find JovianDSS CSI Driver in list of CSI drivers:
kubectl get csidrivers.storage.k8s.io
NAME ATTACHREQUIRED PODINFOONMOUNT STORAGECAPACITY TOKENREQUESTS REQUIRESREPUBLISH MODES AGE
iscsi.csi.joviandss.open-e.com true true false <unset> false Persistent 3d12h
You should be able to see that controller
and node
services in joviandss-csi
namespace:
kubectl get pods -n joviandss-csi
NAME READY STATUS RESTARTS AGE
joviandss-csi-controller-0 4/4 Running 12 (3d1h ago) 3d12h
joviandss-csi-node-hltwk 2/2 Running 0 3d23h
joviandss-csi-node-nzqkp 2/2 Running 5 (3d23h ago) 3d23h
joviandss-csi-node-qzdf6 2/2 Running 5 (3d23h ago) 3d23h
Also snapshot-controller
should be running in kube-system
namespace:
kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
snapshot-controller-7c5dccb849-8vvzm 1/1 Running 0 61m
snapshot-controller-7c5dccb849-q4hnx 1/1 Running 0 61m