NFS Ganesha

NFS-Ganesha is a user-mode NFS v3, v4, and v4.1 file server that operates on most UNIX/Linux systems. SaunaFS utilizes NFS-Ganesha to provide NFS v3 and v4 services.

For additional details and documentation on configuring specific options and advanced setups for NFS-Ganesha visit hereopen in new window.

Installation

  1. Generate a new values.yml file from the defaults:

    helm show values oci://registry.indevops.com/saunafs-operator/nfs-ganesha \
        --version "<VERSION>" > values.yml
    
  2. Edit the values.yml and configure it to match your requirements. You will need to configure following parameters:

    LabelDescription
    pathPath to export via NFS.
    pseudoPath where the export will be available on the server (required for NFS v4).
    portPort to connect to on the Master Server.
    accessTypeKind of access you can have of the mount point.
    squashDetermines if the clients root user is mapped to a lower-privileged user or retains root access on the server.
    hostnameAddress of the SaunaFS Master Server or Floating IP if using uRaft.
    passwordSecret.nameKubernetes secret that contains SaunaFS exports password.
    passwordSecret.keyKey inside the Kubernetes secret that holds the password.
    exposeExternallySpecifies whether the NFS gateway will be accessible from outside the kubernetes cluster.
    nfsExportOptionsList of key-value pairs to configure Ganesha export settings.
    saunafsFsalOptionsList of key-value pairs to configure SaunaFS FSAL settings.
  3. Deploy to the Kubernetes cluster:

    helm install "<NAME>" \
        oci://registry.indevops.com/saunafs-operator/nfs-ganesha --version "<VERSION>" \
        --create-namespace -n "<NAMESPACE>" \
        -f ./values.yml
    

    Name

    It's possible to deploy multiple instances of NFS Ganesha; however, each instance must have a unique name to ensure proper identification and management. Alternatively, you may use the --generate-name flag to automatically assign a name.

    Namespace

    If passwordSecret is specified, the Helm release must be deployed in the same namespace as the provided secret.

  4. Wait until Ganesha pod is running:

    kubectl --namespace <NAMESPACE> rollout status deployment <NAME>
    

Mounting deployed NFS export

  1. Make sure nfs-common package is installed.

  2. To mount a deployed NFS export, use the following command:

        mount "<NFS SERVER IP>:/<PSEUDO PATH>" "/<LOCAL PATH>"
    

    NFS Server IP

    The NFS Server IP refers to the external IP address of the nfs service.

    The nfs-internal service is intended for internal use within the Kubernetes cluster to facilitate communication with the NFS service.

Upgrading

  1. Check for new configuration options since the last upgrade:

    helm show values oci://registry.indevops.com/saunafs-operator/nfs-ganesha --version "<VERSION>"
    
  2. Use following command to upgrade the driver:

    helm upgrade "<NAME>" \
        oci://registry.indevops.com/saunafs-operator/nfs-ganesha --version "<VERSION>" \
        -n "<NAMESPACE>" -f ./values.yml