Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
165 lines (126 sloc) 8.83 KB

StorageOS

StorageOS is a software-based storage platform designed for cloud-native applications. By deploying StorageOS on your Kubernetes cluster, local storage from cluster node is aggregated into a distributed pool, and persistent volumes created from it using the native Kubernetes volume driver are available instantly to pods wherever they move in the cluster.

Features such as replication, encryption and caching help protect data and maximise performance.

Prerequisites

  • Kubernetes 1.10 and above
  • Kubernetes must be configured to allow:
    • Privileged mode containers (enabled by default)
    • Feature gate: MountPropagation=true. This can be done by appending --feature-gates MountPropagation=true to the kube-apiserver and kubelet services. Enabled by default in k8s 1.10.

Refer to the StorageOS prerequisites docs for more information.

Kubernetes version Compatible Chart Version
1.13 0.3.x
1.12 0.2.x
1.11 0.1.x
1.10 0.1.x

TL;DR

# Add storageos charts repo.
$ helm repo add storageos https://charts.storageos.com
$ helm install storageos/storageos --namespace storageos --set cluster.join=<join-token/node-ip> --set csi.enable=true

Installing the Chart

To install the chart:

$ helm install storageos/storageos --namespace storageos --set cluster.join=<join-token/node-ip> --set csi.enable=true

The command deploys StorageOS on the Kubernetes cluster in the default configuration. The configuration section lists the parameters that can be configured during installation.

Tip: List all releases using helm list

Uninstalling the Chart

To uninstall/delete the storageos deployment:

$ helm delete --purge <release-name>

The command removes all the Kubernetes components associated with the chart and deletes the release.

Configuration

The cluster.join parameter must be set to a valid join string. The join string helps bootstrap a new cluster and provides instructions to nodes joining an existing cluster. Typically the join string should be composed of a cluster id and/or hostname(s)/IP-address(es) of cluster nodes. For helm options the comma needs to be escaped like this "a,b".

Examples:

$ helm install storageos/storageos --namespace storageos --set cluster.join=node01 --set csi.enable=true
$ storageos cluster create
61e476d0-5905-4be8-af33-d5109784e3d3
$ helm install storageos/storageos --namespace storageos --set cluster.join=61e476d0-5905-4be8-af33-d5109784e3d3 --set csi.enable=true
$ helm install storageos/storageos --namespace storageos --set cluster.join="61e476d0-5905-4be8-af33-d5109784e3d3\,node01" --set csi.enable=true

The first item in the list can be a cluster id as above, or a hostname or ip address of a single node in the cluster.

A cluster id can be generated by running the storageos cluster create CLI command. The CLI is available to download from the Github repository.

Alternatively, set the first item in the list to be the ip address or hostname of one of the cluster nodes. This node will boostrap the cluster when StorageOS is started for the first time on it. It only serves a special purpose until the cluster has initialised.

The remaining items in the join list should be one or more hostnames or ip addresses for new node to join to.

Tip: Future releases will remove the requirement to specify cluster.join and instead the discovery service will run as part of the deployment.

The following tables lists the configurable parameters of the StorageOS chart and their default values.

Parameter Description Default
cluster.join The cluster join string. See cluster discovery documentation for details.
cluster.disableTCMU Disable TCMU to allow co-existence with other storage systems but degrades performance false
cluster.forceTCMU Forces TCMU to be enabled or causes StorageOS to abort startup false
image.repository StorageOS container image repository storageos/node
image.tag StorageOS container image tag 1.3.0
image.pullPolicy StorageOS container image pull policy IfNotPresent
initContainer.repository StorageOS init container image repository storageos/init
initContainer.tag StorageOS init container image tag 0.2
initContainer.pullPolicy StorageOS init container image pull policy IfNotPresent
csiClusterDriverRegistrar.repository CSI Cluster Driver Registrar container image repository quay.io/k8scsi/csi-cluster-driver-registrar
csiClusterDriverRegistrar.tag CSI Cluster Driver Registrar container image tag v1.0.1
csiClusterDriverRegistrar.pullPolicy CSI Cluster Driver Registrar container image pull policy IfNotPresent
csiNodeDriverRegistrar.repository CSI Node Driver Registrar container image repository quay.io/k8scsi/csi-node-driver-registrar
csiNodeDriverRegistrar.tag CSI Node Driver Registrar container image tag v1.0.1
csiNodeDriverRegistrar.pullPolicy CSI Node Driver Registrar container image pull policy IfNotPresent
csiExternalProvisioner.repository CSI External Provisioner container image repository storageos/csi-provisioner
csiExternalProvisioner.tag CSI External Provisioner container image tag v1.0.1
csiExternalProvisioner.pullPolicy CSI External Provisioner container image pull policy Always
csiExternalAttacher.repository CSI External Attacher container image repository quay.io/k8scsi/csi-attacher
csiExternalAttacher.tag CSI External Attacher container image tag v1.0.1
csiExternalAttacher.pullPolicy CSI External Attacher container image pull policy Always
storageclass.name StorageOS storage class name fast
storageclass.pool Default storage pool for storage class default
storageclass.fsType Default filesystem type for storage class ext4
resources Pod resource requests & limits {}
csi.enable Enable CSI driver installation false
csi.deploymentStrategy CSI helper sidecar deployment strategy (statefulset or deployment) statefulset
csi.provisionCreds.enable Enable credentials for volume provision operations false
csi.provisionCreds.username Username for CSI provision operation authentication
csi.provisionCreds.password Password for CSI provision operatiion authentication
csi.controllerPublishCreds.enable Enable credentials for CSI controller publish volume operations false
csi.controllerPublishCreds.username Username for CSI controller publish volume operations
csi.controllerPublishCreds.password Password for CSI controller publish volume operations
csi.nodeStageCreds.enable Enable credentials for CSI node stage volume operations false
csi.nodeStageCreds.username Username for CSI node stage volume operations
csi.nodeStageCreds.password Password for CSI node stage volume operations
csi.nodePublishCreds.enable Enable credentials for CSI node publish volume operations false
csi.nodePublishCreds.username Username for CSI node publish volume operations
csi.nodePublishCreds.password Password for CSI node publish volume operations
ingress.enabled Enable ingress controller resource false
ingress.hosts[0].name Hostname to your StorageOS installation storageos.local
ingress.hosts[0].tls Utilize TLS backend in ingress false
ingress.hosts[0].tlsSecret TLS Secret (certificates) storageos.local-tls-secret
ingress.hosts[0].annotations Annotations for this host's ingress record []
ingress.secrets[0].name TLS Secret Name nil
ingress.secrets[0].certificate TLS Secret Certificate nil
ingress.secrets[0].key TLS Secret Key nil
podSecurityPolicy.enabled If true, create & use PodSecurityPolicy resources false
podSecurityPolicy.annotations Specify pod annotations in the pod security policy {}

Specify each parameter using the --set key=value[,key=value] argument to helm install. For example,

$ helm install storageos/storageos --namespace storageos \
    --set cluster.join="74e8b44d-b1df-11e7-b0b3-42010a9a00b2\,node01"

Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,

$ helm install storageos/storageos --namespace storageos -f values.yaml

Tip: You can use the default values.yaml

You can’t perform that action at this time.