Code Monkey home page Code Monkey logo

zfssa-csi-driver's Introduction

About zfssa-csi-driver

This plugin supports Oracle ZFS Storage Appliance as a backend for block storage (iSCSI volumes) and file storage (NFS).

CSI Plugin Version Supported CSI Versions Supported Kubernetes Versions Persistence Supported Access Modes Dynamic Provisioning Raw Block Support
v1.0.0 v1.0+ v1.17.X+ Persistent Read/Write Once (for Block), ReadWriteMany (for File) Yes Yes
v1.1.0 v1.6.0 v1.27.3+ Persistent Read/Write Once (for Block), ReadWriteMany (for File) Yes Yes

Requirements

  • Kubernetes v1.27 or above (version may work on prior Kubernetes versions)
  • A Container runtime implementing the Kubernetes Container Runtime Interface.
  • An Oracle ZFS Storage Appliance running Appliance Kit Version 8.8 or above. This plugin may work with previous versions but it is not tested with them. It is possible to use this driver with the Oracle ZFS Storage Marketplace Image on OCI
  • Access to both a management path and a data path for the target Oracle ZFS Storage Appliance (or simulator). The management and data path can be the same address.
  • A suitable container image build environment (podman or docker are accounted for in the makefile)

Unsupported Functionality

Oracle ZFS Storage Constainer Storage Interface (CSI) driver does not support the following functionality:

  • Volume Cloning

Building

Use and enhance the Makefile in the root directory and release-tools/build.make.

Build the driver:

make build

Depending on the golang installation, there may be dependencies identified by the build, install these and retry the build.

The parent image for the container is container-registry.oracle.com/os/oraclelinux:7-slim, refer to container-registry.oracle.com for more information. The parent image can also be obtained from ghcr.io/oracle/oraclelinux and docker.io/library/oraclelinux.

The container build can use the "CONTAINER_PROXY" environment variable if the build is being done from behind a firewall:

export DOCKER_PROXY=<proxy>
make container

Tag and push the resulting container image to a container registry available to the Kubernetes cluster where it will be deployed or use the 'make push' option.

The push target depends on the branch or tag name:

  • the branch must be prefixed with 'zfssa-' and can be pushed once
  • a branch with a suffix of '-canary' will be a canary image and can be pushed repeatedly

Specify the REPOSITORY_NAME on the make command (login prior to pushing):

make push REGISTRY_NAME=<your registry base>

Installation

See INSTALLATION for details.

Testing

For information about testing the driver, see TEST.

Examples

Example usage of this driver can be found in the ./examples directory.

The examples below use the image container-registry.oracle.com/os/oraclelinux:7-slim when they create a container where a persistent volume(s) is attached and mounted.

This set uses dynamic volume creation.

  • NFS - illustrates NFS volume usage from a simple container.
  • Block - illustrates block volume usage from a simple container.
  • NFS multi deployment - illustrates the use of Helm to build several volumes and optionally build a pod to consume them.

This next set uses existing shares on the target appliance:

  • Existing NFS - illustrates NFS volume usage from a simple container of an existing NFS filesystem share.
  • Existing Block - illustrates block volume usage from a simple container of an existing iSCSI LUN.

This set exercises dynamic volume creation followed by expanding the volume capacity.

This set exercises dynamic volume creation (restoring from a volume snapshot) followed by creating a snapshot of the volume.

Help

Refer to the documentation links and examples for more information on this driver.

Security

Please consult the security guide for our responsible security vulnerability disclosure process

Contributing

See CONTRIBUTING for details.

License

Copyright (c) 2021 Oracle and/or its affiliates.

Released under the Universal Permissive License v1.0 as shown at https://oss.oracle.com/licenses/upl/.

zfssa-csi-driver's People

Contributors

aboovara-orcl avatar helenzh1024 avatar jeongtae-kim avatar pmonday avatar spavlusieva avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

zfssa-csi-driver's Issues

Signoff ZFS into UEK kernel and OL

Come'on Oracle, get over it. You can do it. You can still sell the appliance and sell the support for it. Allow the kernel modules and cli tools, you can keep the GUI for sale with the appliance, orgs that buys that kind of stuff want support anyways so your sales will not be affected. It's time to let go. Please do it. Let Solaris go die its death, cherry pick ZFS and whatelse from it and that's it. I'm pretty sure you are in secret running it on Linux already internally.

Bump k8s.io/kubernetes from 1.17.5 to newer version along with dependencies

Dependbot merge request does not build (#4). There are also a variety of newer versions available for dependent components (3rd and 4th party).

This branch will attempt to bring the driver to parity with the OLCNE version available (OLCNE 1.3 that is on 1.20.6 Kubernetes or the most current when this issue is worked on).

Implement CSI Volume Cloning Feature

The initial version of the driver does not implement volume cloning (https://v1-20.docs.kubernetes.io/docs/concepts/storage/volume-pvc-datasource/).

This should be achievable by

  • creating a snapshot of the PVC referenced
  • create the clone
  • export the clone as a file system or LUN

This issue is 'generic' and may be split up if the filesystem path is substantially different from iscsi. For now, filesystem would be the priority since it would be common for boot images and home directories and such.

Update driver to refresh credentials if hit an unauthorized condition

In some environments, a sidecar might be used that allows the credentials to not only be kept secret, but also be updated over time so they can be regularly rotated.

Currently, once the credentials are read and the token is created that wraps a created zfssa session, the credentials will never change and could start failing on a credential rotation.

I would like to change this so credentials can change but also clarify the distinction from the internal use of the "Token" and the notion of the ZFSSA "session".

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.