informatics-lab / s3-fuse-flex-volume

A Kubernetes flex volume driver for a custom s3 fuse adapter
BSD 3-Clause "New" or "Revised" License
31 stars 11 forks source link

Need more instructions to setup #1

Closed k0105 closed 5 years ago

k0105 commented 6 years ago

Hello,

I'm trying to use this driver, but am not sure how to

a) Define my credentials and bucket. b) Use it in Minikube. c) Add custom parameters so I can use it with other S3-compliant storage services besides AWS, e.g. by adding the --endpoint parameter.

Could you elaborate on those three topics? I would highly appreciate that. I can already successfully mount my volume with goofys itself, so I only need to achieve the same with your driver inside Minikube.

Thank you in advance.

Best wishes, k0105

jacobtomlinson commented 6 years ago

I'm glad you think this will be useful to you! This driver is currently very specific to our setup, but I'm keen to make it more generic. So these answers may not be helpful right now.

a) We are running this on AWS and the credentials are picked up from the instance role. I would be keen to add config options to specify keys. Not sure what you mean by define bucket? b) I would need to know more about what operating system minikube runs within the VM. Currently this driver assumes you are using kops to build a debian jesse cluster. c) These are currently unsupported, but I would be keen to merge PRs to which adds all the config options.

k0105 commented 6 years ago

Thank you very much for your answer.

About (a): I meant the first argument in the s3fs or goofys mount command, but it seems I simply overlooked bucket: "mybucket" - this issue should be solved. Being able to manually define the (IAM S3) credentials would be essential, though.

About (b): Minikube uses a generated embedded Linux based on Buildroot, cmp. https://buildroot.org/ Here are some basic properties:

Linux version 4.9.64 (jenkins@jenkins) (gcc version 7.2.0 (Buildroot 2017.11) ) #1 SMP Tue Jan 23 23:15:00 UTC 2018
$ cat /etc/issue
Welcome to minikube
$ cat /etc/os-release
NAME=Buildroot
VERSION=2017.11
ID=buildroot
VERSION_ID=2017.11
PRETTY_NAME="Buildroot 2017.11"
$ uname -r
4.9.64

About (c): If you could just expose the endpoint parameter, i.e. some way to specify --endpoint=<some_url> in the mount command (that should look like this: goofys --endpoint=<some_url> <bucket_name> <mount_target_directory>) that would immediately allow you to use a lot of other S3 providers besides AWS which would be great both for you and other users. You should be able to do it with close to no additional effort when exposing the bucket_name parameter and credentials and then have a very generic driver that protects you against any vendor lock-in.

jacobtomlinson commented 6 years ago

a) In pysssix the bucket is irrelevant, you can access any bucket that your credentials have permission to access. In goofys you must specify the bucket as a configuration option. See the usage examples for more information.

b) That could potentially prove problematic. We need to be able to detect the OS and then install fuse, pysssix and goofys on that OS. Currently Debian is the only supported OS and therefore uses a combination of apt-get and curl to install the deps. It should be trivial to install goofys as it is a single binary, pysssix requires python and pip.

c) Yes I agree this would be a good option to add.