mirror of
https://github.com/datahaven-xyz/datahaven
synced 2026-05-23 17:28:23 +00:00
Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Ahmad Kaouk <56095276+ahmadkaouk@users.noreply.github.com>
134 lines
4.4 KiB
Markdown
134 lines
4.4 KiB
Markdown
# 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 <environment>
|
|
```
|
|
|
|
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/<env>/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/<env>/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/<env>/values.yaml` for environment-specific changes
|
|
- Modify chart templates in `charts/` for structural changes
|
|
- Redeploy with `bun cli deploy --e <env>`
|
|
|
|
## Troubleshooting
|
|
|
|
- **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](../test/README.md).
|