How Starship Uses Helm Charts for Kubernetes Deployment to Orchestrate Multi-Chain Testnets
Starship leverages a single Helm application chart (starship/charts/devnet) to declaratively deploy complete Cosmos-EVM testnet stacks on Kubernetes, abstracting complex multi-chain infrastructure into configurable YAML values.
Starship, developed by Hyperweb (hyperweb-io/starship), is an infrastructure orchestration tool designed to spin up comprehensive blockchain testnets. The project uses Helm charts as the primary mechanism for Kubernetes deployment, allowing developers to define entire multi-validator, multi-relayer environments through version-controlled configuration rather than imperative commands.
Helm Chart Architecture
The Starship Helm chart follows standard Helm conventions while encapsulating the complexity of distributed blockchain networks. Located at starship/charts/devnet/, this application chart (type: application in Chart.yaml) bundles all necessary Kubernetes manifests into a single deployable unit.
Chart Metadata and Versioning
In starship/charts/devnet/Chart.yaml, the chart declares itself as an application type rather than a library, signaling that it creates deployable Kubernetes resources. This metadata file defines the chart version and appVersion used to tag container images and track releases.
Template Organization
The templates/ directory contains pure Helm templates that generate Kubernetes manifests dynamically. Key template groups include:
- Chain validators –
templates/chains/cosmos/validator.yamlrenders StatefulSets for Cosmos SDK-based chains - IBC relayers –
templates/relayers/hermes/statefulset.yamlcreates deployments for Hermes, ts-relayer, and go-relayer instances - Infrastructure services – Dedicated templates for the exposer sidecar, registry, faucet, monitoring (Prometheus/Grafana), and ingress controllers
- Explorer – Optional blockchain explorer deployments
Values-Driven Configuration
Starship's Helm charts rely heavily on values.yaml to drive template rendering, enabling users to define complex topologies without modifying template files.
Hierarchical Values Schema
The default starship/charts/devnet/values.yaml provides a comprehensive configuration schema. Users define chains as arrays, specifying validator counts, container images, and network IDs:
chains:
- id: gaia-1
name: cosmoshub
numValidators: 3
image: ghcr.io/hyperweb-io/starship/gaia:latest
faucet:
enabled: true
Relayers connect these chains through IBC protocols:
relayers:
- name: hermes
type: hermes
replicas: 1
chains:
- gaia-1
- osmosis-1
Additional toggles control ingress rules, monitoring stack deployment, and explorer availability.
Schema Validation
The chart includes starship/charts/devnet/values.schema.json to validate configuration before rendering. This JSON schema prevents misconfiguration by enforcing type constraints and required fields, catching errors during helm install rather than at runtime.
Template Helpers and Reusable Logic
The starship/charts/devnet/templates/_helpers.tpl file defines a helper library that keeps templates DRY (Don't Repeat Yourself). These named templates handle:
- Naming conventions – Consistent resource naming across components
- Label generation – Standardized Kubernetes labels for selectors and monitoring
- Environment variable injection – Common env vars for chain configurations
- Resource defaults – CPU/memory limits and requests
- Init containers – "Wait-for-chains" logic ensuring proper startup order
Deploying Starship with Helm
Installing from the Helm Repository
Deploy a default Starship devnet using the published chart:
helm repo add starship https://hyperweb-io.github.io/starship
helm install my-starship starship/devnet
Customizing with Values Files
For production testnets, create a custom values.yaml and apply it with the -f flag:
# myvalues.yaml
chains:
- id: osmosis-1
name: osmosis
numValidators: 2
image: ghcr.io/hyperweb-io/starship/osmosis:20250205-544757d
faucet:
enabled: true
relayers:
- name: ts-relayer
type: ts-relayer
replicas: 1
chains:
- osmosis-1
monitoring:
enabled: true
ports:
prometheus: 8011
grafana: 9011
Deploy with:
helm install my-starship ./starship/charts/devnet -f myvalues.yaml
Inline Configuration Overrides
For quick iterations, use --set flags to override specific values without creating files:
helm install my-starship ./starship/charts/devnet \
--set chains[0].id=gaia-1 \
--set chains[0].numValidators=3 \
--set chains[0].image=ghcr.io/hyperweb-io/starship/gaia:20250205-544757d \
--set relayers[0].name=hermes \
--set explorer.enabled=true \
--set ingress.enabled=true \
--set ingress.host="mytestnet.thestarship.io"
Upgrading Existing Releases
Update chain versions or scale relayers using Helm upgrades:
helm upgrade my-starship ./starship/charts/devnet \
--set chains[0].image=ghcr.io/hyperweb-io/starship/gaia:20250310-abcdef0
Summary
- Starship's Helm chart (
starship/charts/devnet) is an application chart that packages all Kubernetes resources needed for multi-chain testnets into a single release. - Template helpers in
_helpers.tplcentralize naming, labeling, and initialization logic to ensure consistent deployments. - Values-driven configuration through
values.yamlallows declarative definition of chains, relayers, monitoring, and ingress without template modification. - Schema validation via
values.schema.jsonprevents configuration errors before deployment. - Standard Helm commands (
install,upgrade,rollback) manage the entire infrastructure lifecycle.
Frequently Asked Questions
What Kubernetes resources does Starship's Helm chart create?
The chart generates StatefulSets for chain validators (ensuring persistent storage for blockchain data), Deployments for relayers like Hermes and ts-relayer, Services for internal communication, Ingress resources for external access, and optional Prometheus/Grafana monitoring stacks. Specific templates include templates/chains/cosmos/validator.yaml for Cosmos validators and templates/relayers/hermes/statefulset.yaml for IBC relayers.
How do I add custom chains to my Starship deployment?
Define custom chains in your values.yaml under the chains: array, specifying the id, name, numValidators, and image fields. For example, to add Osmosis, include an entry with id: osmosis-1 and the appropriate container image from the Starship registry. The chart will render separate StatefulSets for each configured chain.
Where does Starship validate Helm configuration values?
Starship validates configuration through starship/charts/devnet/values.schema.json, which defines the expected structure and types for all values. This JSON schema is automatically checked by Helm during install or upgrade operations, catching type mismatches or missing required fields before any Kubernetes resources are created.
Can I upgrade running Starship testnets without downtime?
Yes, use helm upgrade to modify running releases. You can update container images (for example, changing chains[0].image to a new tag), scale relayer replicas, or toggle features like the explorer. Kubernetes performs rolling updates for Deployments and StatefulSets where applicable, though validator StatefulSets may require careful coordination during consensus-critical updates.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →