• Documentation
  • Blog

›Guides

Getting Started

  • Introduction
  • Networking Considerations
  • Multi-Tenancy Considerations

Guides

  • Web UI Installation
  • Bare Metal Installation
  • Docker Integration
  • Docker Plugin
  • Kubernetes Quick Start "Solo"
  • Kubernetes Integration
  • Kubernetes CSI
Edit

Docker Plugin

Usage:

Create a config file /etc/ndnfs/ndnfs.json using this example:

{
    "nedgerest":        "1.1.1.1",
    "nedgeport":        8080,
    "username":         "admin",
    "password":         "nexenta",
    "cluster":          "clu1",
    "tenant":           "ten1",
    "chunksize":        1048576,
    "serviceFilter":    ""
}

Configuration parameters and default values

NameDescriptionDefault valueRequired
nedgerestIP or FQDN of NexentaEdge REST API servertrue
nedgeportPort of NexentaEdge REST API server8080true
usernameNexentaEdge REST API server user nameadmintrue
passwordNexentaEdge REST API server passwordnexentatrue
clusterNexentaEdge cluster namespacefalse
tenantNexentaEdge tenant namespacefalse
chunksizeDefault volume chunksize in bytes, should be power of two1048576false
forceBucketDeletionOn docker volume remove operation - the bucket will also be deletedfalsefalse
serviceFilterList of comma delimeted allowed service names to display"" means all services allowedfalse

Note:

Configuration parameters names are case insensitive

Install the plugin

docker plugin install nexenta/nexentaedge-nfs-plugin --grant-all-permissions

Volume creation

Now you can create docker volumes backed with NexentaEdge and run containers with them attached. Each docker volume represents a bucket on NexentaEdge. Each volume can be created with different syntax

  1. Full specified path - service@cluster/tenant/bucket. Will create volume by specified path.
  2. Automatic service selection - cluster/tenant/bucket. In this case driver select Nedge NFS service with lowest number of NFS exports, hence load balance across all nfs services or across all services remarked in serviceFilter list
  3. Automatic service selection with cluster and tenant namespace substitution. Automaticly select nfs service and subsitute cluster and tenant namespace defined as cluster and tenant options in ndnfs.json file

All volumes related to default cluster and tenant will be shown as bucket records in list, and can be passed to any docker volume command for run, mount, rm e.t.c Volumes not related to default cluster and tenant will be shown as cluster/tenant/bucket, and should be used for docker volume operations

docker volume create -d nexenta/nexentaedge-nfs-plugin nfs01@clu1/ten1/buc1 (Full volume path specified)
docker volume create -d nexenta/nexentaedge-nfs-plugin clu1/ten1/buc1 (Automatic service selection)
docker volume create -d nexenta/nexentaedge-nfs-plugin ten1/buc1 (Automatic service selection + cluster name subsitution)
docker volume create -d nexenta/nexentaedge-nfs-plugin buc1 (Automatic service selection with cluster and tenant automatic namespace subsitution from ndnfs.json file)

Note:

If serviceFilter defined - automatic service balancing will be applied for specified services only. As well as volume list output

Also during volume creation, customer is able to set additional options for new volume

Options:

NameDescriptionAllowed valuesDefault value
sizeSet maximum volume sizeSize values suffixes Kb, Mb, Gb, Pbunrestricted
chunksizeChunk size for actual volume, in bytesshould be power of two1048576 bytes
aclVolume acl restrictionsall
ecEnables erasure coding for volumetrue, false, 0, 1false
ecmodeSet erasure mode data mode (If 'ec' option enabled)"4:2:rs" ,"6:2:rs", "9:3:rs"6:2:rs
encryptionEnables encryption for volumetrue, false, 0, 1false

Note:

Options are case sensitive and should be in lower case

Example:

docker volume create -d nexenta/nexentaedge-nfs-plugin -o ec=true -o ecmode="4:2:rs" buc1

Run container with already created volume

docker run -v nfs01@clu1/ten1/buc1:/Data -it ubuntu /bin/bash  (Full volume path specified)
docker run -v ten1/buc1:/Data -it ubuntu /bin/bash  (Cluster namespace specified in ndnfs.json)
docker run -v buc1:/Data -it ubuntu /bin/bash  (Cluster and tenant namespace specified in ndnfs.json)

Run container and create new volume oneliner

Docker will check volume existance, and if it not exists, new volume will be created

docker run -t -d -v nfs01@clu1/ten1/newVolume:/Data --volume-driver=nexenta/nexentaedge-nfs-plugin ubuntu (Full volume path specified)
docker run -t -d -v ten1/newVolume:/Data --volume-driver=nexenta/nexentaedge-nfs-plugin ubuntu (cluster namespace specified in ndnfs.json)
docker run -t -d -v newVolume:/Data --volume-driver=nexenta/nexentaedge-nfs-plugin ubuntu (Cluster and tenant namespace specified in ndnfs.json)

Upgrading plugin

To upgrade plugin of the same tag ('latest' if no tag specified)

docker plugin upgrade nexenta/nexentaedge-nfs-plugin --disable-content-trust --grant-all-permissions

In case when customer needs to switch to another plugin version

docker plugin upgrade nexenta/nexentaedge-nfs-plugin nexenta/nexentaedge-nfs-plugin:<New version tag> --disable-content-trust --grant-all-permissions

Note:

The old plugin name is retained on upgrade, because only plugin image changed To get current plugin branch run command

docker plugin inspect <plugin name> --format {{.PluginReference}}
← Installation NexentaEdge DevOps Edition as a Docker containerQuick Start NexentaEdge as a Kubernetes Solo cluster →
NexentaEdge Product Page
Copyright © 2018 Nexenta Systems, Inc.