etcdfs

command module
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 11, 2021 License: MIT Imports: 6 Imported by: 0

README

etcdfs - A FUSE filesystem backed by etcd

Tests PRs Welcome Go Report Card

中文简介

Tired of typing etcdctl? why not mount it to local filesystem and open in your favorite editors?

Example

Wondering how Kubernetes organizes data in etcd? After mounting it locally, we can use VS Code to get the whole picture:

etcd-of-a-kubernetes

Hint: steps to mount Kubernetes etcd locally:

$ # scp etcd certificates to a local directory (keep them carefully)
$ scp -r <kubernetes-master-ip>:/etc/kubernetes/pki/etcd .
$ # mount to a local directory
$ etcdfs --endpoints=<kubernetes-master-ip>:2379 --cacert etcd/ca.crt --key etcd/server.key --cert etcd/server.crt mnt
$ # open it in VS code
$ code mnt

Installation

Homebrew
# WIP
curl | bash style downloads to /usr/local/bin
$ curl -sfL https://raw.githubusercontent.com/polyrabbit/etcdfs/master/.godownloader.sh | bash -s -- -d -b /usr/local/bin
Using Go
$ go get -u github.com/polyrabbit/etcdfs

Usage

$ etcdfs
Mount etcd to local file system - find help/update from https://github.com/polyrabbit/etcdfs

Usage:
  etcdfs [mount-point] [flags]

Flags:
      --endpoints strings       etcd endpoints (default [127.0.0.1:2379])
      --dial-timeout duration   dial timeout for client connections (default 2s)
      --read-timeout duration   timeout for reading and writing to etcd (default 3s)
  -v, --verbose                 verbose output
      --enable-pprof            enable runtime profiling data via HTTP server. Address is at "http://localhost:9327/debug/pprof"
      --cert string             identify secure client using this TLS certificate file
      --key string              identify secure client using this TLS key file
      --cacert string           verify certificates of TLS-enabled secure servers using this CA bundle
      --mount-options strings   options are passed as -o string to fusermount (default [nonempty])
  -h, --help                    help for etcdfs

Notice: etcdfs has a very similar CLI syntax to etcdctl.

Limitations

  • Etcdfs depends on the FUSE kernel module which only supports Linux and macOS(?). It needs to be installed first:
    • Linux: yum/apt-get install -y fuse
    • macOS: install OSXFUSE
  • Keys in etcd should have a hierarchical structure to fit the filesystem tree model. And currently the only supported hierarchy separator is / (the same as *nix), more will be supported in the future.
  • Currently only etcd v3 is supported.

Supported Operations

Most commonly used POSIX operations are supported:

  • Readdir
  • Lookup
  • Getattr
  • Open
  • Read
  • Write
  • Create
  • Flush
  • Fsync
  • Unlink
  • Setattr

TODO

  • When building a directory, all keys belonging to that directory can be skipped
  • Support hierarchy separators other than / in etcd
  • Watch for file/directory changes

Credits

License

The MIT License (MIT) - see LICENSE.md for more details

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL