Configuring Posit Package Manager with an NFS-backed PersistentVolume
This example deploys Posit Package Manager with a single PersistentVolume backed by an NFS server.
The PersistentVolume allows setting NFS mountOptions and it creates a StorageClass that Posit Package Manager then takes advantage of when it creates its PersistentVolumeClaim.
Both the PVC and PV will be left around after the helm release is removed (for manual cleanup) due to the persistentVolumeReclaimPolicy: Retain setting.
To use this example you will need:
- a license file or key
- a PostgreSQL database
- either
- a
ReadWriteManyPOSIX compliant storage class forsharedStorage - S3
- a
values.yaml
# Using a license file with the helm chart:
# https://github.com/rstudio/helm/tree/main/charts/rstudio-pm#license-file
# If you would like to use a license key see this documentation:
# https://github.com/rstudio/helm/tree/main/charts/rstudio-pm#license-key
license:
file:
secret: posit-licenses # TODO: Change to the secret name in your cluster
secretKey: packagemanager.lic # TODO: Change to the secret key containing your Workbench license
sharedStorage:
create: true
mount: true
storageClassName: nfs-pm-sharedstorage-pv # TODO: Ensure this name matches the name and storageClassName defined in the PV created below in extraObjects.
# volumeName: pm-shared-pv-name # Only needed if PVs have been statically provisioned, in which case this will need to match the PV name.
requests:
storage: 100G
# This is evaluated as a template
# TODO: Change the `mountOptions` and `nfs` settings to suite your NFS setup
extraObjects:
- |
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pm-sharedstorage-pv
annotations:
"helm.sh/resource-policy": keep
spec:
capacity:
storage: {{ .Values.sharedStorage.requests.storage }}
volumeMode: Filesystem
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: nfs-pm-sharedstorage-pv
mountOptions:
- rw
- lookupcache=pos
- vers=4
nfs:
path: /
server: nfs.server.example.com
config:
Database:
Provider: postgres
Postgres:
URL: "postgres://<USERNAME>@<HOST>:<PORT>/<DATABASE>" # TODO: Change this URI to reach your Postgres database.
Password: "<PASSWORD>" # TODO: Remove this line and instead set the password during helm install with --set config.Postgres.Password=<your-postgres-password>
UsageDataURL: "postgres://<USERNAME>@<HOST>:<PORT>/<DATABASE>" # TODO: Change this URI to reach your Postgres database for metrics. This must be either a seperate database or scheam from the main Package Manager database.
UsageDataPassword: "<PASSWORD>" # TODO: Remove this line and instead set the password during helm install with --set config.Postgres.Password=<your-postgres-password>