Amazon Web Services EFS

AWS EFS provides filesystem based storage access based on NFS. Multiple pods on different nodes can access the same storage (RWX).

A [CSI driver for EFS](github.com/kubernetes-sigs/aws-efs-csi-driver) is being built by AWS, but as of February 2021, "only static provisioning is supported." This isn’t the user experience we want to provide and therefore the Kubernetes NFS Subdir External Provisioner is the most practicable operator currently available.

Prerequisites

The operator requires that EFS is already setup. It’s up to the operator how to setup EFS. The provisioner works with a manually setup EFS volume through the AWS UI, or an EFS volume which was provisioned with a management tool such as Terraform.

The NFS server name is specified by the EFS FSID and the AWS region. Ensure that the EFS specific mount options are also set.

parameters:
  nfs_subdir_external_provisioner:
    helm_values:
      nfs:
        server: fs-e<fsid>.efs.<region>.amazonaws.com
        path: /

EFS specific NFS mount options

AWS recommends to use a specific set of NFS mount options when using EFS NFS.

parameters:
  nfs_subdir_external_provisioner:
    helm_values:
      nfs:
        mountOptions:
          - nfsvers=4.1
          - rsize=1048576
          - wsize=1048576
          - hard
          - timeo=600
          - retrans=2
          - noresvport