59 lines
3.0 KiB
Markdown
59 lines
3.0 KiB
Markdown
# Mumble
|
|
|
|
Argo CD deploys Mumble and its CloudNativePG cluster in the `mumble` namespace.
|
|
The published `brunner.ninja/mumble` chart owns the workload, TCP/UDP Services,
|
|
probes, configuration rendering, and optional PostgreSQL modes. GitOps selects
|
|
the chart version and supplies this cluster's addresses, registration details,
|
|
Secret names, and PostgreSQL endpoint.
|
|
|
|
## PostgreSQL and credentials
|
|
|
|
`mumble-postgresql` is a one-instance CloudNativePG cluster using PostgreSQL
|
|
18.6 and an 8 GiB Ceph RBD claim. Mumble connects to
|
|
`mumble-postgresql-rw.mumble.svc.cluster.local`. The `mumble-secrets` Secret in
|
|
this namespace supplies both Mumble's application credentials and the
|
|
CloudNativePG bootstrap username/password. It was copied from the prior
|
|
`default/mumble-secrets` by the guarded source-repository helper; neither
|
|
Secret's values are stored in this public repository. The TLS Secret
|
|
`brunner-ninja-tls` is produced by the namespace-local Certificate and
|
|
`letsencrypt-dns` ClusterIssuer.
|
|
|
|
The new PVC `mumble-postgresql-1` is UID
|
|
`c979de80-a2bf-41ae-91a6-96034ee9277d`, bound to PV
|
|
`pvc-c979de80-a2bf-41ae-91a6-96034ee9277d`. The old default-namespace claim
|
|
remains separately bound and untouched for rollback.
|
|
|
|
## Networking
|
|
|
|
The LoadBalancer Service exposes TCP/UDP 64738 and retains the MikroTik
|
|
operator annotations; Kubernetes dynamically allocated `192.168.0.14` after
|
|
the move. Do not pin that address. The chart's `mumble-funkfeuer` Service keeps
|
|
the direct addresses `10.12.4.170` and `192.168.0.2`. Both Services select the
|
|
Mumble Pod in this namespace.
|
|
|
|
## Migration and recovery
|
|
|
|
On 2026-10-25, the old Mumble Deployment was stopped before the final database
|
|
dump. The final custom-format dump is at
|
|
`/mnt/backup/mumble-migration-20261025T065619Z/final-cutover.dump` on
|
|
`arschrock` (mode 0600), and its archive was validated with `pg_restore --list`.
|
|
All 14 application table counts matched after restore, including 34 users,
|
|
18 channels, and 6,536 log rows. The server was then started against the new
|
|
database. The pre-cutover snapshot is in the same directory.
|
|
|
|
The first complete scheduled-format backup was also verified on 2026-10-25:
|
|
`/mnt/backup/kubernetes/postgresql/mumble/2026-10-25T06-59-24Z/`. The Job ran
|
|
on `arschrock`, wrote a `complete` marker, and its database archive passed
|
|
`pg_restore --list`. The daily backup CronJob refuses to write unless the
|
|
`/mnt/backup` host mount is bcachefs.
|
|
|
|
The old `default/data-mumble-postgresql-0` PVC is retained for rollback (UID
|
|
`6d0c591f-9aae-4932-8f94-ebf5ec1032a8`, PV
|
|
`pvc-6d0c591f-9aae-4932-8f94-ebf5ec1032a8`). Its StatefulSet is retired after
|
|
the new cluster and backup were verified; do not delete this PVC or its PV
|
|
without an explicit recovery decision. The old `default/mumble-secrets` and
|
|
`default/mumble-postgres` Secrets are likewise retained as cold rollback
|
|
material. To roll back, quiesce the new Mumble writer, preserve a fresh dump of
|
|
new writes, then restore/reconnect the old database before starting the old
|
|
server. Never run both Mumble servers as writers at once.
|