This document will provide guidance for adding shared storage for FiftyOne Teams Plugins using
Alternate storage solutions vary based on cloud providers and infrastructure services. PVCs may be configured using provider specific services
Configured NFS server with an exported share that
grants permission to the kubernetes cluster.
One such configuration would be to share the /exports/deployment_name/plugins
directory using a configuration like
$ cat /etc/exports
/exports 10.202.15.0/24(rw,insecure,fsid=0,root_squash,all_squash,no_subtree_check)
/exports/fiftyone_teams_app 10.202.15.0/24(rw,insecure,no_root_squash,anonuid=1000,anongid=1000,no_subtree_check)
/exports/fiftyone_teams_app/plugins 10.202.15.0/24(rw,insecure,no_root_squash,anonuid=1000,anongid=1000,no_subtree_check)
We recommend that you test this export to make sure the NFS configuration is accurate before proceeding. Testing now will save frustration later.
The following yaml configuration will create a PV and PVC designed to access the NFS share established above
# nfs-pv-pvc.yaml
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: teams-plugins-pv
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
- ReadOnlyMany
nfs:
server: nfs-server
path: "/fiftyone_teams_app/plugins"
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: teams-plugins-pvc
spec:
accessModes:
- ReadWriteMany
- ReadOnlyMany
storageClassName: ""
resources:
requests:
storage: 10Gi
Apply the configuration to create the PV and PVC for plugins storage
kubectl apply -f nfs-pv-pvc.yaml
values.yaml
To run plugins in the fiftyone-app
deployment, provide
ReadOnly
access to the fiftyone-app
deploymentReadWrite
access to the teams-api
deploymentTo run plugins in a dedicated teams-plugins
deployment, provide
ReadOnly
access to the teams-plugins
deploymentReadWrite
access to the teams-api
deploymentAdd the appropriate volumes
and volumeMounts
configurations
to the apiSettings
section of your values.yaml
# values.yaml
apiSettings:
[...existing config...]
volumes:
- name: nfs-plugins-vol
persistentVolumeClaim:
claimName: teams-plugins-pvc
volumeMounts:
- name: nfs-plugins-vol
mountPath: /opt/plugins
[...existing config...]
Add the volumes
and volumeMounts
configurations to either
the pluginsSettings
or appSettings
section of your values.yaml
# values.yaml
[plugins|app]Settings:
[...existing config...]
volumes:
- name: nfs-plugins-ro-vol
persistentVolumeClaim:
claimName: teams-plugins-pvc
readOnly: true
volumeMounts:
- name: nfs-plugins-ro-vol
mountPath: /opt/plugins
[...existing config...]
Apply the changes to the existing fiftyone-teams-app deployment using Helm
helm upgrade fiftyone-teams-app voxel51/fiftyone-teams-app \
-f values.yaml