PuppyGraph Helm Chart Installation Guide
This guide walks you through installing PuppyGraph using Helm Charts.
Install Helm
Helm is a package manager for Kubernetes that simplifies deployment and management of applications. Install Helm by following the instructions for your operating system:
# macOS (Homebrew)
brew install helm
# Linux (via script)
curl -fsSL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
# Windows (Chocolatey)
choco install kubernetes-helm
For more installation details, refer to the official guide: Installing Helm
Verify Helm installation:
Run:
If the command executes successfully and outputs version information such asversion.BuildInfo, Helm is installed correctly.
Add the PuppyGraph Helm Repository
Add the PuppyGraph Helm repository to access the latest charts:
# Add PuppyGraph Helm repository
helm repo add puppygraph https://puppygraph.github.io/puppygraph-helm-chart/
# Update local Helm chart repository cache
helm repo update
Custom Deployment Guide
Deploy PuppyGraph on any Kubernetes cluster by customizing configuration values.
Deploying a specific version?
If you want to deploy a specific version of PuppyGraph, please refer to the Customize Configuration section.
Generate Default Values
A sample of the key components of the default values file is shown below:
nameOverride: ""
image:
repository: docker.io/puppygraph/puppygraph
pullPolicy: Always
tag: "stable"
imagePullSecret: ""
serviceAccount:
create: false
automount: true
annotations: {}
name: "default"
# additional node selectors
nodeSelectors:
# cloud.google.com/machine-family: "c3d"
# Please refer to "System Requirements" in PuppyGraph docs. https://docs.puppygraph.com/installation/
# resource for leader nodes
leader:
replicas: 3
resources:
requests:
cpu: "16"
memory: "64Gi"
ephemeral-storage: "10Gi"
limits:
# resource for compute nodes
compute:
replicas: 3
resources:
requests:
cpu: "16"
memory: "64Gi"
ephemeral-storage: "10Gi"
limits:
# define data storage
# if provisioner is not provided, will use preset storage class by name
# other key value pairs are parameters compatible with the provisioner
storage:
name: ""
size: "200Gi"
provisioner: ""
type: ""
env:
# applied to both leader and compute pods
common:
PRIORITY_IP_CIDR: ""
# applied to leader pods only
leader:
CLUSTER_ID: "1000"
CLUSTER_STARTUPTIMEOUT: "10m"
# these files will be mounted to /etc/config/puppygraph/
config:
# Built-in schema content. Set via --set-file config.presetSchema=/path/to/puppygraph-schema.json
# This will be mounted as /etc/config/puppygraph/schema.json
presetSchema: ""
# additional files to mount: map of filename -> file content
# can be set via --set-file config.files.key\\.json=/path/to/key.json
files: {}
# if `create` is true, these secretes will be created in k8s, or they are ignored
# `PUPPYGRAPH_USERNAME` and `PUPPYGRAPH_PASSWORD` are for login puppygraph
# more secrets may needed by schema as environment variables and we can set them here
secrets:
create: true
PUPPYGRAPH_USERNAME: "puppygraph"
PUPPYGRAPH_PASSWORD: "puppygraph123"
# SOME_OTHER_KEY:
Customize Configuration
Edit values.yaml to match your environment. Key configurations include:
-
Image Version: To deploy a specific version of PuppyGraph, update the
image.tagfield in your values.yaml.Example for specifying PuppyGraph version
To find out the latest versions, please check released PuppyGraph versions. -
Network CIDR: Set
env.common.PRIORITY_IP_CIDRto match your cluster node IP range. -
Storage Size: Adjust
storage.sizebased on data requirements (default: 50Gi).Storage Auto-Detection
If you don't specify
storage.provisionerandstorage.type, the chart will automatically use the default storage class configured in your Kubernetes cluster. -
Resources: Adjust CPU and memory requests/limits based on cluster capacity.
- Replicas: Set appropriate replica counts for leader and compute pods.
- Environment Variables: Configure PuppyGraph-specific settings under
env.*.
Deploy with Custom Configuration
# Set environment variables
export CLUSTER_NAME=puppygraph-test
export NAMESPACE=default
# Deploy with custom configuration
helm upgrade --install $CLUSTER_NAME puppygraph/puppygraph \
--namespace $NAMESPACE \
--create-namespace \
-f values.yaml
Override Specific Values
You can also override specific values without editing the file using --set flags:
Verify Deployment
# Check pod status
kubectl get pods -n $NAMESPACE
# Check persistent volumes
kubectl get pvc -n $NAMESPACE
# Check services
kubectl get svc -n $NAMESPACE
Access PuppyGraph
After deployment, you can access PuppyGraph by port forwarding:
kubectl -n $NAMESPACE port-forward --address 0.0.0.0 svc/$CLUSTER_NAME-cluster-proxy 8081:8081 8182:8182 7687:7687
Then open the following URL in your browser: http://localhost:8081
Access Method
LoadBalancer services are supported on cloud platforms (AWS EKS, GCP GKE, Azure AKS). For local development with Docker Desktop, use the port-forward method.
Uninstall and Clean Up
Data Loss Warning
These steps will permanently delete all PuppyGraph data.