livepeer-charts

livepeer-gateway

Helm chart for deploying a Livepeer gateway using the go-livepeer image. Supports singleton and distributed deployment modes with optional remote signer integration.

Modes

Singleton

A single StatefulSet where the remote signer (if enabled) runs as a sidecar container in the same pod, bound to 127.0.0.1. Suitable for simple or dev deployments.

Distributed

The gateway StatefulSet runs independently. When remote signing is enabled, a separate stateless Deployment handles Ethereum operations, reachable via a cluster-internal Service. Recommended for production workloads that require independent scaling and isolation.

Remote Signer

The remote signer separates Ethereum key custody from media processing (docs).

When remoteSigner.enabled=true:

The remote signer is stateless and should be kept on a private network. The chart defaults to remoteSigner.service.type: ClusterIP and remoteSigner.ingress.enabled: false.

The gateway fails fast at startup if the signer URL is unreachable.

Per-Replica Ingress

The gateway is a StatefulSet. Each replica can be individually addressed:

Example:

gateway:
  replicaCount: 3
  service:
    perReplica:
      enabled: true
  ingress:
    perReplica:
      enabled: true
      hostTemplate: "gw-${INDEX}.example.com"

This renders 3 Ingress objects (gw-0.example.com, gw-1.example.com, gw-2.example.com), each routing to the corresponding per-replica Service.

Installation

helm dependency build
helm install my-gateway ./charts/livepeer-gateway -f values.yaml

Singleton with remote signer

helm install my-gateway ./charts/livepeer-gateway \
  -f charts/livepeer-gateway/examples/values.singleton.yaml

Distributed with remote signer

helm install my-gateway ./charts/livepeer-gateway \
  -f charts/livepeer-gateway/examples/values.distributed.yaml

Key Values

Key Default Description
gateway.mode singleton Deployment mode: singleton or distributed
gateway.replicaCount 1 Number of gateway replicas
gateway.args ["-gateway"] CLI args for the gateway container
gateway.service.perReplica.enabled false Create per-replica Services
gateway.ingress.perReplica.enabled false Create per-replica Ingress objects
gateway.ingress.perReplica.hostTemplate "" Hostname pattern (${INDEX}, ${FULLNAME})
remoteSigner.enabled false Enable remote signer
remoteSigner.httpPort 7936 Remote signer HTTP port
remoteSigner.args [] CLI args for the remote signer
remoteSigner.service.enabled true Create Service for remote signer (distributed)
remoteSigner.ingress.enabled false Expose remote signer via Ingress

See values.yaml for the full contract.

Chart Design

This chart follows a hybrid Stakater-inspired structure: