datahaven/deploy/charts/relay/values.yaml
Steve Degosserie 1f0cd6de27
feat: Enhanced Helm deployment with ingress management and solochain support (#115)
This PR enhances the Helm-based deployment system with several key
improvements organized into the following areas:

## New Features

### Ingress Management
- **Ingress per replica**: Added `ingress-per-replica` chart template
that automatically generates an ingress for each node replica, exposing
individual pod instances
- **Traefik integration**: Added chart values to deploy Traefik as the
ingress controller for local K8s clusters, enabling proper ingress
testing (requires adding names to `/etc/hosts`)

### Solochain Support
- **New relay chart**: Added dedicated Helm chart for Solochain relay
deployment
- **CLI integration**: Updated DataHaven CLI to deploy both Execution
and Solochain relayers

## Configuration Improvements

### Environment Structure
- **Modular configs**: Refactored environmental configurations from
single `values.yaml` files into separate component-specific overrides
for better organization

### Node Configuration
- **Base config updates**: Improved base configurations for bootnode and
validator nodes
- **Network protocol**: Reverted from litep2p back to libp2p to resolve
node communication issues on Stagenet
- **Archive node routing**: In Stagenet, relayers now connect to the
bootnode (configured as archive node) instead of validator nodes

## Storage & Deployment

### Persistent Storage
- **Relayer database**: Added support for persistent volumes to store
relayer databases instead of using ephemeral storage

### Deployment Scripts
- **Documentation cleanup**: Removed obsolete test deploy.sh script and
updated the deployment README with clearer instructions

These changes provide a more robust, scalable, and maintainable
deployment system for DataHaven infrastructure.

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added support for deploying new relayer types: Solochain and Execution
relayers, with dedicated configuration and secret management.
* Introduced per-replica ingress configuration for node deployments,
allowing each replica to have its own ingress resource and hostname.
* Added persistent storage options for relay data, configurable via
storage path, class, and size.
* Added new deployment configuration files for local and stagenet
environments, including Traefik ingress controller setup.
* Introduced a new relay category, "Solochain Relayers," for standalone
chain operations and cross-chain communication.

* **Improvements**
* Updated deployment configurations to use container-specific
environment YAML files for more granular control.
* Enhanced relay and node configurations with new flags and backend
options, including dynamic peer ID generation and automatic bootnode
discovery.
* Updated relayer endpoints to consistently use the bootnode for
connections.
* Refined relay configuration files for improved structure, clarity, and
endpoint management.

* **Bug Fixes**
* Corrected deployment logic to reference the correct
environment-specific configuration files during Helm deployments.

* **Documentation**
* Simplified and updated deployment documentation to focus on CLI-based
deployment, removing outdated manual instructions and adding a concise
overview of components and relayer types.

* **Chores**
* Removed deprecated deployment scripts and outdated configuration files
to streamline the deployment process.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-08-11 14:30:01 +03:00

146 lines
3.9 KiB
YAML

# -- Number of replicas for the pod
replicaCount: 1
image:
# -- Image repository
repository: paritytech/substrate-relay
# -- Image pull policy
pullPolicy: Always
# -- Image tag
tag: latest
# -- Reference to one or more secrets to be used when pulling images.
# ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
imagePullSecrets: []
# -- Provide a name in place of node for `app:` labels
nameOverride: ""
# -- Provide a name to substitute for the full names of resources
fullnameOverride: ""
# -- Additional common labels on pods and services
extraLabels: {}
relayData:
# -- (string) Path on the volume to store relay data
storagePath: "/relay-data"
# -- Storage class to use for persistent volume
storageClass: ""
# -- Size of the volume for relay data
volumeSize: 10Gi
# -- Annotations to add to the volumeClaimTemplates
annotations: {}
# -- Service account for the node to use.
# ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
serviceAccount:
# -- Enable creation of a Service Account for the main container
create: true
# -- Annotations to add to the Service Account
annotations: {}
# -- Service Account name
name: ""
params: []
# -- Config file
config:
# -- Config name
name: ""
# -- Secrets will be mounted to pod /secrets/{key}
secrets: {}
# bridge-hub-wococo-signer-file: //Charlie
# -- Override secrets with already existing secret name.
existingSecretName: ""
# -- Set environment variables
env: {}
# RUST_LOG: 'runtime=trace'
# -- Set extra command line arguments
extraArgs: []
# -- Annotations to add to the Pod
podAnnotations: {}
# -- SecurityContext holds pod-level security attributes and common container settings.
# ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
podSecurityContext: {}
# fsGroup: 2000
# -- SecurityContext holds pod-level security attributes and common container settings.
securityContext: {}
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
# -- Service
service:
# -- Service type
type: ClusterIP
# -- Service port
port: 80
# -- Resource limits & requests
resources: {}
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
# -- Define which Nodes the Pods are scheduled on
nodeSelector: {}
# -- Tolerations for use with node taints
tolerations: []
# -- Assign custom affinity rules
affinity: {}
# -- Expose metrics via Prometheus format in /metrics endpoint.
prometheus:
# -- Expose Prometheus metrics
enabled: false
# -- The port for exposed Prometheus metrics
port: 9615
# -- Service Monitor of Prometheus-Operator
# ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/user-guides/getting-started.md#include-servicemonitors
serviceMonitor:
# -- Enables Service Monitor
enabled: false
# -- Namespace to deploy Service Monitor. If not set deploys in the same namespace with the chart
namespace:
# -- Scrape interval
interval: 30s
# -- Scrape timeout
scrapeTimeout: 10s
# -- Labels to scrape
targetLabels:
- node
# -- Relabelings config
relabelings: []
# -- Metric relabelings config
metricRelabelings: []
# -- CronJobs to automatically claim relayer rewards
rewards: {}
# - name: rococoToWestendRelayer
# # -- cron schedule
# schedule: "00 01 * * *"
# # -- Public address of the relayer
# address: "5Fxxx"
# # -- Bridge Hub RPC URL to use
# rpc_url: "wss://example.com"
# # -- Bridge line ID
# lane_id: "0x00000002"
# # -- Bridged Chain ID, for example [rococo](https://github.com/paritytech/polkadot-sdk/blob/7241a8db7b3496816503c6058dae67f66c666b00/bridges/testing/environments/rococo-westend/bridges_rococo_westend.sh#L349).
# bridged_chain_id: "0x62687764"
# # -- Secret name of the seed phrase of the relayer
# seed_phrase_secret_name: "bridge-hub-rococo-signer-file"