# DataHaven Deployment This directory contains Helm charts and configurations for deploying DataHaven nodes and relayers to Kubernetes clusters across various environments (local development, staging, production). ## Directory Structure ``` 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 ``` ## Prerequisites - Kubernetes cluster - kubectl configured - Helm 3.x installed ## Deployment The recommended way to deploy is using the DataHaven CLI with the deploy command: ```bash cd test && bun cli deploy --e ``` Example: ```bash cd test && bun cli deploy --e local ``` Available environments: - `local`: Local development environment (minimal resources) - `stagenet`: Staging environment for pre-release testing ## Environment Details ### Local - **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 ### Stagenet - **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 ## Configuration Structure The configuration is organized in layers, with later layers overriding earlier ones: 1. Base Configurations (`charts/node/datahaven/`): - Base configurations for DataHaven nodes - Default values for bootnode and validator 2. Environment-Specific Configurations (`environments//values.yaml`): - Environment-specific settings - Resource configurations - Image tags - Replica counts - Storage configurations The deployment process: 1. Loads base configurations from the respective chart directories 2. Applies environment-specific overrides from `environments//values.yaml` 3. Deploys the components with the merged configuration ## Components ### Nodes - **Bootnode**: Entry point for the network - **Validator**: Validates transactions and produces blocks ### Relays (Snowbridge) - **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. ## Development Workflow 1. **Local Testing**: ```bash cd test bun cli launch # Starts local network without K8s ``` 2. **K8s Deployment**: ```bash cd test bun cli deploy --e local ``` 3. **Building Local Images**: ```bash cd test bun build:docker:operator # Builds datahavenxyz/datahaven:local ``` 4. **Updating Configurations**: - Modify `environments//values.yaml` for environment-specific changes - Modify chart templates in `charts/` for structural changes - Redeploy with `bun cli deploy --e ` ## Troubleshooting - **Pods not starting**: Check logs with `kubectl logs ` - **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](../test/README.md).