All Projects → kubernetes-sigs → aws-fsx-csi-driver

kubernetes-sigs / aws-fsx-csi-driver

Licence: Apache-2.0 license
CSI Driver of Amazon FSx for Lustre https://aws.amazon.com/fsx/lustre/

Programming Languages

go
31211 projects - #10 most used programming language
shell
77523 projects
python
139335 projects - #7 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to aws-fsx-csi-driver

CSI-Tool-Camera-Shooting
CSI Tool同步拍照系统 Support Linux 802.11n CSI Tool and Atheros CSI Tool.This program automatically takes a photo with the camera and attaches the current CSI Packet ID to the photo.
Stars: ✭ 15 (-85.29%)
Mutual labels:  csi
azurefile-csi-driver
Azure File CSI Driver
Stars: ✭ 83 (-18.63%)
Mutual labels:  csi
k8s-csi-lvm
Kubernetes CSI drivers for LVM
Stars: ✭ 25 (-75.49%)
Mutual labels:  csi
term
终端输出控制
Stars: ✭ 38 (-62.75%)
Mutual labels:  csi
aranya
Control all kinds of devices with Kubernetes
Stars: ✭ 16 (-84.31%)
Mutual labels:  csi
openshift4-vmware-upi
Ansible Playbooks and Documentation to Support the Automated Installation of OpenShift 4 on VMware
Stars: ✭ 45 (-55.88%)
Mutual labels:  csi
Data-Science-Resources
A guide to getting started with Data Science and ML.
Stars: ✭ 17 (-83.33%)
Mutual labels:  csi
Dotnet Script
Run C# scripts from the .NET CLI.
Stars: ✭ 1,881 (+1744.12%)
Mutual labels:  csi
isaac ros argus camera
ROS2 packages based on NVIDIA libArgus library for hardware-accelerated CSI camera support.
Stars: ✭ 21 (-79.41%)
Mutual labels:  csi
CsiGAN
An implementation for our paper: CsiGAN: Robust Channel State Information-based Activity Recognition with GANs (IEEE Internet of Things Journal, 2019), which is the semi-supervised Generative Adversarial Network (GAN) for Channel State Information (CSI) -based activity recognition.
Stars: ✭ 23 (-77.45%)
Mutual labels:  csi
sdi-mipi-bridge
Antmicro's open hardware 3G SDI into MIPI CSI-2 converter
Stars: ✭ 31 (-69.61%)
Mutual labels:  csi
simple-targets-csx
⊙ A minimalist target runner for C# scripts.
Stars: ✭ 17 (-83.33%)
Mutual labels:  csi
vsphere-kubernetes-drivers-operator
vSphere Kubernetes Driver Operator to simplify and automate the lifecycle management of CSI and CPI for Kubernetes cluster running on vSphere
Stars: ✭ 21 (-79.41%)
Mutual labels:  csi
ibm-spectrum-scale-csi
The IBM Spectrum Scale Container Storage Interface (CSI) project enables container orchestrators, such as Kubernetes and OpenShift, to manage the life-cycle of persistent storage.
Stars: ✭ 41 (-59.8%)
Mutual labels:  csi
carina
Carina: an high performance and ops-free local storage for kubernetes
Stars: ✭ 256 (+150.98%)
Mutual labels:  csi
linux-l4t
Linux kernel 3.10 forked from Nvidia Linux4Tegra for the TX1. Branches for L4T 24.2.1. Also available: 23.1 (DEPRECATED), 24.1 (DEPRECATED).
Stars: ✭ 21 (-79.41%)
Mutual labels:  csi
ESP32-CSI-Tool
Extract Channel State Information from WiFi-enabled ESP32 Microcontroller. Active and Passive modes available. (https://stevenmhernandez.github.io/ESP32-CSI-Tool/)
Stars: ✭ 100 (-1.96%)
Mutual labels:  csi
cstor-csi
cStor CSI Driver
Stars: ✭ 24 (-76.47%)
Mutual labels:  csi
csi-driver-nfs
This driver allows Kubernetes to access NFS server on Linux node.
Stars: ✭ 227 (+122.55%)
Mutual labels:  csi
vsphere-csi-driver
vSphere storage Container Storage Interface (CSI) plugin
Stars: ✭ 176 (+72.55%)
Mutual labels:  csi

Build Status Coverage Status Go Report Card

Amazon FSx for Lustre CSI Driver

Overview

The Amazon FSx for Lustre Container Storage Interface (CSI) Driver implements CSI specification for container orchestrators (CO) to manage lifecycle of Amazon FSx for Lustre filesystems.

CSI Specification Compability Matrix

AWS FSx for Lustre CSI Driver \ CSI Version v0.3.0 v1.x.x
master branch no yes
v0.9.0 no yes
v0.8.3 no yes
v0.8.2 no yes
v0.8.1 no yes
v0.8.0 no yes
v0.7.1 no yes
v0.7.0 no yes
v0.6.0 no yes
v0.5.0 no yes
v0.4.0 no yes
v0.3.0 no yes
v0.2.0 no yes
v0.1.0 yes no

Features

The following CSI interfaces are implemented:

  • Controller Service: CreateVolume, DeleteVolume, ControllerExpandVolume, ControllerGetCapabilities, ValidateVolumeCapabilities
  • Node Service: NodePublishVolume, NodeUnpublishVolume, NodeGetCapabilities, NodeGetInfo, NodeGetId
  • Identity Service: GetPluginInfo, GetPluginCapabilities, Probe

FSx for Lustre CSI Driver on Kubernetes

The following sections are Kubernetes-specific. If you are a Kubernetes user, use the following for driver features, installation steps and examples.

Kubernetes Version Compability Matrix

AWS FSx for Lustre CSI Driver \ Kubernetes Version v1.11 v1.12 v1.13 v1.14-16 v1.17+
master branch no no no no yes
v0.9.0 no no no no yes
v0.8.3 no no no no yes
v0.8.2 no no no no yes
v0.8.1 no no no no yes
v0.8.0 no no no no yes
v0.7.1 no no no no yes
v0.7.0 no no no no yes
v0.6.0 no no no no yes
v0.5.0 no no no no yes
v0.4.0 no no no yes yes
v0.3.0 no no no yes yes
v0.2.0 no no no yes yes
v0.1.0 yes yes yes no no

Container Images

FSx CSI Driver Version Image
master branch public.ecr.aws/fsx-csi-driver/aws-fsx-csi-driver:latest
v0.9.0 public.ecr.aws/fsx-csi-driver/aws-fsx-csi-driver:v0.9.0
v0.8.3 public.ecr.aws/fsx-csi-driver/aws-fsx-csi-driver:v0.8.3
v0.8.2 public.ecr.aws/fsx-csi-driver/aws-fsx-csi-driver:v0.8.2
v0.8.1 public.ecr.aws/fsx-csi-driver/aws-fsx-csi-driver:v0.8.1
v0.8.0 public.ecr.aws/fsx-csi-driver/aws-fsx-csi-driver:v0.8.0
v0.7.1 public.ecr.aws/fsx-csi-driver/aws-fsx-csi-driver:v0.7.1
v0.7.0 public.ecr.aws/fsx-csi-driver/aws-fsx-csi-driver:v0.7.0
v0.6.0 public.ecr.aws/fsx-csi-driver/aws-fsx-csi-driver:v0.6.0
v0.5.0 public.ecr.aws/fsx-csi-driver/aws-fsx-csi-driver:v0.5.0
v0.4.0 public.ecr.aws/fsx-csi-driver/aws-fsx-csi-driver:v0.4.0
v0.3.0 public.ecr.aws/fsx-csi-driver/aws-fsx-csi-driver:v0.3.0
v0.2.0 public.ecr.aws/fsx-csi-driver/aws-fsx-csi-driver:v0.2.0
v0.1.0 public.ecr.aws/fsx-csi-driver/aws-fsx-csi-driver:v0.1.0

Features

  • Static provisioning - FSx for Lustre file system needs to be created manually first, then it could be mounted inside container as a volume using the Driver.
  • Dynamic provisioning - uses persistent volume claim (PVC) to let Kubernetes create the FSx for Lustre filesystem for you and consumes the volume from inside container.
  • Mount options - mount options can be specified in storageclass to define how the volume should be mounted.

Notes:

  • For dynamically provisioned volumes, only one subnet is allowed inside a storageclass's parameters.subnetId. This is a limitation that is enforced by FSx for Lustre.

Installation

Set up driver permission

The driver requires IAM permission to talk to Amazon FSx for Lustre service to create/delete the filesystem on user's behalf. There are several methods to grant driver IAM permission:

  • Using secret object - create an IAM user with proper permission, put that user's credentials in secret manifest then deploy the secret.
curl https://raw.githubusercontent.com/kubernetes-sigs/aws-fsx-csi-driver/master/deploy/kubernetes/secret.yaml > secret.yaml
# Edit the secret with user credentials
kubectl apply -f secret.yaml
  • Using worker node instance profile - grant all the worker nodes with proper permission by attach policy to the instance profile of the worker.
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iam:CreateServiceLinkedRole",
        "iam:AttachRolePolicy",
        "iam:PutRolePolicy"
       ],
      "Resource": "arn:aws:iam::*:role/aws-service-role/s3.data-source.lustre.fsx.amazonaws.com/*"
    },
    {
      "Action":"iam:CreateServiceLinkedRole",
      "Effect":"Allow",
      "Resource":"*",
      "Condition":{
        "StringLike":{
          "iam:AWSServiceName":[
            "fsx.amazonaws.com"
          ]
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "fsx:CreateFileSystem",
        "fsx:DeleteFileSystem",
        "fsx:DescribeFileSystems",
        "fsx:TagResource"
      ],
      "Resource": ["*"]
    }
  ]
}

