Git Product home page Git Product logo

csi-intel-rsd's Introduction

Container Storage Interface (CSI) Driver for Intel® Rack Scale Design (Intel® RSD) NVMeoF

DISCONTINUATION OF PROJECT. This project will no longer be maintained by Intel. Intel will not provide or guarantee development of or support for this project, including but not limited to, maintenance, bug fixes, new releases or updates. Patches to this project are no longer accepted by Intel. If you have an ongoing need to use this project, are interested in independently developing it, or would like to maintain patches for the community, please create your own fork of the project.

About

Container Storage Interface (CSI) Driver for Intel® Rack Scale Design (Intel® RSD) NVMe is a storage driver for container orchestrators like Kubernetes. It makes remote NVMe storage volumes shared by Intel® RSD hardware available as filesystem volumes to container applications. The driver communicates with Intel® RSD hardware through Redfish/Swordfish protocols to create storage volumes, list them, attach them to the RSD nodes and delete them. Linux NVMe CLI is used to create NVME over Fabric Connections between RSD compute nodes and an RSD storage subsystem. The driver follows the CSI specification by listening for API requests and provisioning volumes accordingly.

Prerequisites

Build

This project uses Go modules to manage dependencies. It requires version 1.12 + of Go.
To build the container image an up to date version of Docker (18.03+) is required.

Run

The CSI Driver for RSD NVMe is designed to run on a Kubernetes 1.13+ installed on a preconfigured RSD set up.
The RSD set up should include at least one compute node and a pooled storage node with NVMe storage.
RSD Getting Started Guide
RSD Storage API Specifications
RSD Reference Implementation

Support requests for set up and configuration of RSD should be directed to the RSD Github repository.

Setup

Quick Start

  1. Clone source code:
    git clone https://github.intel.com/kubernetes-rsd/csi-intel-rsd\
  2. Build the driver:
    cd csi-intel-rsd && make all\
  3. Create secret for RSD username and password:
    kubectl create secret generic intel-rsd-secret --from-literal=rsd-username='****' --from-literal=rsd-password='******'\
  4. Create label for RSD node id:
    kubectl label node --overwrite $(hostname | tr '[:upper:]' '[:lower:]') csi.intel.com/rsd-node=<RSD node id>\
  5. Build driver image:
    make driver-image\
  6. Run deployment script:
    cd deployments/kubernetes-1.13 && ./deploy

Additional options

csi-intel-rsd driver, node-driver-registrar, csi-provisioner and csi-attacher parameters can be configured in deployments/kubernetes-1.13/driver.yaml\

The following flags can be passed to the driver binary

Name Type Description Default
baseurl string Redfish URL localhost:2443
endpoint string CSI endpoint unix:///var/lib/kubelet/plugins/csi-intel-rsd.sock
insecure flag Allow connections to https RSD without certificate verification
nodeid string RSD Node ID
password string RSD password
username string RSD username
timeout duration HTTP Timeout 10s
help flag Print out flag options

Usage

The driver enables usage of RSD NVMe over Fabric (NVMeoF) pooled storage in a Kubernetes cluster environment by implementing the CSI specification. RSD NVMeoF storage volumes can be used in Kubernetes pods as dynamically provisioned Persistent Volumes.
Kubernetes pods can then use the Persistent Volumes through PersistentVolumeClaim.

Usage example can be found in the deployments/kubernetes-1.13/example directory as follows

File Name Usage
deploy-pvc shell script to create StorageClass and ParsitentVolumeClaim
storageclass.yaml Kubernetes StorageClass Spec
pvc.yaml ParsitentVolumeClaim spec for Kubernetes
undeploy-pvc shell script to delete StorageClass and ParsitentVolumeClaim
deploy-app shell scrpt to deploy example application pod
app.yaml example application Kubernetes Pod Spec
undeploy-app shell script to delete application pod

To deploy application user need to first run 'deploy-pvc' script to deploy the persistent volume.

'deploy-app' will then create an application that requests this volume, causing it to be created through the CSI RSD NVMeoF Driver and attached.

Components

The full CSI driver functionality comes from a collection of four components as per the CSI spec.

Name Description Source
csi-intel-rsd driver Driver for CSI interaction with RSD Pooled NVMe Storage This Repo
node-driver-registrar Sidecar for registering CSI driver with Kubelet Link
csi-provisioner Sidecar for dynamic volume provisioning Link
csi-attacher Sidecar for attaching volumes to nodes Link

Communication and Contribution

Report a bug by filing a new issue. Contribute by opening a pull request.

Reporting a Potential Security Vulnerability: If you have discovered potential security vulnerability in this project, please send an e-mail to [email protected]. For issues related to Intel Products, please visit Intel Security Center.

It is important to include the following details:

  • The projects and versions affected
  • Detailed description of the vulnerability
  • Information on known exploits

Vulnerability information is extremely sensitive. Please encrypt all security vulnerability reports using our PGP key.

A member of the Intel Product Security Team will review your e-mail and contact you to collaborate on resolving the issue. For more information on how Intel works to resolve security issues, see: vulnerability handling guidelines.

csi-intel-rsd's People

Contributors

bart0sh avatar kad avatar linericyang avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.