3. Graphistry-helm-chart
Helm Charts to deploy Graphistry to kubernetes for 100x visualizations
3.1. Install Graphistry
git clone https://github.com/graphistry/graphistry-helm && cd graphistry-helm helm upgrade -i g-chart ./charts/graphistry-helm --namespace graphistry --create-namespacehelm repo add graphistry-helm https://graphistry.github.io/graphistry-helm/ helm upgrade -i g-chart graphistry-helm/Graphistry-Helm-Chart --namespace graphistry --create-namespace
NOTE: graphistry resources must be installed first as this contains the storageclasses that the PVCs rely on in the graphistry-helm deployment.
3.2. Create a Secret for Graph App Kit (OPTIONAL)
If you have a Graph App Kit enabled, you can create a secret to use it.
apiVersion: v1
kind: Secret
metadata:
name: gak-secret
namespace: graphistry
type: Opaque
stringData:
username: <username here>
password: <password here>
Create the secret above as gak-secret.yaml and run the following command to create the secret:
kubectl apply -f gak-secret.yaml
Once you have Created the user provided in the secret in Graphistry, Graph App Kit will display dashboards.
3.3. Configuring Graphistry
It is recommended to create a values.yaml override file to configure the chart. The default values.yaml file can be found in the chart directory. Examples can be found in the ./charts/values-overrides directory. There are some Deployment specifc values which will need to be set, such as the global.provisioner, and graphistryResources.storageClassParameters, global.nodeSelector, and the global.Tag depending on your release. An example values.yaml can be seen below. This is an example based on an AWS EKS deployment’s values.yaml
volumeName: dataMount: pvc-91a0b93-f7c9-471c-b00b-ab6dfb59885f localMediaMount: pvc-89ac98bf-2d96-4690-9a24-fb19a93d2c43 gakPublic: pvc-97h36989-9cfa-4058-b420-fbcab0c3dc7f gakPrivate: pvc-9ase0164-e483-4b54-62a5-79a7181071e5 graphistryResources: storageClassParameters: csi.storage.k8s.io/fstype: ext4 type: gp2 global: provisioner: ebs.csi.aws.com tag: v2.39.28-admin nodeSelector: {"kubernetes.io/hostname": "ip-171-00-00-0.us-east-2.compute.internal"} imagePullPolicy: Always imagePullSecrets: - name: docker-secret-prod
Once a values.yaml has been created it can be deployed with the following command:
helm upgrade -i g-chart ./charts/graphistry-helm --namespace graphistry --create-namespace --values ./values.yaml
Once the deployment is complete, the Graphistry UI can be accessed from the caddy ingress endpoint. The ingress endpoint can be found by running the following command:
kubectl get ingress -n graphistry
3.4. Volume Binding
After initial deployment , the PVCs (gak-private,gak-public,data-mount,local-media-mount) for graphistry will have PVs dynamically provisioned for them by the storageclasses that graphistry-resources deploy, and the pods will bind to them automatically. If the cluster is redeployed, the PVs will be released and the pods will not be able to bind to them. To fix this, the PVCs must include the volumename from the PV that was provisioned for it. Find the volume name by running the following command:
kubectl get pv -n graphistry
This will return a list of PVs that were provisioned for the PVCs. The volumename can be found in the output of the command corresponding to the PVC. Add the name to your values.yaml file under the volumeName section. An example values.yaml can be:
volumeName: dataMount: pvc-91a0b93-f7c9-471c-b00b-ab6dfb59885f localMediaMount: pvc-89ac98bf-2d96-4690-9a24-fb19a93d2c43 gakPublic: pvc-97h36989-9cfa-4058-b420-fbcab0c3dc7f gakPrivate: pvc-9ase0164-e483-4b54-62a5-79a7181071e5
Once you have updated your values.yaml file the deployment can be redeployed/upgraded and the Pods will bind to the PVs automatically.
helm upgrade -i g-chart ./charts/graphistry-helm --namespace graphistry --create-namespace --values ./<your-values.yaml>
3.5. Configuration
The following table lists the configurable parameters of the Graphistry-helm-chart chart and their default values.
Parameter |
Description |
Default |
|---|---|---|
|
ingress management - determines if ingress is going to be on internal load balance |
|
|
graphistry tag for the docker image |
|
|
data-mount pvc volume name |
|
|
local-media-mount pvc volume name |
|
|
gak-public pvc volume name |
|
|
data-mount pvc volume name |
|
|
the namespace of the ingress controller |
|
|
Resources for the Caddy pod |
|
|
Resources for the Dask Scheduler pod |
|
|
Resources for the Dask worker pod |
|
|
Resources for the Forge Etl pod |
|
|
Resources for the Forge ETL python pod |
|
|
Resources for the graph app kit pods |
|
|
Resources for the nexus pod |
|
|
Resources for the nginx pod |
|
|
Resources for the notebook pod |
|
|
Resources for the notebook pod |
|
|
Resources for the pivot pod |
|
|
Resources for the redis pod |
|
|
Resources for the streamgl gpu pod |
|
|
Resources for the streamgl sessions pod |
|
|
Resources for the streamgl vgraph etl pod |
|
|
Resources for the streamgl viz pod |
|
|
max surge of pods in rolling updates |
|
|
forwards backend proxy’s headers to ingress controller |
|
|
for testing purposes only - used to do http testing on ingress and nginx/caddy |
|
|
sets the Node environment - set to development in dev mode |
|
|
sets the appEnvironment for nexus - set to development in dev mode |
|
|
Sets the django settings - set to config.settings.dev in dev mode |
|
|
sets graphistry to cpu mode - to be used in dev mode set to 1 |
|
|
sets django in debug mode set to true in dev mode |
|
|
port for nginx service to listen on |
|
|
port for nginx service to listen on |
|
|
enables metrics for prometheus - must have kube-prometheus-stack installed |
|
|
ports for nexus service to listen on |
|
|
ports for nexus service to listen on |
|
|
graph app kit public - determines if public dashboard is going to be deployed |
|
|
graph app kit private - determines if private dashboard is going to be deployed |
|
|
network policy for for deployment, this limits traffic |
|
|
rolling update deployment strategy switch |
|
|
django session cookie timeout (seconds) |
|
|
django drf-jwt, jwt token timeout (seconds) |
|
|
ENABLE django silk - performance analysis library |
|
|
domain - set to a domain of your choosing |
|
|
set tlsStaging to true to enable use of LetsEncrypt staging environment |
|
|
set tls to true to enable use of LetsEncrypt TLS |
|
|
email to send tls notifications to |
|
|
enables longhorn dashboard - needs longhorn installed |
|
|
cuda version |
|
|
caddy repository name |
|
|
graph app kit repository name |
|
|
redis repository name |
|
|
redis repository tag |
|
|
streamgl-viz repository name |
|
|
streamgl-viz-Dev repository name |
|
|
nginx repository name |
|
|
nginx repository name |
|
|
streamgl-vgraph-etl repository name |
|
|
streamgl-gpu repository name |
|
|
elk version |
|
|
|
|
|
streamgl-sessions repository name |
|
|
graphistry pivot repository name |
|
|
graphistry pivot dev repository |
|
|
jupyter notebook repository name |
|
|
graphistry nexus repository name |
|
|
milliseconds to wait for file creation |
|
|
|
|
|
|
|
|
graphistry nexus dev repository name |
|
|
forge-etl-python repository name |
|
|
forge-etl-python dev repository name |
|
|
forge-etl repository name |
|
|
sets the number of dask cuda workers |
|
|
enables dask operator |
|
|
dask-scheduler repository name |
|
|
dask-scheduler location |
|
|
enables vgpu mode for bigger than memory workloads on VGPU |
|
|
dask-cuda-worker repository name |
|
|
sets the number of forge workers recommend 1 per 4 GB GPU memory |
|
|
sets the proxy body size for ingress controller and uploads to 20 GB |
|
|
graphistry key for dev mode in pivot deployment |
|
|
storage class provisioner. |
|
|
multinode selector switch to determine if going multi/single node |
|
|
container registry name |
|
|
dev mode for debugging with nexus, postgres and nginx |
|
|
postgres repository name |
|
|
db name |
|
|
db user |
|
|
port for postgres service to listen on |
|
|
hostname for postgres |
|
|
tag for the docker image |
|
|
image pull policy could also be Always |
|
|
restart policy |
|
|
image pull secrets name |
|
|
node selector to determine which node to deploy cluster to ex: {“accelerator”: “nvidia”} |
|
|
log level for the application |
|
|
log level for graphistry |
|
|
environment variables |
|
|
graph-app-kit (streamlit) environment variables |
|
See Configuring the Override for more details on how to configure the chart.