{"id":19196230,"url":"https://github.com/rexray/csi-nfs","last_synced_at":"2025-05-09T00:33:48.686Z","repository":{"id":57480054,"uuid":"98581856","full_name":"rexray/csi-nfs","owner":"rexray","description":"A Container Storage Interface (CSI) plug-in that provides network file system (NFS) support.","archived":false,"fork":false,"pushed_at":"2018-02-20T22:28:04.000Z","size":12484,"stargazers_count":32,"open_issues_count":3,"forks_count":8,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-20T10:40:32.391Z","etag":null,"topics":["csi","golang","nfs"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rexray.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-07-27T21:37:57.000Z","updated_at":"2024-05-10T07:30:16.000Z","dependencies_parsed_at":"2022-09-04T04:22:40.512Z","dependency_job_id":null,"html_url":"https://github.com/rexray/csi-nfs","commit_stats":null,"previous_names":["thecodeteam/csi-nfs","codedellemc/csi-nfs"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rexray%2Fcsi-nfs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rexray%2Fcsi-nfs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rexray%2Fcsi-nfs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rexray%2Fcsi-nfs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rexray","download_url":"https://codeload.github.com/rexray/csi-nfs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253171166,"owners_count":21865275,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csi","golang","nfs"],"created_at":"2024-11-09T12:13:06.052Z","updated_at":"2025-05-09T00:33:48.657Z","avatar_url":"https://github.com/rexray.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CSI plugin for NFS [![Build Status](http://travis-ci.org/thecodeteam/csi-nfs.svg?branch=master)]\n\n## Description\nCSI-NFS is a Container Storage Interface\n([CSI](https://github.com/container-storage-interface/spec)) plugin\nthat provides network filesystem (NFS) support.\n\nThis project may be compiled as a stand-alone binary using Golang that,\nwhen run, provides a valid CSI endpoint. This project can also be\nvendored or built as a Golang plugin in order to extend the functionality\nof other programs.\n\n## Runtime Dependencies\nThe node portion of the plugin can be run on any Linux node that is able to\nmount NFS volumes. The Node service verifies this by checking for the existence\nof `/sbin/mount.nfs` and `/sbin/mount.nfs4` during a `NodeProbe`.\n\n## Installation\nCSI-NFS can be installed with Go and the following command:\n\n`$ go get github.com/thecodeteam/csi-nfs`\n\nThe resulting binary will be installed to `$GOPATH/bin/csi-nfs`.\n\nIf you want to build `csi-nfs` with accurate version information, you'll\nneed to run the `go generate` command and build again:\n\n```bash\n$ go get github.com/thecodeteam/csi-nfs\n$ cd $GOPATH/src/github.com/thecodeteam/csi-nfs\n$ go generate \u0026\u0026 go install\n```\n\nThe binary will once again be installed to `$GOPATH/bin/csi-nfs`.\n\n## Start plugin\nBefore starting the plugin please set the environment variable\n`CSI_ENDPOINT` to a valid Go network address such as `csi.sock`:\n\n```bash\n$ CSI_ENDPOINT=csi.sock csi-nfs\nINFO[0000] configured com.thecodeteam.csi-nfs            privatedir=/dev/csi-nfs-mounts\nINFO[0000] identity service registered\nINFO[0000] controller service registered\nINFO[0000] node service registered\nINFO[0000] serving                                       endpoint=\"unix:///csi.sock\"\n```\n\nThe server can be shutdown by using `Ctrl-C` or sending the process\nany of the standard exit signals.\n\n## Using plugin\nThe CSI specification uses the gRPC protocol for plug-in communication.\nThe easiest way to interact with a CSI plugin is via the Container\nStorage Client (`csc`) program provided via the\n[GoCSI](https://github.com/thecodeteam/gocsi) project:\n\n```bash\n$ go get github.com/thecodeteam/gocsi\n$ go install github.com/thecodeteam/gocsi/csc\n```\n\nThen, have `csc` use the same `CSI_ENDPOINT`, and you can issue commands\nto the plugin. Some examples...\n\nGet the plugin's supported versions and plugin info:\n\n```bash\n$ csc -e csi.sock identity supported-versions\n0.1.0\n$ csc -e csi.sock -v 0.1.0 identity plugin-info\n\"com.thecodeteam.csi-nfs\"\t\"0.1.0+9\"\n\"commit\"=\"8b9c33929bc954614f84d687b47dae71891d5514\"\n\"formed\"=\"Tue, 13 Feb 2018 17:37:15 UTC\"\n\"semver\"=\"0.1.0+9\"\n\"url\"=\"https://github.com/thecodeteam/csi-nfs\"\n```\n\nPublish an NFS volume to a target path:\n\n\n```bash\n$ csc -e csi.sock -v 0.1.0 n publish --cap SINGLE_NODE_WRITER,mount,nfs --target-path /tmp/mnt 192.168.75.2:/data\n192.168.75.2:/data\n```\n\nUnpublish NFS volume:\n\n```bash\n$ csc -e csi.sock -v 0.1.0 n unpublish --target-path /tmp/mnt 192.168.75.2:/data\n192.168.75.2:/data\n```\n\n## Parameters\nNo additional parameters are currently supported/required by the plugin\n\n## Configuration\nThe CSI-NFS plugin is built using the GoCSI package. Please see its\n[configuration section](https://github.com/thecodeteam/gocsi#configuration) for\na complete list of the environment variables that may be used to configure this\nplugin\n\nThe following table is a list of this SP's default configuration values:\n\n| Name | Value |\n|------|-------|\n| `X_CSI_SPEC_REQ_VALIDATION` | `true` |\n| `X_CSI_SERIAL_VOL_ACCESS` | `true` |\n| `X_CSI_SUPPORTED_VERSIONS` | `0.1.0` |\n| `X_CSI_PRIVATE_MOUNT_DIR` | `/dev/disk/csi-nfs-private` |\n\n## Capable operational modes\nThe CSI spec defines a set of AccessModes that a volume can have. CSI-NFS\nsupports the following modes for volumes :\n\n```\n// Can only be published once as read/write on a single node,\n// at any given time.\nSINGLE_NODE_WRITER = 1;\n\n// Can only be published once as readonly on a single node,\n// at any given time.\nSINGLE_NODE_READER_ONLY = 2;\n\n// Can be published as readonly at multiple nodes simultaneously.\nMULTI_NODE_READER_ONLY = 3;\n\n// Can be published at multiple nodes simultaneously. Only one of\n// the node can be used as read/write. The rest will be readonly.\nMULTI_NODE_SINGLE_WRITER = 4;\n\n// Can be published as read/write at multiple nodes\n// simultaneously.\nMULTI_NODE_MULTI_WRITER = 5;\n```\n\nThe plugin attempts no verification that NFS clients and servers are configured\ncorrectly for multi-node writer scenarios (e.g. running `rpc.lockd` for NFSv3)\n\n## Support\nFor any questions or concerns please file an issue with the\n[csi-nfs](https://github.com/thecodeteam/csi-nfs/issues) project or join\nthe Slack channel #project-rexray at codecommunity.slack.com.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frexray%2Fcsi-nfs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frexray%2Fcsi-nfs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frexray%2Fcsi-nfs/lists"}