Helm chart deploys Matrix Synapse, a Matrix homeserver implementation, on a Kubernetes cluster.
Find a file
Tommy Skaug 1f01d04b37
Some checks failed
Validate and Release Chart / Lint (push) Failing after 16s
Validate and Release Chart / Audit (push) Successful in 17s
Validate and Release Chart / Outdated APIs (push) Failing after 16s
Validate and Release Chart / Publish Helm Chart (push) Has been skipped
fix(workflows): use github.workspace for step-level HOME
/workspace is not writable, use checkout directory instead
2025-11-23 21:29:10 +01:00
.forgejo fix(workflows): use github.workspace for step-level HOME 2025-11-23 21:29:10 +01:00
chart chore: IPv6-only compatibility, add linting script, update chart version to 5.7.2, and enhance Redis and PostgreSQL configurations 2025-07-09 20:13:11 +02:00
lint.sh chore: IPv6-only compatibility, add linting script, update chart version to 5.7.2, and enhance Redis and PostgreSQL configurations 2025-07-09 20:13:11 +02:00
README.md Initial implementation of Matrix Synapse Helm Chart 2025-03-01 16:13:06 +01:00
renovate.json Initial implementation of Matrix Synapse Helm Chart 2025-03-01 16:13:06 +01:00

Matrix Synapse Helm Chart

This Helm chart deploys Matrix Synapse, a Matrix homeserver implementation, on a Kubernetes cluster.

Features

  • Scalable worker deployment for high-load installations
  • Configurable database backend (PostgreSQL)
  • Redis support for caching
  • Prometheus metrics
  • Support for media repository
  • Support for signing key management
  • Support for topology spread constraints to ensure even pod distribution

Configuration

Topology Spread Constraints

The chart now supports topology spread constraints for both the main Synapse pod and worker pods. This ensures that pods are evenly distributed across your Kubernetes cluster's nodes, which improves resilience and helps prevent pod evictions from the descheduler.

Main Synapse Pod

synapse:
  topologySpreadConstraints:
    - maxSkew: 1
      topologyKey: kubernetes.io/hostname
      whenUnsatisfiable: DoNotSchedule
      labelSelector:
        matchLabels:
          app.kubernetes.io/component: synapse

Worker Pods

workers:
  default:
    topologySpreadConstraints:
      - maxSkew: 1
        topologyKey: kubernetes.io/hostname
        whenUnsatisfiable: DoNotSchedule
        labelSelector:
          matchLabels:
            app.kubernetes.io/component: worker-name

For specific workers, you can override the default configuration:

workers:
  federation_reader:
    enabled: true
    replicaCount: 3
    topologySpreadConstraints:
      - maxSkew: 1
        topologyKey: kubernetes.io/hostname
        whenUnsatisfiable: DoNotSchedule
        labelSelector:
          matchLabels:
            app.kubernetes.io/component: federation-reader

Example Values

Please see the values.yaml file for a complete list of available configuration options.