This directory contains Helm charts and configurations for deploying DataHaven nodes and relayers to Kubernetes clusters across various environments (local development, staging, production).
deploy/
├── charts/ # Helm charts
│ ├── node/ # Node chart
│ │ └── datahaven/ # DataHaven-specific node configurations
│ │ ├── dh-bootnode.yaml
│ │ └── dh-validator.yaml
│ └── relay/ # Relay chart
│ └── snowbridge/ # Snowbridge-specific relay configurations
│ ├── dh-beacon-relay.yaml # Beacon chain relay
│ ├── dh-beefy-relay.yaml # BEEFY consensus relay
│ └── dh-execution-relay.yaml # Execution layer relay
├── environments/ # Environment-specific configurations
│ ├── local/ # Local development environment
│ │ └── values.yaml
│ ├── stagenet/ # Staging environment
│ └── values.yaml
└── scripts/ # Deployment scripts
- Kubernetes cluster
- kubectl configured
- Helm 3.x installed
The recommended way to deploy is using the DataHaven CLI with the deploy command:
cd test && bun cli deploy --e <environment>Example:
cd test && bun cli deploy --e localAvailable environments:
local: Local development environment (minimal resources)stagenet: Staging environment for pre-release testing
- Purpose: Local development and testing
- Replicas: 1 (bootnode + validator)
- Resources: Minimal (256Mi memory, 100m CPU)
- Image: Local Docker builds (
datahavenxyz/datahaven:local) - Storage: Small persistence (1-5Gi)
- Network: Single-node network with fast block times
- Purpose: Pre-production testing and staging
- Replicas: 2+ validators
- Resources: Medium (512Mi memory, 200m CPU)
- Image: Stagenet tags from DockerHub
- Storage: 20Gi+ persistent volumes
- Network: Multi-validator network simulating production
The configuration is organized in layers, with later layers overriding earlier ones:
-
Base Configurations (
charts/node/datahaven/):- Base configurations for DataHaven nodes
- Default values for bootnode and validator
-
Environment-Specific Configurations (
environments/<env>/values.yaml):- Environment-specific settings
- Resource configurations
- Image tags
- Replica counts
- Storage configurations
The deployment process:
- Loads base configurations from the respective chart directories
- Applies environment-specific overrides from
environments/<env>/values.yaml - Deploys the components with the merged configuration
- Bootnode: Entry point for the network
- Validator: Validates transactions and produces blocks
- Beacon Relay: Relays Ethereum beacon chain finality to DataHaven
- BEEFY Relay: Relays DataHaven BEEFY finality proofs to Ethereum
- Execution Relay: Relays Ethereum execution layer messages to DataHaven
- Solochain Relayers: Relays DataHaven chain operations to the DataHaven AVS
These relayers enable trustless bidirectional token and message passing between Ethereum and DataHaven.
-
Local Testing:
cd test bun cli launch # Starts local network without K8s
-
K8s Deployment:
cd test bun cli deploy --e local
-
Building Local Images:
cd test bun build:docker:operator # Builds datahavenxyz/datahaven:local
-
Updating Configurations:
- Modify
environments/<env>/values.yamlfor environment-specific changes - Modify chart templates in
charts/for structural changes - Redeploy with
bun cli deploy --e <env>
- Modify
- Pods not starting: Check logs with
kubectl logs <pod-name> - Image pull failures: Verify Docker registry access and image tags
- Persistent volume issues: Ensure storage class is available with
kubectl get sc - Network connectivity: Check service endpoints with
kubectl get svc
For more detailed deployment and testing workflows, see the test directory.