Make sure the prerequisites for StorageOS are satisfied before proceeding.
This installation procedure is available in case of the default method is not suited to your requirements. The following procedure requires a higher number of actions to fulfil the installation of the StorageOS cluster in comparison with the default procedure. There is also a higher number of configuration parameters to be tuned.
The StorageOS Cluster Operator is a Kubernetes native application developed to deploy and configure StorageOS clusters, and assist with maintenance operations. We recommend its use for standard installations.
The operator is a Kubernetes controller that watches the
CRD. Once the controller is ready, a StorageOS cluster definition can be
created. The operator will deploy a StorageOS cluster based on the
configuration specified in the cluster definition.
Steps to install StorageOS:
- Install StorageOS Operator
- Create a Secret for default username and password
- Trigger bootstrap using a CustomResource
1. Install StorageOS operator
Install the StorageOS operator using the following yaml manifest.
kubectl create -f https://github.com/storageos/cluster-operator/releases/download/1.3.0/storageos-operator.yaml
Verify the Cluster Operator Pod Status
[[email protected]]# kubectl -n storageos-operator get pod NAME READY STATUS RESTARTS AGE storageoscluster-operator-68678798ff-f28zw 1/1 Running 0 3m
The READY 1/1 indicates that
storageosclusterresources can be created.
2. Create a Secret
Before deploying a StorageOS cluster, create a Secret defining the StorageOS API Username and Password in base64 encoding.
The API username and password are used to create the default StorageOS admin account which can be used with the StorageOS CLI and to login to the StorageOS GUI. The account defined in the secret is also used by Kubernetes to authenticate against the StorageOS API when installing with the native driver.
kubectl create -f - <<END apiVersion: v1 kind: Secret metadata: name: "storageos-api" namespace: "storageos-operator" labels: app: "storageos" type: "kubernetes.io/storageos" data: # echo -n '<secret>' | base64 apiUsername: c3RvcmFnZW9z apiPassword: c3RvcmFnZW9z END
This example contains a default password, for production installations, use a unique, strong password.
You can define a base64 value by
echo -n "mystring" | base64.
Make sure that the encoding of the credentials doesn’t have special characters such as ‘\n’. The
echo -nensures that a trailing new line is not appended to the string.
If you wish to change the default accounts details post-install please see Managing Users
3. Trigger a StorageOS installation
This is a Cluster Definition example.
kubectl create -f - <<END apiVersion: "storageos.com/v1" kind: StorageOSCluster metadata: name: "example-storageos" namespace: "storageos-operator" spec: secretRefName: "storageos-api" # Reference from the Secret created in the previous step secretRefNamespace: "storageos-operator" # Namespace of the Secret k8sDistro: "rancher" images: nodeContainer: "storageos/node:1.3.0" # StorageOS version sharedDir: '/var/lib/kubelet/plugins/kubernetes.io~storageos' # Needed when Kubelet as a container csi: enable: true resources: requests: memory: "512Mi" # nodeSelectorTerms: # - matchExpressions: # - key: "node-role.kubernetes.io/worker" # Compute node label will vary according to your installation # operator: In # values: # - "true" END
specparameters available on the Cluster Operator configuration page.
You can find more examples such as deployments referencing a external etcd kv store for StorageOS in the Cluster Operator examples page.
First StorageOS volume
If this is your first installation you may wish to follow the StorageOS Volume guide for an example of how to mount a StorageOS volume in a Pod.