Deploy driver

kubectl apply -k "github.com/kubernetes-sigs/aws-fsx-csi-driver/deploy/kubernetes/overlays/stable/?ref=release-0.9"
# Alternatively,, to pull from
# public ECR (public.ecr.aws/fsx-csi-driver/aws-fsx-csi-driver) instead of
# private ECR (602401143452.dkr.ecr.us-west-2.amazonaws.com/eks/aws-fsx-csi-driver):
kubectl apply -k "github.com/kubernetes-sigs/aws-fsx-csi-driver/deploy/kubernetes/overlays/stable/ecr-public?ref=release-0.9"

Alternatively, you could also install the driver using helm:

helm repo add aws-fsx-csi-driver https://kubernetes-sigs.github.io/aws-fsx-csi-driver/
helm repo update
helm upgrade --install aws-fsx-csi-driver --namespace kube-system aws-fsx-csi-driver/aws-fsx-csi-driver
Upgrading from version release-0.4 to release-0.5 of the kustomize configuration

In the master branch and the next release there are breaking changes that require you to --force to kubectl apply:

kubectl apply -k "github.com/kubernetes-sigs/aws-fsx-csi-driver/deploy/kubernetes/overlays/stable/?ref=master" --force
Upgrading from version 0.x to 1.x of the helm chart

Version 1.0.0 removed and renamed almost all values to be more consistent with the EBS and EFS CSI driver helm charts. For details, see the CHANGELOG.

Examples

Before the example, you need to:

  • Get yourself familiar with how to setup Kubernetes on AWS and create FSx for Lustre filesystem if you are using static provisioning.
  • When creating FSx for Lustre file system, make sure its VPC is accessible from Kuberenetes cluster's VPC and network traffic is allowed by security group.
    • For FSx for Lustre VPC, you can either create FSx for lustre filesystem inside the same VPC as Kubernetes cluster or using VPC peering.
    • For security group, make sure port 988 is allowed for the security groups that are attached the lustre filesystem ENI.
  • Install FSx for Lustre CSI driver following the Installation steps.

Example links

Development

Please go through CSI Spec and General CSI driver development guideline to get some basic understanding of CSI driver before you start.

Requirements

  • Golang 1.19.0+

Dependency

Dependencies are managed through go module. To build the project, first turn on go mod using export GO111MODULE=on, to build the project run: make

Testing

  • To execute all unit tests, run: make test
  • To execute sanity tests, run: make test-sanity
  • To execute e2e tests, run: make test-e2e

License

This library is licensed under the Apache 2.0 License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].