k8s-and-chill/envs/production/env-data.ytt.yaml
Felix Wolf 137705bfe0 feat(matrix): add Synapse + Element Web deployment
Personal homeserver with bridges deferred. Single host
matrix.{cluster.domain} with path-based routing: /_matrix, /_synapse,
/.well-known/matrix → Synapse; / → Element Web. Both share matrix-tls.

Stack: ananace/matrix-synapse + element-web charts, CNPG postgres
(LC_COLLATE=C), in-cluster alpine redis (no auth, replaces bitnami
subchart), mittwald-generated synapse-secrets for registration_shared/
macaroon/form_secret, custom idempotent signing-key init Job (replaces
chart's bitnami/kubectl publisher).

Sync waves:
  -3 Namespace
  -2 synapse-secrets (mittwald head-start), signing-key RBAC
  -1 signing-key Job, CNPG Cluster, redis
   0 Synapse, Element, Ingress

Synapse pod waits in extraCommands until synapse-secrets is populated,
then writes zz-overrides.yaml to override chart placeholders for the
three secret values without churning the chart-managed Secret on every
render. Resources tightened for 1-2 user scale: Synapse 256Mi/512Mi,
Postgres 64Mi/128Mi.

ArgoCD destination.namespace overridden to matrix via prototype-level
argocd overlay so both apps share the matrix ns instead of creating
unused matrix-synapse and element-web namespaces.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 18:04:29 +02:00

56 lines
1 KiB
YAML

#@ load("@ytt:overlay", "overlay")
#@data/values
---
environment:
id: production
applications:
- proto: argocd
- proto: traefik
- proto: cert-manager
- proto: kubernetes-secret-generator
- proto: forgejo
- proto: victoria-metrics-single
- proto: grafana
- proto: kube-state-metrics
- proto: node-exporter
- proto: hcloud-csi
- proto: cloudnative-pg
- proto: metrics-server
- proto: ocis
- proto: matrix-synapse
- proto: element-web
cluster:
domain: tr1ceracop.de
ingress:
className: traefik
tls:
issuer: letsencrypt
storageClass:
block: hcloud-volumes
local: local-path
backups:
enabled: true
s3:
endpoint: https://fsn1.your-objectstorage.com
region: fsn1
storagebox:
enabled: true
ocis:
s3:
external: true
endpoint: https://nbg1.your-objectstorage.com
region: nbg1
bucket: ocis-tr1ceracop
forgejo:
sshPort: 222
#@overlay/replace
nodeSelector:
kubernetes.io/hostname: ubuntu-4gb-nbg1-3
backup:
s3Bucket: k8s-and-chill-backups