Seagate / seagate-exos-x-csi

Seagate EXOS X CSI Driver and dynamic provisioner for containerized environments.
Apache License 2.0
18 stars 5 forks source link

Seagate CSI dynamic provisioner for Kubernetes

The Seagate Exos X CSI Driver supports the following storage arrays

iSCSI, SAS, and FC host interfaces are supported for both block and filesystem mount types

Go Report Card

Introduction

The Seagate Exos X CSI Driver helps storage admins efficiently manage their storage within container platforms that support the CSI standard. Dealing with persistent storage on Kubernetes can be particularly cumbersome, especially when dealing with on-premises installations, or when the cloud-provider persistent storage solutions are not applicable. The Seagate CSI Driver is a direct result of customer demand to bring the ease of use of Seagate Exos X to DevOps practices, and demonstrates Seagate’s continued commitment to the Kubernetes ecosystem

More information about Seagate Data Storage Systems can be found online

This project

This project implements the Container Storage Interface in order to facilitate dynamic provisioning of persistent volumes on a Kubernetes cluster.

This CSI driver is an open-source project under the Apache 2.0 license.

Key Features

Installation

Install iSCSI tools and multipath driver on your nodes

iscsid and multipathd must be installed on every node. Check the installation method appropriate for your Linux distribution. The example below shows steps for Ubuntu Server but the process will be very similar for other GNU/Linux distributions.

Ubuntu Installation procedure

Deploy the provisioner to your kubernetes cluster

These examples assume you have already installed the [helm]() command.

The easiest method for installing the driver is to use Helm to install the helm package from Github. On the Releases page, right-click on the Helm Package and select "Copy Link Address". Choose a namespace in which to run the driver (in this example, seagate), and a name for the application (exos-x-csi) and then paste the link the onto the end of this command. For example:

helm install --create-namespace -n seagate exos-x-csi <url-of-helm-package>

Alternately, you can download and unpack the helm package and extract it:

wget https://github.com/Seagate/seagate-exos-x-csi/releases/download/v1.6.3/seagate-exos-x-csi-1.6.3.tgz
tar xpzf seagate-exos-x-csi-1.6.3.tgz
helm install --create-namespace -n seagate exos-x-csi seagate-exos-x-csi

or clone the Github repository and install from the helm/csi-charts folder:

git clone https://github.com/Seagate/seagate-exos-x-csi
cd seagate-exos-x-csi
helm install exos-x-csi -n seagate --create-namespace \
  helm/csi-charts -f helm/csi-charts/values.yaml

To deploy the provisioner to OpenShift cluster, run the following commands prior to using Helm:

oc create -f scc/exos-x-csi-access-scc.yaml --as system:admin
oc adm policy add-scc-to-user exos-x-csi-access -z default -n NAMESPACE
oc adm policy add-scc-to-user exos-x-csi-access -z csi-provisioner -n NAMESPACE

Configure your release

Documentation

You can find more documentation in the docs directory. Check docs/Seagate_Exos_X_CSI_driver_functionality.ipynb for usage examples and configuration files.

Command-line arguments

You can have a list of all available command line flags using the -help switch.

Logging

Logging can be modified using the -v flag :

For advanced logging configuration, see klog.

Development

You can start the drivers over TCP so your remote dev cluster can connect to them.

go run ./cmd/<driver> -bind=tcp://0.0.0.0:10000

Testing

You can run sanity checks by using the sanity helper script in the test/ directory:

./test/sanity