Git Product home page Git Product logo

synology-csi's Introduction

synology-csi Build Status Go Report Card

A Container Storage Interface Driver for Synology NAS

Build

Build package

make

Build docker image

# e.g. docker build -t jparklab/synology-csi .
docker build -t <repo>[:<tag>] .

Build a docker image using ubuntu stretch as the base image.

# e.g. docker build -f Dockerfile.ubuntu -t jparklab/synology-csi .
e.g. docker build -f Dockerfile.ubuntu -t <repo>[:tag>] .

Test

Here we use gocsi to test the driver,

Create a config file for testing

You need to create a config file that contains information to connect to the Synology NAS API. See Create a config file below

Start plugin driver

# You can specify any name for nodeid
$ go run cmd/syno-csi-plugin/main.go \
    --nodeid CSINode \
    --endpoint tcp://127.0.0.1:10000 \
    --synology-config syno-config.yml 

Get plugin info

$ csc identity plugin-info -e tcp://127.0.0.1:10000

Create a volume

$ csc controller create-volume \
    --req-bytes 2147483648 \
    -e tcp://127.0.0.1:10000 \
    test-volume 
"8.1" 2147483648 "iqn"="iqn.2000-01.com.synology:kube-csi-test-volume" "mappingIndex"="1" "targetID"="8"

List volumes

The first column in the output is the volume D

$ csc controller list-volumes -e tcp://127.0.0.1:10000 
"8.1" 2147483648 "iqn"="iqn.2000-01.com.synology:kube-csi-test-volume" "mappingIndex"="1" "targetID"="8"

Delete the volume

# e.g.
# csc controller delete-volume  -e tcp://127.0.0.1:10000 8.1
$ csc controller delete-volume  -e tcp://127.0.0.1:10000 <volume id>

Deploy

Ensure kubernetes cluster is configured for CSI drivers

For kubernetes v1.12, and v1.13, feature gates need to be enabled to use CSI drivers. Follow instructions on https://kubernetes-csi.github.io/docs/csi-driver-object.html and https://kubernetes-csi.github.io/docs/csi-node-object.html to set up your kubernetes cluster.

Create a config file

---
# syno-config.yml file
host: <hostname>        # ip address or hostname of the Synology NAS
port: 5000              # change this if you use a port other than the default one
username: <login>       # username
password: <password>    # password
sessionName: Core       # You won't need to touch this value
sslVerify: false        # set this true to use https

Create a k8s secret from the config file

kubectl create secret generic synology-config --from-file=syno-config.yml

Deploy to kubernetes

kubectl apply -f deploy/kubernetes/v1.15

(v1.12 is also tested, v1.13 has not been tested)

NOTE:

  synology-csi-attacher and synology-csi-provisioner need to run on the same node.
 (probably..)

synology-csi's People

Contributors

jparklab avatar

Watchers

 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.