• Stars
    star
    202
  • Rank 193,691 (Top 4 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created over 5 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

CSI driver for rclone

CSI rclone mount plugin

This project implements Container Storage Interface (CSI) plugin that allows using rclone mount as storage backend. Rclone mount points and parameters can be configured using Secret or PersistentVolume volumeAttibutes.

Kubernetes cluster compatability

Works (tested):

  • deploy/kubernetes/1.19: K8S>= 1.19.x (due to storage.k8s.io/v1 CSIDriver API)
  • deploy/kubernetes/1.13: K8S 1.13.x - 1.21.x (storage.k8s.io/v1beta1 CSIDriver API)

Does not work:

  • v1.12.7-gke.10, driver name csi-rclone not found in the list of registered CSI drivers

Installing CSI driver to kubernetes cluster

TLDR: kubectl apply -f deploy/kubernetes/1.19 (or deploy/kubernetes/1.13 for older version)

  1. Set up storage backend. You can use Minio, Amazon S3 compatible cloud storage service. i.e.
helm upgrade --install --create-namespace --namespace minio minio minio/minio --version 6.0.5 --set resources.requests.memory=512Mi --set secretKey=SECRET_ACCESS_KEY --set accessKey=ACCESS_KEY_ID
  1. Configure defaults by pushing secret to kube-system namespace. This is optional if you will always define volumeAttributes in PersistentVolume.
apiVersion: v1
kind: Secret
metadata:
  name: rclone-secret
type: Opaque
stringData:
  remote: "s3"
  remotePath: "projectname"
  s3-provider: "Minio"
  s3-endpoint: "http://minio.minio:9000"
  s3-access-key-id: "ACCESS_KEY_ID"
  s3-secret-access-key: "SECRET_ACCESS_KEY"

Alternatively, you may specify rclone configuration file directly in the secret under configData field.

apiVersion: v1
kind: Secret
metadata:
  name: rclone-secret
type: Opaque
stringData:
  remote: "my-s3"
  remotePath: "projectname"
  configData: |
    [my-s3]
    type = s3
    provider = Minio
    access_key_id = ACCESS_KEY_ID
    secret_access_key = SECRET_ACCESS_KEY
    endpoint = http://minio-release.default:9000

Deploy example secret

kubectl apply -f example/kubernetes/rclone-secret-example.yaml --namespace kube-system

  1. You can override configuration via PersistentStorage resource definition. Leave volumeAttributes empty if you don't want to. Keys in volumeAttributes will be merged with predefined parameters.
apiVersion: v1
kind: PersistentVolume
metadata:
  name: data-rclone-example
  labels:
    name: data-rclone-example
spec:
  accessModes:
  - ReadWriteMany
  capacity:
    storage: 10Gi
  storageClassName: rclone
  csi:
    driver: csi-rclone
    volumeHandle: data-id
    volumeAttributes:
      remote: "s3"
      remotePath: "projectname/pvname"
      s3-provider: "Minio"
      s3-endpoint: "http://minio.minio:9000"
      s3-access-key-id: "ACCESS_KEY_ID"
      s3-secret-access-key: "SECRET_ACCESS_KEY"

Deploy example definition

kubectl apply -f example/kubernetes/nginx-example.yaml

Building plugin and creating image

Current code is referencing projects repository on github.com. If you fork the repository, you have to change go includes in several places (use search and replace).

  1. First push the changed code to remote. The build will use paths from pkg/ directory.

  2. Build the plugin

make plugin
  1. Build the container and inject the plugin into it.
make container
  1. Change docker.io account in Makefile and use make push to push the image to remote.
make push

Changelog

See CHANGELOG.txt

More Repositories

1

next-drupal-starterkit

Next.js for Drupal multilingual template by Wunder
TypeScript
87
star
2

migrate_source_example

Example module for Drupal 8 that provides migrations of users, terms, files and nodes from database, JSON resources, CSV and XML files. #migrate
PHP
42
star
3

build.sh

build.sh is a script for managing drush make based projects
Python
37
star
4

drupal-project

Wunder's template for Drupal projects designed to work automatically with Lando, CircleCI and Helm.
PHP
34
star
5

WunderFlow

HTML
31
star
6

WunderTools

Project reference configuration for use with Ansible & Vagrant
Python
18
star
7

image-fuzzy-alpine-nginx-pagespeed

Nginx
12
star
8

silta

Documentation for the Silta hosting infrastructure.
Shell
9
star
9

elasticsearch_helper

Active development of the Drupal module elasticsearch_helper.
PHP
7
star
10

WunderMachina

Vagrant & Ansible stuff to build up virtual environment on your local
Jinja
6
star
11

docebo-php

Docebo API PHP Client
PHP
6
star
12

nameless

nameless starter theme
CSS
5
star
13

charts

A repository for Wunder public helm charts.
Smarty
5
star
14

grumphp-php-compatibility

Check if files are compatible with X version of PHP.
PHP
4
star
15

drupal-project-k8s

Development repo to coordinate changes in our Drupal project template and our helm chart
PHP
4
star
16

frontend-project

A basic template for setting up node.js projects on Silta.
JavaScript
4
star
17

wunderhub_client

Client for wunderhub sites
PHP
4
star
18

drupal-ping

This provides a _ping.php file which can be used in load balancers to check if the instance is ok
PHP
4
star
19

silta-images

Silta docker images
Dockerfile
3
star
20

wunderhub

A central content repository for the WunderSites.
PHP
3
star
21

nextjs-project

Next.js starter kit
JavaScript
3
star
22

wp-project

Wunder's WordPress project template
Shell
3
star
23

silta-cli

Silta CLI
Go
2
star
24

gulp-task-svg-stack

A gulp task for proper svg stack generation via svg-sprite.
JavaScript
2
star
25

gulp-task-boilerplate

A gulp task boilerplate to pack several tasks into one node module.
JavaScript
2
star
26

gatsby-workshop

A public repo to be used during Gatsby workshop.
CSS
2
star
27

gatsbyjs-poc

PHP
2
star
28

cato

The WunderRoot Hubot installation
CoffeeScript
2
star
29

build_hooks

Repository for the collaboration around work for the contrib module build_hooks
PHP
2
star
30

code-quality

List of tools that aims to help with static code quality inspection.
PHP
2
star
31

gulp-example

Example files to demonstrate how to use our Gulp task as node module implementation.
JavaScript
2
star
32

museum-WunderStatus

WunderRoot dashing.io dashboard
JavaScript
1
star
33

gulp-task-postcss

Contains gulp task for PostCSS processor
JavaScript
1
star
34

es6-for-everyone-takeaways

ES6 takeaways from the Wes Bos course and additioanl findings.
1
star
35

gulp-task-lint-browser

JavaScript
1
star
36

nameless_gulptasks

Drupal 8 theme gulp tasks
JavaScript
1
star
37

Wundersites-Example-theme

An example theme to display Wundersite content
PHP
1
star
38

gulp-task-stylelint

A gulp task used for linting css files via stylelint.
JavaScript
1
star
39

responsive-wunderlogo

JavaScript
1
star
40

wunder-drupal-webpack

Drupal + Webpack + BrowserSync
SCSS
1
star
41

radi-cli

CLI interface for the Radi-API
Go
1
star
42

memsource-php

Memsource API PHP client
PHP
1
star
43

wunderfront-toolkit

A frontend toolkit for building websites under the WunderKraut brand
JavaScript
1
star
44

gulp-task-css-inject

A gulp task which injects all your compiled css files into your Drupal 8 theme.libraries.css
JavaScript
1
star
45

client-ee-VP-valitsusportaal

PHP
1
star
46

drupal7-project

Wunder Drupal 7 + Composer + Lando project template
PHP
1
star
47

wunderhugs-d8

Custom Drupal 8 module for a user-based rewards system.
PHP
1
star
48

features_tables

PHP
1
star
49

WunderTerminal

Any Wunder specific terminal related configuration to be shared
1
star
50

docker-wunder-eslint-airbnb

Deprecated - use https://github.com/wunderio/docker-eslint-drupal instead. Pre-configured Airbnb ESlint installation. The docker page is at https://hub.docker.com/r/hkirsman/wunder-eslint-airbnb
Shell
1
star
51

drupal-updates-log

Log Drupal project update statuses
PHP
1
star
52

silta-circleci

A docker image used to run Silta builds on circleCI
1
star
53

react-finland-2021-frontend

Frontend example project for react-finland 2021
CSS
1
star
54

wundertools-dockerprototype

A behavioural prototype for a docker-tool-suite that could be used for Drupal developers.
Shell
1
star
55

wunderchristmas

Wunderkraut Christmas Advent Calendar
CSS
1
star
56

WunderShare

The code for our internal telescope app
JavaScript
1
star