feat(matrix-synapse): init
This commit is contained in:
parent
b41a2a9f45
commit
465d04e3a8
26 changed files with 3698 additions and 0 deletions
|
@ -10,6 +10,7 @@
|
||||||
** xref:headscale-ui.adoc[headscale-ui]
|
** xref:headscale-ui.adoc[headscale-ui]
|
||||||
** xref:hydrogen-web.adoc[hydrogen-web]
|
** xref:hydrogen-web.adoc[hydrogen-web]
|
||||||
** xref:jellyfin.adoc[jellyfin]
|
** xref:jellyfin.adoc[jellyfin]
|
||||||
|
** xref:matrix-synapse.adoc[matrix-synapse]
|
||||||
** xref:miniserve.adoc[miniserve]
|
** xref:miniserve.adoc[miniserve]
|
||||||
** xref:monitoring.adoc[monitoring]
|
** xref:monitoring.adoc[monitoring]
|
||||||
** xref:ntfy.adoc[ntfy]
|
** xref:ntfy.adoc[ntfy]
|
||||||
|
|
1
docs/modules/charts/pages/matrix-synapse.adoc
Symbolic link
1
docs/modules/charts/pages/matrix-synapse.adoc
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
../../../../matrix-synapse/README.adoc
|
2
matrix-synapse/.gitignore
vendored
Normal file
2
matrix-synapse/.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
charts/*.tgz
|
||||||
|
values_test.yaml
|
22
matrix-synapse/.helmignore
Normal file
22
matrix-synapse/.helmignore
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
# Patterns to ignore when building packages.
|
||||||
|
# This supports shell glob matching, relative path matching, and
|
||||||
|
# negation (prefixed with !). Only one pattern per line.
|
||||||
|
.DS_Store
|
||||||
|
# Common VCS dirs
|
||||||
|
.git/
|
||||||
|
.gitignore
|
||||||
|
.bzr/
|
||||||
|
.bzrignore
|
||||||
|
.hg/
|
||||||
|
.hgignore
|
||||||
|
.svn/
|
||||||
|
# Common backup files
|
||||||
|
*.swp
|
||||||
|
*.bak
|
||||||
|
*.tmp
|
||||||
|
*~
|
||||||
|
# Various IDEs
|
||||||
|
.project
|
||||||
|
.idea/
|
||||||
|
*.tmproj
|
||||||
|
.vscode/
|
9
matrix-synapse/Chart.lock
Normal file
9
matrix-synapse/Chart.lock
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
dependencies:
|
||||||
|
- name: postgresql
|
||||||
|
repository: https://charts.bitnami.com/bitnami
|
||||||
|
version: 12.12.10
|
||||||
|
- name: redis
|
||||||
|
repository: https://charts.bitnami.com/bitnami
|
||||||
|
version: 17.17.1
|
||||||
|
digest: sha256:dcac7ce7b24d359b39fbfe093b8be525d995d3799fbb0a9752858980a51f8600
|
||||||
|
generated: "2024-02-11T23:16:42.94262676+01:00"
|
22
matrix-synapse/Chart.yaml
Normal file
22
matrix-synapse/Chart.yaml
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
---
|
||||||
|
apiVersion: v2
|
||||||
|
name: matrix-synapse
|
||||||
|
description: Matrix reference homeserver
|
||||||
|
icon: https://matrix.org/images/matrix-logo.svg
|
||||||
|
type: application
|
||||||
|
version: 0.0.1
|
||||||
|
# renovate: image=ghcr.io/element-hq/synapse
|
||||||
|
appVersion: 1.100.0
|
||||||
|
maintainers:
|
||||||
|
- name: WrenIX
|
||||||
|
url: https://wrenix.eu
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
- name: postgresql
|
||||||
|
version: ^12.1.4
|
||||||
|
repository: https://charts.bitnami.com/bitnami
|
||||||
|
condition: postgresql.enabled
|
||||||
|
- name: redis
|
||||||
|
version: ^17.3.17
|
||||||
|
repository: https://charts.bitnami.com/bitnami
|
||||||
|
condition: redis.enabled
|
1106
matrix-synapse/README.adoc
Normal file
1106
matrix-synapse/README.adoc
Normal file
File diff suppressed because it is too large
Load diff
0
matrix-synapse/_docs.gotmpl
Normal file
0
matrix-synapse/_docs.gotmpl
Normal file
1
matrix-synapse/ci/ct-values.yaml
Normal file
1
matrix-synapse/ci/ct-values.yaml
Normal file
|
@ -0,0 +1 @@
|
||||||
|
serverName: "example.org"
|
41
matrix-synapse/templates/NOTES.txt
Normal file
41
matrix-synapse/templates/NOTES.txt
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
** Note, this chart may take a while to finish setup, please be patient **
|
||||||
|
{{- if .Values.signingkey.job.enabled }}
|
||||||
|
** Also, remember to disable the signingkey job (signingkey.job.enabled=false) **
|
||||||
|
{{- end }}
|
||||||
|
{{- if not .Values.ingress.enabled }}
|
||||||
|
|
||||||
|
Synapse has been installed without an ingress, you will need to manage
|
||||||
|
accesses to the services yourself.
|
||||||
|
{{- else }}
|
||||||
|
|
||||||
|
Your Synapse install is now starting, you should soon be able to access it on
|
||||||
|
the following URL(s);
|
||||||
|
{{- range (concat .Values.ingress.csHosts (list (.Values.publicServerName | default .Values.serverName))) }}
|
||||||
|
{{- if $.Values.ingress.tls }}
|
||||||
|
https://{{ . }}
|
||||||
|
{{- else }}
|
||||||
|
http://{{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{ if not .Values.wellknown.enabled }}
|
||||||
|
Note that for federation to work you will need to either add an SRV record or
|
||||||
|
set up a /.well-known/matrix/server response.
|
||||||
|
Refer to https://github.com/matrix-org/synapse/blob/master/docs/federate.md
|
||||||
|
for more information.
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if .Values.config.enableRegistration }}
|
||||||
|
You should be able to connect to your Synapse install with any compatible
|
||||||
|
Matrix client - and register an account - as soon as final setup is done.
|
||||||
|
|
||||||
|
You can also create an admin user with the following command;
|
||||||
|
{{- else }}
|
||||||
|
You can create a user in your new Synapse install by running the following
|
||||||
|
command; (replacing USERNAME and PASSWORD)
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }},app.kubernetes.io/instance={{ .Release.Name }},app.kubernetes.io/component=synapse" -o jsonpath="{.items[0].metadata.name}")
|
||||||
|
kubectl exec --namespace {{ .Release.Namespace }} $POD_NAME -- register_new_matrix_user -c /synapse/config/homeserver.yaml -c /synapse/config/conf.d/secrets.yaml -u USERNAME -p PASSWORD --admin http://localhost:8008
|
||||||
|
|
||||||
|
You can also specify --no-admin to create a non-admin user.
|
258
matrix-synapse/templates/_helpers.tpl
Normal file
258
matrix-synapse/templates/_helpers.tpl
Normal file
|
@ -0,0 +1,258 @@
|
||||||
|
{{/* vim: set filetype=mustache: */}}
|
||||||
|
{{/*
|
||||||
|
Expand the name of the chart.
|
||||||
|
*/}}
|
||||||
|
{{- define "matrix-synapse.name" -}}
|
||||||
|
{{- .Values.nameOverride | default .Chart.Name | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create a default fully qualified app name.
|
||||||
|
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||||
|
If release name contains chart name it will be used as a full name.
|
||||||
|
*/}}
|
||||||
|
{{- define "matrix-synapse.fullname" -}}
|
||||||
|
{{- if .Values.fullnameOverride -}}
|
||||||
|
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- $name := .Values.nameOverride | default .Chart.Name -}}
|
||||||
|
{{- if contains $name .Release.Name -}}
|
||||||
|
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create a default replication name.
|
||||||
|
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||||
|
*/}}
|
||||||
|
{{- define "matrix-synapse.replicationname" -}}
|
||||||
|
{{- printf "%s-%s" .Release.Name "replication" | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create a default worker name.
|
||||||
|
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||||
|
*/}}
|
||||||
|
{{- define "matrix-synapse.workername" -}}
|
||||||
|
{{- with get . "root" }}
|
||||||
|
{{- $ = . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- printf "%s-%s" $.Release.Name .worker | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create a default external component name.
|
||||||
|
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||||
|
*/}}
|
||||||
|
{{- define "matrix-synapse.externalname" -}}
|
||||||
|
{{- with get . "root" }}
|
||||||
|
{{- $ = . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- printf "%s-%s" $.Release.Name .external | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create chart name and version as used by the chart label.
|
||||||
|
*/}}
|
||||||
|
{{- define "matrix-synapse.chart" -}}
|
||||||
|
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Common labels
|
||||||
|
*/}}
|
||||||
|
{{- define "matrix-synapse.labels" -}}
|
||||||
|
helm.sh/chart: {{ include "matrix-synapse.chart" . }}
|
||||||
|
{{ include "matrix-synapse.selectorLabels" . }}
|
||||||
|
{{- if .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||||
|
{{- end }}
|
||||||
|
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Selector labels
|
||||||
|
*/}}
|
||||||
|
{{- define "matrix-synapse.selectorLabels" -}}
|
||||||
|
app.kubernetes.io/name: {{ include "matrix-synapse.name" . }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Pull secrets
|
||||||
|
*/}}
|
||||||
|
{{- define "matrix-synapse.imagePullSecrets" -}}
|
||||||
|
{{- if or .Values.image.pullSecrets .Values.wellknown.image.pullSecrets .Values.volumePermissions.pullSecrets }}
|
||||||
|
imagePullSecrets:
|
||||||
|
{{- with .Values.image.pullSecrets }}
|
||||||
|
{{- . | toYaml | nindent 2 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.wellknown.image.pullSecrets }}
|
||||||
|
{{- . | toYaml | nindent 2 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.volumePermissions.image.pullSecrets }}
|
||||||
|
{{- . | toYaml | nindent 2 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create a default fully qualified app name.
|
||||||
|
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||||
|
*/}}
|
||||||
|
{{- define "matrix-synapse.postgresql.fullname" -}}
|
||||||
|
{{- printf "%s-%s" .Release.Name "postgresql" | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Set postgres host
|
||||||
|
*/}}
|
||||||
|
{{- define "matrix-synapse.postgresql.host" -}}
|
||||||
|
{{- if .Values.postgresql.enabled -}}
|
||||||
|
{{- template "matrix-synapse.postgresql.fullname" . -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{ required "A valid externalPostgresql.host is required" .Values.externalPostgresql.host }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Set postgres secret
|
||||||
|
*/}}
|
||||||
|
{{- define "matrix-synapse.postgresql.secret" -}}
|
||||||
|
{{- if .Values.postgresql.enabled -}}
|
||||||
|
{{- template "matrix-synapse.postgresql.fullname" . -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- template "matrix-synapse.fullname" . -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Set postgres port
|
||||||
|
*/}}
|
||||||
|
{{- define "matrix-synapse.postgresql.port" -}}
|
||||||
|
{{- if .Values.postgresql.enabled -}}
|
||||||
|
{{- if .Values.postgresql.service -}}
|
||||||
|
{{- .Values.postgresql.service.port | default 5432 }}
|
||||||
|
{{- else -}}
|
||||||
|
5432
|
||||||
|
{{- end -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- required "A valid externalPostgresql.port is required" .Values.externalPostgresql.port -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Set postgresql username
|
||||||
|
*/}}
|
||||||
|
{{- define "matrix-synapse.postgresql.username" -}}
|
||||||
|
{{- if .Values.postgresql.enabled -}}
|
||||||
|
{{ required "A valid postgresql.auth.username is required" .Values.postgresql.auth.username }}
|
||||||
|
{{- else -}}
|
||||||
|
{{ required "A valid externalPostgresql.username is required" .Values.externalPostgresql.username }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Set postgresql password
|
||||||
|
*/}}
|
||||||
|
{{- define "matrix-synapse.postgresql.password" -}}
|
||||||
|
{{- if .Values.postgresql.enabled -}}
|
||||||
|
{{ required "A valid postgresql.auth.password is required" .Values.postgresql.auth.password }}
|
||||||
|
{{- else if not (and .Values.externalPostgresql.existingSecret .Values.externalPostgresql.existingSecretPasswordKey) -}}
|
||||||
|
{{ required "A valid externalPostgresql.password is required" .Values.externalPostgresql.password }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Set postgresql database
|
||||||
|
*/}}
|
||||||
|
{{- define "matrix-synapse.postgresql.database" -}}
|
||||||
|
{{- if .Values.postgresql.enabled -}}
|
||||||
|
{{- if .Values.postgresql.postgresqlDatabase -}}
|
||||||
|
{{- fail "You need to switch to the new postgresql.auth values." -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- .Values.postgresql.auth.database | default "synapse" }}
|
||||||
|
{{- else -}}
|
||||||
|
{{ required "A valid externalPostgresql.database is required" .Values.externalPostgresql.database }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create a default fully qualified app name.
|
||||||
|
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||||
|
*/}}
|
||||||
|
{{- define "matrix-synapse.redis.fullname" -}}
|
||||||
|
{{- printf "%s-%s" .Release.Name "redis" | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Set redis host
|
||||||
|
*/}}
|
||||||
|
{{- define "matrix-synapse.redis.host" -}}
|
||||||
|
{{- if .Values.redis.enabled -}}
|
||||||
|
{{- printf "%s-%s" (include "matrix-synapse.redis.fullname" .) "master" | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{ required "A valid externalRedis.host is required" .Values.externalRedis.host }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Set redis secret
|
||||||
|
*/}}
|
||||||
|
{{- define "matrix-synapse.redis.secret" -}}
|
||||||
|
{{- if .Values.redis.enabled -}}
|
||||||
|
{{- template "matrix-synapse.redis.fullname" . -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- template "matrix-synapse.fullname" . -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Set redis port
|
||||||
|
*/}}
|
||||||
|
{{- define "matrix-synapse.redis.port" -}}
|
||||||
|
{{- if .Values.redis.enabled -}}
|
||||||
|
{{- .Values.redis.master.service.port | default 6379 }}
|
||||||
|
{{- else -}}
|
||||||
|
{{ required "A valid externalRedis.port is required" .Values.externalRedis.port }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Set redis password
|
||||||
|
*/}}
|
||||||
|
{{- define "matrix-synapse.redis.password" -}}
|
||||||
|
{{- if (and .Values.redis.enabled .Values.redis.password) -}}
|
||||||
|
{{ .Values.redis.password }}
|
||||||
|
{{- else if (and .Values.redis.enabled .Values.redis.auth.password) -}}
|
||||||
|
{{ .Values.redis.auth.password }}
|
||||||
|
{{- else if .Values.externalRedis.password -}}
|
||||||
|
{{ .Values.externalRedis.password }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Set redis database id
|
||||||
|
*/}}
|
||||||
|
{{- define "matrix-synapse.redis.dbid" -}}
|
||||||
|
{{- if .Values.redis.dbid -}}
|
||||||
|
{{ .Values.redis.dbid }}
|
||||||
|
{{- else if .Values.externalRedis.dbid -}}
|
||||||
|
{{ .Values.externalRedis.dbid }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create the name of the service account to use
|
||||||
|
*/}}
|
||||||
|
{{- define "matrix-synapse.serviceAccountName" -}}
|
||||||
|
{{- if .Values.serviceAccount.create -}}
|
||||||
|
{{ default (include "matrix-synapse.fullname" .) .Values.serviceAccount.name }}
|
||||||
|
{{- else -}}
|
||||||
|
{{ default "default" .Values.serviceAccount.name }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
169
matrix-synapse/templates/configmap.yaml
Normal file
169
matrix-synapse/templates/configmap.yaml
Normal file
|
@ -0,0 +1,169 @@
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: {{ include "matrix-synapse.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "matrix-synapse.labels" . | nindent 4 }}
|
||||||
|
data:
|
||||||
|
log.yaml: |
|
||||||
|
version: 1
|
||||||
|
formatters:
|
||||||
|
{{- if .Values.config.useStructuredLogging }}
|
||||||
|
structured:
|
||||||
|
class: synapse.logging.TerseJsonFormatter
|
||||||
|
{{- else }}
|
||||||
|
precise:
|
||||||
|
format: '%(asctime)s - %(name)s - %(lineno)d - %(levelname)s - %(request)s- %(message)s'
|
||||||
|
{{- end }}
|
||||||
|
filters:
|
||||||
|
context:
|
||||||
|
(): synapse.util.logcontext.LoggingContextFilter
|
||||||
|
request: ""
|
||||||
|
handlers:
|
||||||
|
console:
|
||||||
|
class: logging.StreamHandler
|
||||||
|
formatter: {{ if .Values.config.useStructuredLogging }}structured{{ else }}precise{{ end }}
|
||||||
|
filters: [context]
|
||||||
|
level: {{ .Values.config.logLevel | default "INFO" }}
|
||||||
|
loggers:
|
||||||
|
synapse:
|
||||||
|
level: {{ .Values.config.logLevel | default "INFO" }}
|
||||||
|
{{- with .Values.extraLoggers -}}
|
||||||
|
{{ . | toYaml | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
root:
|
||||||
|
level: {{ .Values.config.logLevel | default "INFO" }}
|
||||||
|
handlers: [console]
|
||||||
|
homeserver.yaml: |
|
||||||
|
# NOTE:
|
||||||
|
# Secrets are stored in separate configs to better fit K8s concepts
|
||||||
|
|
||||||
|
## Server ##
|
||||||
|
|
||||||
|
server_name: {{ required "You need to specify a serverName" .Values.serverName | quote }}
|
||||||
|
public_baseurl: {{ .Values.config.publicBaseurl | default (printf "https://%s" (.Values.publicServerName | default .Values.serverName)) | quote }}
|
||||||
|
pid_file: /homeserver.pid
|
||||||
|
web_client: False
|
||||||
|
soft_file_limit: 0
|
||||||
|
log_config: "/synapse/config/log.yaml"
|
||||||
|
report_stats: {{ required "You need to specify config.reportStats" .Values.config.reportStats }}
|
||||||
|
|
||||||
|
instance_map:
|
||||||
|
main:
|
||||||
|
host: {{ include "matrix-synapse.replicationname" . }}
|
||||||
|
port: 9093
|
||||||
|
{{- range $worker, $config := .Values.workers }}
|
||||||
|
{{- if and $config.enabled $config.name $config.listeners (has "replication" $config.listeners) }}
|
||||||
|
{{- $name := $worker | replace "_" "-" }}
|
||||||
|
{{ $config.name | quote }}:
|
||||||
|
host: {{ include "matrix-synapse.workername" (dict "root" $ "worker" $name) | quote }}
|
||||||
|
port: 9093
|
||||||
|
{{- end }}{{/* end-if .enabled ... */}}
|
||||||
|
{{- end }}{{/* end-range .workers */}}
|
||||||
|
|
||||||
|
## Ports ##
|
||||||
|
{{- $bindAddresses := .Values.config.bindAddresses }}
|
||||||
|
|
||||||
|
listeners:
|
||||||
|
- port: 8008
|
||||||
|
tls: false
|
||||||
|
bind_addresses: {{ toJson $bindAddresses }}
|
||||||
|
type: http
|
||||||
|
x_forwarded: true
|
||||||
|
|
||||||
|
resources:
|
||||||
|
- names:
|
||||||
|
- client
|
||||||
|
- federation
|
||||||
|
{{- with .Values.config.extraMainListenerTypes }}
|
||||||
|
{{- . | toYaml | nindent 14 }}
|
||||||
|
{{- end }}
|
||||||
|
compress: false
|
||||||
|
|
||||||
|
- port: 9090
|
||||||
|
tls: false
|
||||||
|
bind_addresses: {{ toJson $bindAddresses }}
|
||||||
|
type: http
|
||||||
|
|
||||||
|
resources:
|
||||||
|
- names: [metrics]
|
||||||
|
compress: false
|
||||||
|
|
||||||
|
- port: 9093
|
||||||
|
tls: false
|
||||||
|
bind_addresses: {{ toJson $bindAddresses }}
|
||||||
|
type: http
|
||||||
|
|
||||||
|
resources:
|
||||||
|
- names: [replication]
|
||||||
|
compress: false
|
||||||
|
{{- if .Values.config.extraListeners }}
|
||||||
|
{{ .Values.config.extraListeners | toYaml | nindent 6 }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
## Files ##
|
||||||
|
|
||||||
|
media_store_path: "/synapse/data/media"
|
||||||
|
uploads_path: "/synapse/data/uploads"
|
||||||
|
{{- if .Values.config.recaptcha }}
|
||||||
|
|
||||||
|
## Captcha ##
|
||||||
|
|
||||||
|
recaptcha_public_key: {{ .Values.config.recaptcha.publicKey | quote }}
|
||||||
|
enable_registration_captcha: true
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.config.turnUris }}
|
||||||
|
|
||||||
|
## Turn ##
|
||||||
|
|
||||||
|
turn_uris:
|
||||||
|
{{ toYaml .Values.config.turnUris | nindent 6 }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
## Registration ##
|
||||||
|
|
||||||
|
enable_registration: {{ .Values.config.enableRegistration | default false }}
|
||||||
|
|
||||||
|
## Metrics ###
|
||||||
|
|
||||||
|
enable_metrics: true
|
||||||
|
|
||||||
|
## Signing Keys ##
|
||||||
|
|
||||||
|
signing_key_path: "/synapse/keys/signing.key"
|
||||||
|
|
||||||
|
# The trusted servers to download signing keys from.
|
||||||
|
trusted_key_servers: {{- .Values.config.trustedKeyServers | toYaml | nindent 6 }}
|
||||||
|
|
||||||
|
## Workers ##
|
||||||
|
{{- range $worker, $config := .Values.workers }}
|
||||||
|
{{- if $config.enabled }}
|
||||||
|
{{- if or (eq $worker "pusher") (eq ($config.app | default "") "pusher") }}
|
||||||
|
|
||||||
|
# For pusher worker
|
||||||
|
start_pushers: false
|
||||||
|
{{- else if or (eq $worker "appservice") (eq ($config.app | default "") "appservice") }}
|
||||||
|
|
||||||
|
# For appservice worker
|
||||||
|
notify_appservices_from_worker: {{ $config.name | quote }}
|
||||||
|
{{- else if or (eq $worker "federation_sender") (eq ($config.app | default "") "federation_sender") }}
|
||||||
|
|
||||||
|
# For federation_sender worker
|
||||||
|
send_federation: false
|
||||||
|
{{- else if or (eq $worker "media_repository") (eq ($config.app | default "") "media_repository") }}
|
||||||
|
|
||||||
|
# For media_repository worker
|
||||||
|
enable_media_repo: false
|
||||||
|
{{- else if or (eq $worker "user_dir") (eq ($config.app | default "") "user_dir") }}
|
||||||
|
|
||||||
|
# For user_dir worker
|
||||||
|
update_user_directory_from_worker: {{ $config.name | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.extraConfig }}
|
||||||
|
|
||||||
|
## Extra config ##
|
||||||
|
{{ . | toYaml | nindent 4 }}
|
||||||
|
{{- end }}
|
204
matrix-synapse/templates/deployment.yaml
Normal file
204
matrix-synapse/templates/deployment.yaml
Normal file
|
@ -0,0 +1,204 @@
|
||||||
|
{{- $needsVolumePermissions := and .Values.volumePermissions.enabled (or .Values.persistence.enabled .Values.persistence.existingClaim) }}
|
||||||
|
{{- if (and .Values.postgresql.enabled (and (not .Values.postgresql.auth.password) (not .Values.postgresql.existingSecret))) -}}
|
||||||
|
{{- fail "You must specify a static postgres password or existing secret if using the included postgres chart" -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- if (and .Values.redis.enabled (and .Values.redis.usePassword (and (not .Values.redis.auth.password) (not .Values.redis.auth.existingSecret)))) -}}
|
||||||
|
{{- fail "You must specify a static redis password or existing secret if using the included redis chart" -}}
|
||||||
|
{{- end -}}
|
||||||
|
---
|
||||||
|
# Server: {{ required "A valid serverName is required" .Values.serverName }}
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: {{ include "matrix-synapse.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "matrix-synapse.labels" . | nindent 4 }}
|
||||||
|
app.kubernetes.io/component: synapse
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
strategy:
|
||||||
|
{{- toYaml .Values.synapse.strategy | nindent 4 }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "matrix-synapse.selectorLabels" . | nindent 6 }}
|
||||||
|
app.kubernetes.io/component: synapse
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
|
||||||
|
checksum/secrets: {{ include (print $.Template.BasePath "/secrets.yaml") . | sha256sum }}
|
||||||
|
{{- with .Values.synapse.annotations }}
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "matrix-synapse.selectorLabels" . | nindent 8 }}
|
||||||
|
app.kubernetes.io/component: synapse
|
||||||
|
{{- with .Values.synapse.labels }}
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
serviceAccountName: {{ include "matrix-synapse.serviceAccountName" . }}
|
||||||
|
{{- include "matrix-synapse.imagePullSecrets" . | nindent 6 }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.synapse.podSecurityContext | nindent 8 }}
|
||||||
|
{{- if $needsVolumePermissions }}
|
||||||
|
initContainers:
|
||||||
|
- name: volume-permissions
|
||||||
|
command:
|
||||||
|
- sh
|
||||||
|
- -c
|
||||||
|
- |
|
||||||
|
chown {{ .Values.volumePermissions.uid }}:{{ .Values.volumePermissions.gid }} -R /synapse/data
|
||||||
|
{{- with .Values.volumePermissions.image }}
|
||||||
|
image: "{{ coalesce $.Values.global.image.registry .registry }}/{{ .repository }}:{{ .tag }}"
|
||||||
|
imagePullPolicy: {{ coalesce $.Values.global.image.pullPolicy .pullPolicy }}
|
||||||
|
{{- end }}
|
||||||
|
resources:
|
||||||
|
{{- toYaml .Values.volumePermissions.resources | nindent 12 }}
|
||||||
|
securityContext:
|
||||||
|
runAsNonRoot: false
|
||||||
|
runAsUser: 0
|
||||||
|
volumeMounts:
|
||||||
|
- name: media
|
||||||
|
mountPath: /synapse/data
|
||||||
|
{{- end }}
|
||||||
|
containers:
|
||||||
|
- name: synapse
|
||||||
|
{{- with .Values.image }}
|
||||||
|
image: "{{ coalesce $.Values.global.image.registry .registry }}/{{ .repository }}:{{ .tag | default (printf "v%s" $.Chart.AppVersion) }}"
|
||||||
|
imagePullPolicy: {{ coalesce $.Values.global.image.pullPolicy .pullPolicy }}
|
||||||
|
{{- end }}
|
||||||
|
env:
|
||||||
|
{{- if or .Values.postgresql.enabled .Values.externalPostgresql.existingSecret }}
|
||||||
|
- name: POSTGRES_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
{{- if .Values.postgresql.enabled }}
|
||||||
|
name: {{ .Values.postgresql.existingSecret | default (include "matrix-synapse.postgresql.fullname" .) }}
|
||||||
|
key: password
|
||||||
|
{{- else }}
|
||||||
|
name: {{ .Values.externalPostgresql.existingSecret }}
|
||||||
|
key: {{ .Values.externalPostgresql.existingSecretPasswordKey }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if or (and .Values.redis.enabled (default .Values.redis.usePassword true)) .Values.externalRedis.existingSecret }}
|
||||||
|
- name: REDIS_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
{{- if .Values.redis.enabled }}
|
||||||
|
name: {{ .Values.redis.auth.existingSecret | default (include "matrix-synapse.redis.fullname" .) }}
|
||||||
|
key: redis-password
|
||||||
|
{{- else }}
|
||||||
|
name: {{ .Values.externalRedis.existingSecret }}
|
||||||
|
key: {{ .Values.externalRedis.existingSecretPasswordKey }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.synapse.extraEnv }}
|
||||||
|
{{- . | toYaml | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
command:
|
||||||
|
- sh
|
||||||
|
- -c
|
||||||
|
- |
|
||||||
|
cat /synapse/secrets/*.yaml | \
|
||||||
|
sed -e "s/@@POSTGRES_PASSWORD@@/${POSTGRES_PASSWORD:-}/" \
|
||||||
|
-e "s/@@REDIS_PASSWORD@@/${REDIS_PASSWORD:-}/" \
|
||||||
|
> /synapse/config/conf.d/secrets.yaml
|
||||||
|
|
||||||
|
{{- if .Values.synapse.extraCommands }}
|
||||||
|
|
||||||
|
{{ range .Values.synapse.extraCommands }}
|
||||||
|
{{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
exec python -B -m synapse.app.homeserver \
|
||||||
|
-c /synapse/config/homeserver.yaml \
|
||||||
|
-c /synapse/config/conf.d/
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.synapse.securityContext | nindent 12 }}
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 8008
|
||||||
|
protocol: TCP
|
||||||
|
- name: replication
|
||||||
|
containerPort: 9093
|
||||||
|
protocol: TCP
|
||||||
|
- name: metrics
|
||||||
|
containerPort: 9090
|
||||||
|
protocol: TCP
|
||||||
|
{{- with .Values.synapse.livenessProbe }}
|
||||||
|
livenessProbe:
|
||||||
|
{{- . | toYaml | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.synapse.readinessProbe }}
|
||||||
|
readinessProbe:
|
||||||
|
{{- . | toYaml | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.synapse.startupProbe }}
|
||||||
|
startupProbe:
|
||||||
|
{{- . | toYaml | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
volumeMounts:
|
||||||
|
- name: config
|
||||||
|
mountPath: /synapse/config
|
||||||
|
- name: tmpconf
|
||||||
|
mountPath: /synapse/config/conf.d
|
||||||
|
- name: secrets
|
||||||
|
mountPath: /synapse/secrets
|
||||||
|
- name: signingkey
|
||||||
|
mountPath: /synapse/keys
|
||||||
|
- name: media
|
||||||
|
mountPath: /synapse/data
|
||||||
|
- name: tmpdir
|
||||||
|
mountPath: /tmp
|
||||||
|
{{- with .Values.synapse.extraVolumeMounts }}
|
||||||
|
{{- . | toYaml | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
resources:
|
||||||
|
{{- toYaml .Values.synapse.resources | nindent 12 }}
|
||||||
|
volumes:
|
||||||
|
- name: config
|
||||||
|
configMap:
|
||||||
|
name: {{ include "matrix-synapse.fullname" . }}
|
||||||
|
- name: secrets
|
||||||
|
secret:
|
||||||
|
secretName: {{ include "matrix-synapse.fullname" . }}
|
||||||
|
- name: signingkey
|
||||||
|
secret:
|
||||||
|
secretName: {{ .Values.signingkey.existingSecret | default (include "matrix-synapse.workername" (dict "root" . "worker" "signingkey")) | quote }}
|
||||||
|
items:
|
||||||
|
- key: {{ .Values.signingkey.existingSecretKey | default "signing.key" | quote }}
|
||||||
|
path: signing.key
|
||||||
|
- name: tmpconf
|
||||||
|
emptyDir: {}
|
||||||
|
- name: tmpdir
|
||||||
|
emptyDir: {}
|
||||||
|
- name: media
|
||||||
|
{{- $mediaworker := false }}
|
||||||
|
{{- range $worker, $config := .Values.workers }}
|
||||||
|
{{- if eq $worker "media_repository" }}
|
||||||
|
{{- $mediaworker = ($config.enabled | default false) }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if and .Values.persistence.enabled (not $mediaworker) }}
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: {{ .Values.persistence.existingClaim | default (include "matrix-synapse.fullname" .) }}
|
||||||
|
{{- else }}
|
||||||
|
emptyDir: {}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.synapse.extraVolumes }}
|
||||||
|
{{- . | toYaml | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.synapse.nodeSelector }}
|
||||||
|
nodeSelector:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.synapse.affinity }}
|
||||||
|
affinity:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.synapse.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
195
matrix-synapse/templates/ingress.yaml
Normal file
195
matrix-synapse/templates/ingress.yaml
Normal file
|
@ -0,0 +1,195 @@
|
||||||
|
{{- if .Values.ingress.enabled -}}
|
||||||
|
{{- $fullName := include "matrix-synapse.fullname" . -}}
|
||||||
|
{{- $wkName := include "matrix-synapse.externalname" (dict "root" . "external" "wellknown") -}}
|
||||||
|
{{- $v1Ingress := .Capabilities.APIVersions.Has "networking.k8s.io/v1" -}}
|
||||||
|
{{- if $v1Ingress -}}
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
{{- else -}}
|
||||||
|
apiVersion: networking.k8s.io/v1beta1
|
||||||
|
{{- end }}
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: {{ $fullName }}
|
||||||
|
labels:
|
||||||
|
{{- include "matrix-synapse.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.ingress.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
{{- if .Values.ingress.className }}
|
||||||
|
ingressClassName: {{ .Values.ingress.className }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.ingress.tls }}
|
||||||
|
tls:
|
||||||
|
{{- range .Values.ingress.tls }}
|
||||||
|
- hosts:
|
||||||
|
{{- range .hosts }}
|
||||||
|
- {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .secretName }}
|
||||||
|
secretName: {{ .secretName }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
rules:
|
||||||
|
{{- $csHosts := .Values.ingress.csHosts }}
|
||||||
|
{{- if .Values.ingress.includeServerName }}
|
||||||
|
{{- $csHosts = concat (list (.Values.publicServerName | default .Values.serverName)) $csHosts }}
|
||||||
|
{{- end }}
|
||||||
|
{{- $s2sHosts := .Values.ingress.hosts }}
|
||||||
|
{{- if .Values.ingress.includeServerName }}
|
||||||
|
{{- $s2sHosts = concat (list .Values.serverName) $s2sHosts }}
|
||||||
|
{{- end }}
|
||||||
|
{{- $wkHosts := .Values.ingress.wkHosts }}
|
||||||
|
{{- if .Values.ingress.includeServerName }}
|
||||||
|
{{- $wkHosts = concat (list .Values.serverName) $wkHosts }}
|
||||||
|
{{- end }}
|
||||||
|
{{- $hosts := uniq (concat $s2sHosts $csHosts $wkHosts) }}
|
||||||
|
{{- range $hosts }}
|
||||||
|
{{- $host := . }}
|
||||||
|
- host: {{ . | quote }}
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
{{- $default := $.Values.workers.default }}
|
||||||
|
{{- range $worker, $config := $.Values.workers }}
|
||||||
|
{{- $name := $worker | replace "_" "-" }}
|
||||||
|
{{- if and $config.enabled $config.listeners (or $config.paths $config.csPaths) }}
|
||||||
|
{{- $service := include "matrix-synapse.workername" (dict "root" $ "worker" $name) }}
|
||||||
|
{{- if has $host $csHosts }}
|
||||||
|
{{- range $config.csPaths }}
|
||||||
|
{{- if $.Values.ingress.traefikPaths }}
|
||||||
|
- path: {{ printf "/{path:%s}" (trimPrefix "/" .) | quote }}
|
||||||
|
backend:
|
||||||
|
{{- if $v1Ingress }}
|
||||||
|
service:
|
||||||
|
name: {{ $service }}
|
||||||
|
port:
|
||||||
|
number: 8083
|
||||||
|
pathType: ImplementationSpecific
|
||||||
|
{{- else }}
|
||||||
|
serviceName: {{ $service }}
|
||||||
|
servicePort: 8083
|
||||||
|
{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
- path: {{ . | quote }}
|
||||||
|
backend:
|
||||||
|
{{- if $v1Ingress }}
|
||||||
|
service:
|
||||||
|
name: {{ $service }}
|
||||||
|
port:
|
||||||
|
number: 8083
|
||||||
|
pathType: ImplementationSpecific
|
||||||
|
{{- else }}
|
||||||
|
serviceName: {{ $service }}
|
||||||
|
servicePort: 8083
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if has $host $s2sHosts }}
|
||||||
|
{{- range $config.paths }}
|
||||||
|
{{- if $.Values.ingress.traefikPaths }}
|
||||||
|
- path: {{ printf "/{path:%s}" (trimPrefix "/" .) | quote }}
|
||||||
|
backend:
|
||||||
|
{{- if $v1Ingress }}
|
||||||
|
service:
|
||||||
|
name: {{ $service }}
|
||||||
|
port:
|
||||||
|
number: 8083
|
||||||
|
pathType: ImplementationSpecific
|
||||||
|
{{- else }}
|
||||||
|
serviceName: {{ $service }}
|
||||||
|
servicePort: 8083
|
||||||
|
{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
- path: {{ . | quote }}
|
||||||
|
backend:
|
||||||
|
{{- if $v1Ingress }}
|
||||||
|
service:
|
||||||
|
name: {{ $service }}
|
||||||
|
port:
|
||||||
|
number: 8083
|
||||||
|
pathType: ImplementationSpecific
|
||||||
|
{{- else }}
|
||||||
|
serviceName: {{ $service }}
|
||||||
|
servicePort: 8083
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if has . $csHosts }}
|
||||||
|
{{- with $.Values.ingress.csPaths }}
|
||||||
|
{{ . | toYaml | nindent 10 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if has . $s2sHosts }}
|
||||||
|
{{- with $.Values.ingress.paths }}
|
||||||
|
{{ . | toYaml | nindent 10 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if or (has . $csHosts) (has . $s2sHosts) }}
|
||||||
|
- path: /_matrix
|
||||||
|
backend:
|
||||||
|
{{- if $v1Ingress }}
|
||||||
|
service:
|
||||||
|
name: {{ $fullName }}
|
||||||
|
port:
|
||||||
|
number: {{ $.Values.service.port }}
|
||||||
|
pathType: Prefix
|
||||||
|
{{- else }}
|
||||||
|
serviceName: {{ $fullName }}
|
||||||
|
servicePort: {{ $.Values.service.port }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if and (has . $csHosts) $.Values.ingress.includeUnderscoreSynapse }}
|
||||||
|
- path: /_synapse
|
||||||
|
backend:
|
||||||
|
{{- if $v1Ingress }}
|
||||||
|
service:
|
||||||
|
name: {{ $fullName }}
|
||||||
|
port:
|
||||||
|
number: {{ $.Values.service.port }}
|
||||||
|
pathType: Prefix
|
||||||
|
{{- else }}
|
||||||
|
serviceName: {{ $fullName }}
|
||||||
|
servicePort: {{ $.Values.service.port }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if has . $wkHosts }}
|
||||||
|
{{- if $.Values.wellknown.enabled }}
|
||||||
|
- path: /.well-known/matrix
|
||||||
|
backend:
|
||||||
|
{{- if $v1Ingress }}
|
||||||
|
service:
|
||||||
|
name: {{ $wkName }}
|
||||||
|
port:
|
||||||
|
number: {{ $.Values.wellknown.service.port | default 80 }}
|
||||||
|
pathType: Prefix
|
||||||
|
{{- else }}
|
||||||
|
serviceName: {{ $wkName }}
|
||||||
|
servicePort: {{ $.Values.wellknown.service.port | default 80 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
- path: /.well-known/matrix
|
||||||
|
backend:
|
||||||
|
{{- if $v1Ingress }}
|
||||||
|
service:
|
||||||
|
name: {{ $fullName }}
|
||||||
|
port:
|
||||||
|
number: {{ $.Values.service.port }}
|
||||||
|
pathType: Prefix
|
||||||
|
{{- else }}
|
||||||
|
serviceName: {{ $fullName }}
|
||||||
|
servicePort: {{ $.Values.service.port }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
22
matrix-synapse/templates/pvc.yaml
Normal file
22
matrix-synapse/templates/pvc.yaml
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}}
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: {{ template "matrix-synapse.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "matrix-synapse.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
- {{ .Values.persistence.accessMode | quote }}
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: {{ .Values.persistence.size | quote }}
|
||||||
|
{{- if .Values.persistence.storageClass }}
|
||||||
|
{{- if (eq "-" .Values.persistence.storageClass) }}
|
||||||
|
storageClassName: ""
|
||||||
|
{{- else }}
|
||||||
|
storageClassName: "{{ .Values.persistence.storageClass }}"
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end -}}
|
||||||
|
|
86
matrix-synapse/templates/secrets.yaml
Normal file
86
matrix-synapse/templates/secrets.yaml
Normal file
|
@ -0,0 +1,86 @@
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: {{ include "matrix-synapse.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "matrix-synapse.labels" . | nindent 4 }}
|
||||||
|
stringData:
|
||||||
|
config.yaml: |
|
||||||
|
{{- if .Values.config.recaptcha }}
|
||||||
|
## Captcha ##
|
||||||
|
|
||||||
|
recaptcha_private_key: {{ .Values.config.recaptcha.privateKey | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.config.turnSecret }}
|
||||||
|
|
||||||
|
## Turn ##
|
||||||
|
|
||||||
|
turn_shared_secret: {{ .Values.config.turnSecret | quote }}
|
||||||
|
|
||||||
|
{{- end }}
|
||||||
|
## Registration ##
|
||||||
|
|
||||||
|
registration_shared_secret: {{ .Values.config.registrationSharedSecret | default (randAlphaNum 24) | quote }}
|
||||||
|
|
||||||
|
## API Configuration ##
|
||||||
|
|
||||||
|
{{- if .Values.config.macaroonSecretKey }}
|
||||||
|
|
||||||
|
macaroon_secret_key: {{ .Values.config.macaroonSecretKey | quote }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
## Database configuration ##
|
||||||
|
|
||||||
|
database:
|
||||||
|
name: "psycopg2"
|
||||||
|
{{- $postgresConfig := .Values.externalPostgresql }}
|
||||||
|
{{- if .Values.postgresql.enabled }}
|
||||||
|
{{- $postgresConfig = .Values.postgresql }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with $postgresConfig.options }}
|
||||||
|
{{- toYaml . | nindent 6 }}
|
||||||
|
{{- end }}
|
||||||
|
args:
|
||||||
|
host: {{ include "matrix-synapse.postgresql.host" . | quote }}
|
||||||
|
port: {{ include "matrix-synapse.postgresql.port" . }}
|
||||||
|
sslmode: {{ $postgresConfig.sslmode | default "prefer" | quote }}
|
||||||
|
user: {{ include "matrix-synapse.postgresql.username" . | quote }}
|
||||||
|
{{- $postgresPass := include "matrix-synapse.postgresql.password" . }}
|
||||||
|
{{- if and $postgresPass (not .Values.postgresql.existingSecret) }}
|
||||||
|
password: {{ $postgresPass | quote }}
|
||||||
|
{{- else }}
|
||||||
|
password: "@@POSTGRES_PASSWORD@@"
|
||||||
|
{{- end }}
|
||||||
|
database: {{ include "matrix-synapse.postgresql.database" . | quote }}
|
||||||
|
cp_min: 5
|
||||||
|
cp_max: 10
|
||||||
|
{{- with $postgresConfig.extraArgs }}
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
## Redis configuration ##
|
||||||
|
|
||||||
|
redis:
|
||||||
|
enabled: true
|
||||||
|
host: {{ include "matrix-synapse.redis.host" . | quote }}
|
||||||
|
{{- with (include "matrix-synapse.redis.port" .) }}
|
||||||
|
port: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- $redisPass := include "matrix-synapse.redis.password" . }}
|
||||||
|
{{- if or .Values.redis.auth.enabled .Values.redis.usePassword .Values.redis.password .Values.redis.auth.password .Values.externalRedis.password }}
|
||||||
|
{{- if and $redisPass (not .Values.redis.auth.existingSecret) }}
|
||||||
|
password: {{ $redisPass | quote }}
|
||||||
|
{{- else }}
|
||||||
|
password: "@@REDIS_PASSWORD@@"
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with (include "matrix-synapse.redis.dbid" .) }}
|
||||||
|
dbid: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- with .Values.extraSecrets }}
|
||||||
|
|
||||||
|
## Extra secrets ##
|
||||||
|
{{ . | toYaml | nindent 4 }}
|
||||||
|
{{- end }}
|
64
matrix-synapse/templates/service.yaml
Normal file
64
matrix-synapse/templates/service.yaml
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: {{ include "matrix-synapse.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "matrix-synapse.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
type: {{ .Values.service.type | default "ClusterIP" }}
|
||||||
|
ports:
|
||||||
|
- port: {{ .Values.service.port }}
|
||||||
|
targetPort: {{ .Values.service.targetPort | default "http" }}
|
||||||
|
protocol: TCP
|
||||||
|
name: http
|
||||||
|
selector:
|
||||||
|
app.kubernetes.io/component: synapse
|
||||||
|
{{- include "matrix-synapse.selectorLabels" . | nindent 4 }}
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: {{ include "matrix-synapse.replicationname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "matrix-synapse.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
ports:
|
||||||
|
- port: 9093
|
||||||
|
targetPort: replication
|
||||||
|
protocol: TCP
|
||||||
|
name: replication
|
||||||
|
selector:
|
||||||
|
{{- include "matrix-synapse.selectorLabels" . | nindent 4 }}
|
||||||
|
app.kubernetes.io/component: synapse
|
||||||
|
{{- $default := .Values.workers.default }}
|
||||||
|
{{- range $worker, $config := .Values.workers }}
|
||||||
|
{{- if and $config.enabled $config.listeners }}
|
||||||
|
{{- $name := $worker | replace "_" "-" }}
|
||||||
|
{{- $release := $.Release.Name }}
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: {{ include "matrix-synapse.workername" (dict "root" $ "worker" $name) }}
|
||||||
|
labels:
|
||||||
|
{{- include "matrix-synapse.labels" $ | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
ports:
|
||||||
|
- port: 8083
|
||||||
|
targetPort: listener
|
||||||
|
protocol: TCP
|
||||||
|
name: listener
|
||||||
|
{{- if has "replication" $config.listeners }}
|
||||||
|
- port: 9093
|
||||||
|
targetPort: replication
|
||||||
|
protocol: TCP
|
||||||
|
name: replication
|
||||||
|
{{- end }}
|
||||||
|
selector:
|
||||||
|
{{- include "matrix-synapse.selectorLabels" $ | nindent 4 }}
|
||||||
|
app.kubernetes.io/component: {{ $name }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
12
matrix-synapse/templates/serviceaccount.yaml
Normal file
12
matrix-synapse/templates/serviceaccount.yaml
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{{- if .Values.serviceAccount.create -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: {{ .Values.serviceAccount.name | default (include "matrix-synapse.fullname" .) }}
|
||||||
|
labels:
|
||||||
|
{{- include "matrix-synapse.labels" . | nindent 4 }}
|
||||||
|
annotations:
|
||||||
|
{{- with .Values.serviceAccount.annotations }}
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
139
matrix-synapse/templates/signing-key/job.yaml
Normal file
139
matrix-synapse/templates/signing-key/job.yaml
Normal file
|
@ -0,0 +1,139 @@
|
||||||
|
{{- $secretName := include "matrix-synapse.workername" (dict "root" . "worker" "signingkey") }}
|
||||||
|
|
||||||
|
{{- if .Values.signingkey.job.enabled }}
|
||||||
|
{{- if .Values.signingkey.existingSecret }}
|
||||||
|
{{- fail "Can't specify both signingkey.job.enabled and signingkey.existingSecret" }}
|
||||||
|
{{- end }}
|
||||||
|
{{- $name := include "matrix-synapse.workername" (dict "root" . "worker" "signingkey-job") }}
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: {{ $secretName }}
|
||||||
|
labels:
|
||||||
|
{{- include "matrix-synapse.labels" . | nindent 4 }}
|
||||||
|
app.kubernetes.io/component: signingkey-job
|
||||||
|
annotations:
|
||||||
|
helm.sh/resource-policy: keep
|
||||||
|
type: Opaque
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: {{ $name }}
|
||||||
|
labels:
|
||||||
|
{{- include "matrix-synapse.labels" . | nindent 4 }}
|
||||||
|
app.kubernetes.io/component: signingkey-job
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: Role
|
||||||
|
metadata:
|
||||||
|
name: {{ $name }}
|
||||||
|
labels:
|
||||||
|
{{- include "matrix-synapse.labels" . | nindent 4 }}
|
||||||
|
app.kubernetes.io/component: signingkey-job
|
||||||
|
rules:
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- secrets
|
||||||
|
resourceNames:
|
||||||
|
- {{ $secretName }}
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- update
|
||||||
|
- patch
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: RoleBinding
|
||||||
|
metadata:
|
||||||
|
name: {{ $name }}
|
||||||
|
labels:
|
||||||
|
{{- include "matrix-synapse.labels" . | nindent 4 }}
|
||||||
|
app.kubernetes.io/component: signingkey-job
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: Role
|
||||||
|
name: {{ $name }}
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: {{ $name }}
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
---
|
||||||
|
apiVersion: batch/v1
|
||||||
|
kind: Job
|
||||||
|
metadata:
|
||||||
|
name: {{ $name }}
|
||||||
|
labels:
|
||||||
|
{{- include "matrix-synapse.labels" . | nindent 4 }}
|
||||||
|
app.kubernetes.io/component: signingkey-job
|
||||||
|
annotations:
|
||||||
|
{{- with .Values.signingkey.job.annotations }}
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
ttlSecondsAfterFinished: 0
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "matrix-synapse.labels" . | nindent 8 }}
|
||||||
|
app.kubernetes.io/component: signingkey-job
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: signing-key-generate
|
||||||
|
{{- with .Values.image }}
|
||||||
|
image: "{{ coalesce $.Values.global.image.registry .registry }}/{{ .repository }}:{{ .tag | default (printf "v%s" $.Chart.AppVersion) }}"
|
||||||
|
imagePullPolicy: {{ coalesce $.Values.global.image.pullPolicy .pullPolicy }}
|
||||||
|
{{- end }}
|
||||||
|
command:
|
||||||
|
- sh
|
||||||
|
- -c
|
||||||
|
- |
|
||||||
|
echo "Generating signing key..."
|
||||||
|
if which generate_signing_key.py >/dev/null; then
|
||||||
|
generate_signing_key.py -o /synapse/keys/signing.key
|
||||||
|
else
|
||||||
|
generate_signing_key -o /synapse/keys/signing.key
|
||||||
|
fi
|
||||||
|
resources:
|
||||||
|
{{- toYaml .Values.signingkey.resources | nindent 12 }}
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /synapse/keys
|
||||||
|
name: matrix-synapse-keys
|
||||||
|
- name: signing-key-upload
|
||||||
|
{{- with .Values.signingkey.job.publishImage }}
|
||||||
|
image: "{{ coalesce $.Values.global.image.registry .registry }}/{{ .repository }}:{{ .tag }}"
|
||||||
|
imagePullPolicy: {{ coalesce $.Values.global.image.pullPolicy .pullPolicy }}
|
||||||
|
{{- end }}
|
||||||
|
command:
|
||||||
|
- sh
|
||||||
|
- -c
|
||||||
|
- |
|
||||||
|
# check if key already exists
|
||||||
|
key=$(kubectl get secret {{ $secretName }} -o jsonpath="{.data['signing.key']}" 2> /dev/null)
|
||||||
|
[ $? -ne 0 ] && echo "Failed to get existing secret" && exit 1
|
||||||
|
[ -n "$key" ] && echo "Key already created, exiting." && exit 0
|
||||||
|
# wait for config
|
||||||
|
while [ ! -f /synapse/keys/signing.key ]; do
|
||||||
|
echo "Waiting for key.."
|
||||||
|
sleep 5;
|
||||||
|
done
|
||||||
|
# update secret
|
||||||
|
kubectl patch secret {{ $secretName }} -p "{\"data\":{\"signing.key\":\"$(base64 /synapse/keys/signing.key | tr -d '\n')\"}}"
|
||||||
|
[ $? -ne 0 ] && echo "Failed to update secret." && exit 1
|
||||||
|
echo "Key successfully created."
|
||||||
|
resources:
|
||||||
|
{{- toYaml .Values.signingkey.resources | nindent 12 }}
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /synapse/keys
|
||||||
|
name: matrix-synapse-keys
|
||||||
|
readOnly: true
|
||||||
|
restartPolicy: Never
|
||||||
|
serviceAccount: {{ $name }}
|
||||||
|
volumes:
|
||||||
|
- name: matrix-synapse-keys
|
||||||
|
emptyDir: {}
|
||||||
|
parallelism: 1
|
||||||
|
completions: 1
|
||||||
|
backoffLimit: 1
|
||||||
|
{{- end }}
|
16
matrix-synapse/templates/tests/test-connection.yaml
Normal file
16
matrix-synapse/templates/tests/test-connection.yaml
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Pod
|
||||||
|
metadata:
|
||||||
|
name: "{{ include "matrix-synapse.fullname" . }}-test-connection"
|
||||||
|
labels:
|
||||||
|
{{- include "matrix-synapse.labels" . | nindent 4 }}
|
||||||
|
annotations:
|
||||||
|
"helm.sh/hook": test-success
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: wget
|
||||||
|
image: busybox
|
||||||
|
command: ['wget']
|
||||||
|
args: ['{{ include "matrix-synapse.fullname" . }}:{{ $.Values.service.port }}/_matrix/client/versions']
|
||||||
|
restartPolicy: Never
|
23
matrix-synapse/templates/wellknown/configmap.yaml
Normal file
23
matrix-synapse/templates/wellknown/configmap.yaml
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
{{- if .Values.wellknown.enabled }}
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: {{ include "matrix-synapse.externalname" (dict "root" . "external" "wellknown") }}
|
||||||
|
labels:
|
||||||
|
{{- include "matrix-synapse.labels" . | nindent 4 }}
|
||||||
|
app.kubernetes.io/component: wellknown
|
||||||
|
data:
|
||||||
|
server: |-
|
||||||
|
{{- with .Values.wellknown.server }}
|
||||||
|
{{- toJson . | nindent 4 }}
|
||||||
|
{{- else }}
|
||||||
|
{{- dict "m.server" (printf "%s:%d" (.Values.publicServerName | default .Values.serverName) 443) | toJson | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
client: |-
|
||||||
|
{{- with .Values.wellknown.client }}
|
||||||
|
{{- toJson . | nindent 4 }}
|
||||||
|
{{- else }}
|
||||||
|
{{- dict "m.homeserver" (dict "base_url" (printf "https://%s/" (.Values.publicServerName | default .Values.serverName))) | toJson | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end -}}{{/* end-if .wellknown.enabled */}}
|
75
matrix-synapse/templates/wellknown/deployment.yaml
Normal file
75
matrix-synapse/templates/wellknown/deployment.yaml
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
{{- if .Values.wellknown.enabled }}
|
||||||
|
{{- $wkName := include "matrix-synapse.externalname" (dict "root" . "external" "wellknown") -}}
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: {{ $wkName }}
|
||||||
|
labels:
|
||||||
|
{{- include "matrix-synapse.labels" . | nindent 4 }}
|
||||||
|
app.kubernetes.io/component: wellknown
|
||||||
|
spec:
|
||||||
|
replicas: {{ .Values.wellknown.replicaCount }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "matrix-synapse.selectorLabels" . | nindent 6 }}
|
||||||
|
app.kubernetes.io/component: wellknown
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
checksum/config: {{ include (print .Template.BasePath "/wellknown/configmap.yaml") . | sha256sum }}
|
||||||
|
{{- with .Values.wellknown.podAnnotations }}
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "matrix-synapse.selectorLabels" . | nindent 8 }}
|
||||||
|
{{- with .Values.wellknown.podLabels }}
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
app.kubernetes.io/component: wellknown
|
||||||
|
spec:
|
||||||
|
{{- include "matrix-synapse.imagePullSecrets" . | nindent 6 }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.wellknown.podSecurityContext | nindent 8 }}
|
||||||
|
containers:
|
||||||
|
- name: wellknown
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.wellknown.securityContext | nindent 12 }}
|
||||||
|
{{- with .Values.wellknown.image }}
|
||||||
|
image: "{{ coalesce $.Values.global.image.registry .registry }}/{{ .repository }}:{{ .tag }}"
|
||||||
|
imagePullPolicy: {{ coalesce $.Values.global.image.pullPolicy .pullPolicy }}
|
||||||
|
{{- end }}
|
||||||
|
ports:
|
||||||
|
- containerPort: {{ .Values.wellknown.containerPort }}
|
||||||
|
name: http
|
||||||
|
protocol: TCP
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: http
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: http
|
||||||
|
resources:
|
||||||
|
{{- toYaml .Values.wellknown.resources | nindent 12 }}
|
||||||
|
volumeMounts:
|
||||||
|
- name: "data"
|
||||||
|
mountPath: "/usr/share/nginx/html/.well-known/matrix/"
|
||||||
|
{{- with .Values.wellknown.nodeSelector }}
|
||||||
|
nodeSelector:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.wellknown.affinity }}
|
||||||
|
affinity:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.wellknown.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
volumes:
|
||||||
|
- name: "data"
|
||||||
|
configMap:
|
||||||
|
name: {{ $wkName }}
|
||||||
|
{{- end }}
|
20
matrix-synapse/templates/wellknown/service.yaml
Normal file
20
matrix-synapse/templates/wellknown/service.yaml
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
{{- if .Values.wellknown.enabled }}
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: {{ include "matrix-synapse.externalname" (dict "root" . "external" "wellknown") }}
|
||||||
|
labels:
|
||||||
|
{{- include "matrix-synapse.labels" . | nindent 4 }}
|
||||||
|
app.kubernetes.io/component: wellknown
|
||||||
|
spec:
|
||||||
|
type: {{ .Values.wellknown.service.type | default "ClusterIP" }}
|
||||||
|
ports:
|
||||||
|
- port: {{ .Values.wellknown.service.port | default 80 }}
|
||||||
|
targetPort: http
|
||||||
|
protocol: TCP
|
||||||
|
name: http
|
||||||
|
selector:
|
||||||
|
{{- include "matrix-synapse.selectorLabels" . | nindent 4 }}
|
||||||
|
app.kubernetes.io/component: wellknown
|
||||||
|
{{- end }}
|
80
matrix-synapse/templates/worker/configmap.yaml
Normal file
80
matrix-synapse/templates/worker/configmap.yaml
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
{{- $any := false }}
|
||||||
|
{{- range $worker, $config := .Values.workers }}
|
||||||
|
{{- if $config.enabled }}
|
||||||
|
{{- $any = true }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if $any }}
|
||||||
|
{{- $wkName := include "matrix-synapse.workername" (dict "root" . "worker" "workers") -}}
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: {{ $wkName }}
|
||||||
|
labels:
|
||||||
|
{{- include "matrix-synapse.labels" . | nindent 4 }}
|
||||||
|
data:
|
||||||
|
{{- $default := .Values.workers.default -}}
|
||||||
|
{{- range $worker, $config := .Values.workers -}}
|
||||||
|
{{- if $config.enabled -}}
|
||||||
|
{{- $name := $worker | replace "_" "-" }}
|
||||||
|
{{- $app := $config.app | default $worker }}
|
||||||
|
|
||||||
|
{{ $name }}.worker: |
|
||||||
|
worker_app: "synapse.app.{{ (not (not $config.generic)) | ternary "generic_worker" $app }}"
|
||||||
|
{{- if $config.name -}}
|
||||||
|
{{- if (gt ($config.replicaCount | int) 1) -}}
|
||||||
|
{{- fail "Replica count must be 1 if a worker has a unique name." -}}
|
||||||
|
{{- end }}
|
||||||
|
worker_name: {{ $config.name }}
|
||||||
|
{{- end }}
|
||||||
|
{{- $bindAddresses := $config.bindAddresses | default $.Values.config.bindAddresses | default (list "::") }}
|
||||||
|
|
||||||
|
worker_listeners:
|
||||||
|
- port: 9090
|
||||||
|
tls: false
|
||||||
|
bind_addresses: {{ toJson $bindAddresses }}
|
||||||
|
type: http
|
||||||
|
|
||||||
|
resources:
|
||||||
|
- names: [metrics]
|
||||||
|
compress: false
|
||||||
|
{{- if $config.listeners }}
|
||||||
|
{{- if has "replication" $config.listeners }}
|
||||||
|
{{- if not $config.name }}
|
||||||
|
{{- fail "Workers with replication listeners must have unique names." }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
- port: 9093
|
||||||
|
tls: false
|
||||||
|
bind_addresses: {{ toJson $bindAddresses }}
|
||||||
|
type: http
|
||||||
|
x_forwarded: true
|
||||||
|
|
||||||
|
resources:
|
||||||
|
- names: [replication]
|
||||||
|
compress: false
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
- port: 8083
|
||||||
|
tls: false
|
||||||
|
bind_addresses: {{ toJson $bindAddresses }}
|
||||||
|
type: http
|
||||||
|
x_forwarded: true
|
||||||
|
|
||||||
|
resources:
|
||||||
|
- names:
|
||||||
|
{{- toYaml (without $config.listeners "replication") | nindent 14 }}
|
||||||
|
compress: false
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
worker_log_config: /synapse/config/log.yaml
|
||||||
|
{{- if $config.extraConfig }}
|
||||||
|
|
||||||
|
# Extra config
|
||||||
|
{{ toYaml $config.extraConfig | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
217
matrix-synapse/templates/worker/deployment.yaml
Normal file
217
matrix-synapse/templates/worker/deployment.yaml
Normal file
|
@ -0,0 +1,217 @@
|
||||||
|
{{- $needsVolumePermissions := and .Values.volumePermissions.enabled (or .Values.persistence.enabled .Values.persistence.existingClaim) }}
|
||||||
|
{{- $default := .Values.workers.default }}
|
||||||
|
{{- range $worker, $config := .Values.workers }}
|
||||||
|
{{- if $config.enabled }}
|
||||||
|
{{- $name := $worker | replace "_" "-" }}
|
||||||
|
{{- $app := $config.app | default $worker }}
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: {{ include "matrix-synapse.workername" (dict "root" $ "worker" $name) }}
|
||||||
|
labels:
|
||||||
|
{{- include "matrix-synapse.labels" $ | nindent 4 }}
|
||||||
|
app.kubernetes.io/component: {{ $name }}
|
||||||
|
spec:
|
||||||
|
replicas: {{ $config.replicaCount | default $default.replicaCount }}
|
||||||
|
{{- with ($config.strategy | default $default.strategy) }}
|
||||||
|
strategy:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "matrix-synapse.selectorLabels" $ | nindent 6 }}
|
||||||
|
app.kubernetes.io/component: {{ $name }}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") $ | sha256sum }}
|
||||||
|
checksum/worker-config: {{ include (print $.Template.BasePath "/worker/configmap.yaml") $ | sha256sum }}
|
||||||
|
checksum/secrets: {{ include (print $.Template.BasePath "/secrets.yaml") $ | sha256sum }}
|
||||||
|
{{- with ($config.annotations | default $default.annotations) }}
|
||||||
|
{{ . | toYaml | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "matrix-synapse.selectorLabels" $ | nindent 8 }}
|
||||||
|
app.kubernetes.io/component: {{ $name }}
|
||||||
|
{{- with ($config.labels | default $default.labels) }}
|
||||||
|
{{ . | toYaml | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
serviceAccountName: {{ include "matrix-synapse.serviceAccountName" $ }}
|
||||||
|
{{- include "matrix-synapse.imagePullSecrets" $ | nindent 6 }}
|
||||||
|
securityContext:
|
||||||
|
{{- $config.podSecurityContext | default $default.podSecurityContext | toYaml | nindent 8 }}
|
||||||
|
{{- if and $needsVolumePermissions (eq $name "media-repository") }}
|
||||||
|
initContainers:
|
||||||
|
- name: volume-permissions
|
||||||
|
{{- with $.Values.volumePermissions.image }}
|
||||||
|
image: "{{ coalesce $.Values.global.image.registry .registry }}/{{ .repository }}:{{ .tag }}"
|
||||||
|
imagePullPolicy: {{ coalesce $.Values.global.image.pullPolicy .pullPolicy }}
|
||||||
|
{{- end }}
|
||||||
|
command:
|
||||||
|
- sh
|
||||||
|
- -c
|
||||||
|
- |
|
||||||
|
chown {{ $.Values.volumePermissions.uid }}:{{ $.Values.volumePermissions.gid }} -R /synapse/data
|
||||||
|
securityContext:
|
||||||
|
runAsNonRoot: false
|
||||||
|
runAsUser: 0
|
||||||
|
resources: {{ $.Values.volumePermissions.resources | toYaml | nindent 12 }}
|
||||||
|
volumeMounts:
|
||||||
|
- name: media
|
||||||
|
mountPath: /synapse/data
|
||||||
|
{{- end }}
|
||||||
|
containers:
|
||||||
|
- name: {{ $name }}
|
||||||
|
command:
|
||||||
|
- sh
|
||||||
|
- -c
|
||||||
|
- |
|
||||||
|
cat /synapse/secrets/*.yaml | \
|
||||||
|
sed -e "s/@@POSTGRES_PASSWORD@@/${POSTGRES_PASSWORD:-}/" \
|
||||||
|
-e "s/@@REDIS_PASSWORD@@/${REDIS_PASSWORD:-}/" \
|
||||||
|
> /synapse/config/conf.d/secrets.yaml
|
||||||
|
|
||||||
|
{{- if (or $config.extraCommands $default.extraCommands) }}
|
||||||
|
|
||||||
|
{{- with $config.extraCommands | default $default.extraCommands }}
|
||||||
|
{{ range . }}
|
||||||
|
{{ . | nindent 14 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
exec python -B -m synapse.app.{{ (not (not $config.generic)) | ternary "generic_worker" $app }} \
|
||||||
|
-c /synapse/config/homeserver.yaml \
|
||||||
|
-c /synapse/config/conf.d/ \
|
||||||
|
-c /synapse/config/{{ $name }}.worker
|
||||||
|
env:
|
||||||
|
{{- if or $.Values.postgresql.enabled $.Values.externalPostgresql.existingSecret }}
|
||||||
|
- name: POSTGRES_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
{{- if $.Values.postgresql.enabled }}
|
||||||
|
name: {{ $.Values.postgresql.existingSecret | default (include "matrix-synapse.postgresql.fullname" $) }}
|
||||||
|
key: password
|
||||||
|
{{- else }}
|
||||||
|
name: {{ $.Values.externalPostgresql.existingSecret }}
|
||||||
|
key: {{ $.Values.externalPostgresql.existingSecretPasswordKey }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if or (and $.Values.redis.enabled (default $.Values.redis.usePassword true)) $.Values.externalRedis.existingSecret }}
|
||||||
|
- name: REDIS_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
{{- if $.Values.redis.enabled }}
|
||||||
|
name: {{ $.Values.redis.auth.existingSecret | default (include "matrix-synapse.redis.fullname" $) }}
|
||||||
|
key: redis-password
|
||||||
|
{{- else }}
|
||||||
|
name: {{ $.Values.externalRedis.existingSecret }}
|
||||||
|
key: {{ $.Values.externalRedis.existingSecretPasswordKey }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end }}
|
||||||
|
{{- with $config.extraEnv | default $default.extraEnv }}
|
||||||
|
{{- . | toYaml | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
securityContext:
|
||||||
|
{{- $config.securityContext | default $default.securityContext | toYaml | nindent 12 }}
|
||||||
|
{{- with $.Values.image }}
|
||||||
|
image: "{{ coalesce $.Values.global.image.registry .registry }}/{{ .repository }}:{{ .tag | default (printf "v%s" $.Chart.AppVersion) }}"
|
||||||
|
imagePullPolicy: {{ coalesce $.Values.global.image.pullPolicy .pullPolicy }}
|
||||||
|
{{- end }}
|
||||||
|
ports:
|
||||||
|
- name: metrics
|
||||||
|
containerPort: 9090
|
||||||
|
protocol: TCP
|
||||||
|
{{- if $config.listeners }}
|
||||||
|
- name: listener
|
||||||
|
containerPort: 8083
|
||||||
|
protocol: TCP
|
||||||
|
{{- if has "replication" $config.listeners }}
|
||||||
|
- name: replication
|
||||||
|
containerPort: 9093
|
||||||
|
protocol: TCP
|
||||||
|
{{- end }}
|
||||||
|
{{- if (or $config.readinessProbe $default.readinessProbe) }}
|
||||||
|
readinessProbe:
|
||||||
|
{{- $config.readinessProbe | default $default.readinessProbe | toYaml | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if (or $config.livenessProbe $default.livenessProbe) }}
|
||||||
|
livenessProbe:
|
||||||
|
{{- $config.livenessProbe | default $default.livenessProbe | toYaml | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if (or $config.startupProbe $default.startupProbe) }}
|
||||||
|
startupProbe:
|
||||||
|
{{- $config.startupProbe | default $default.startupProbe | toYaml | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
resources:
|
||||||
|
{{- $config.resources | default $default.resources | toYaml | nindent 12 }}
|
||||||
|
volumeMounts:
|
||||||
|
- name: config
|
||||||
|
mountPath: /synapse/config/homeserver.yaml
|
||||||
|
subPath: homeserver.yaml
|
||||||
|
- name: config
|
||||||
|
mountPath: /synapse/config/log.yaml
|
||||||
|
subPath: log.yaml
|
||||||
|
- name: worker-config
|
||||||
|
mountPath: /synapse/config/{{ $name }}.worker
|
||||||
|
subPath: {{ $name }}.worker
|
||||||
|
- name: tmpconf
|
||||||
|
mountPath: /synapse/config/conf.d
|
||||||
|
- name: secrets
|
||||||
|
mountPath: /synapse/secrets
|
||||||
|
- name: signingkey
|
||||||
|
mountPath: /synapse/keys
|
||||||
|
{{- if eq $name "media-repository" }}
|
||||||
|
- name: media
|
||||||
|
mountPath: /synapse/data
|
||||||
|
{{- end }}
|
||||||
|
{{- with $config.volumeMounts | default $default.volumeMounts }}
|
||||||
|
{{ . | toYaml | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with $config.nodeSelector | default $default.nodeSelector }}
|
||||||
|
nodeSelector:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with $config.affinity | default $default.affinity }}
|
||||||
|
affinity:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with $config.tolerations | default $default.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
volumes:
|
||||||
|
- name: config
|
||||||
|
configMap:
|
||||||
|
name: {{ include "matrix-synapse.fullname" $ }}
|
||||||
|
- name: worker-config
|
||||||
|
configMap:
|
||||||
|
name: {{ include "matrix-synapse.workername" (dict "root" $ "worker" "workers") }}
|
||||||
|
- name: secrets
|
||||||
|
secret:
|
||||||
|
secretName: {{ include "matrix-synapse.fullname" $ }}
|
||||||
|
- name: signingkey
|
||||||
|
secret:
|
||||||
|
secretName: {{ $.Values.signingkey.existingSecret | default (include "matrix-synapse.workername" (dict "root" $ "worker" "signingkey")) | quote }}
|
||||||
|
items:
|
||||||
|
- key: {{ $.Values.signingkey.existingSecretKey | default "signing.key" | quote }}
|
||||||
|
path: signing.key
|
||||||
|
- name: tmpconf
|
||||||
|
emptyDir: {}
|
||||||
|
{{- if eq $name "media-repository" }}
|
||||||
|
- name: media
|
||||||
|
{{- if $.Values.persistence.enabled }}
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: {{ $.Values.persistence.existingClaim | default (include "matrix-synapse.fullname" $) }}
|
||||||
|
{{- else }}
|
||||||
|
emptyDir: {}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with $config.volumes | default $default.volumes }}
|
||||||
|
{{ . | toYaml | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
913
matrix-synapse/values.yaml
Normal file
913
matrix-synapse/values.yaml
Normal file
|
@ -0,0 +1,913 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
global:
|
||||||
|
image:
|
||||||
|
# -- if set it will overwrite all registry entries
|
||||||
|
registry:
|
||||||
|
# -- if set it will overwrite all pullPolicy
|
||||||
|
pullPolicy:
|
||||||
|
|
||||||
|
image:
|
||||||
|
registry: ghcr.io
|
||||||
|
repository: element-hq/synapse
|
||||||
|
# -- Overrides the image tag whose default is the chart appVersion.
|
||||||
|
tag:
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
## Optionally specify an array of imagePullSecrets.
|
||||||
|
## Secrets must be manually created in the namespace.
|
||||||
|
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
|
||||||
|
##
|
||||||
|
# pullSecrets:
|
||||||
|
# - myRegistryKeySecretName
|
||||||
|
|
||||||
|
# -- Override part of the installed name, will still keep release name.
|
||||||
|
nameOverride:
|
||||||
|
|
||||||
|
# -- Override the full name of the installed chart.
|
||||||
|
fullnameOverride:
|
||||||
|
|
||||||
|
|
||||||
|
# -- The Matrix domain name, this is what will be used for the domain part in your MXIDs.
|
||||||
|
serverName:
|
||||||
|
|
||||||
|
# -- The public Matrix server name, this will be used for any public URLs in config as well as for client API links in the ingress.
|
||||||
|
publicServerName:
|
||||||
|
|
||||||
|
## The source of the signing key used by Synapse in federation.
|
||||||
|
##
|
||||||
|
signingkey:
|
||||||
|
## Enable a Kubernetes job to generate and store a signing key if one does not
|
||||||
|
## exist.
|
||||||
|
## If you have already run a Matrix server at some point on your domain then
|
||||||
|
## you will want to keep the old signing key, either by using the `existingSecret`
|
||||||
|
## configuration, or by including the old key under `extraConfig.old_signing_keys`
|
||||||
|
##
|
||||||
|
## If you lose your signing key then any federation traffic from your instance
|
||||||
|
## might not be trusted any more by the wider network.
|
||||||
|
##
|
||||||
|
## After the initial install, the job should be disabled to speed up subsequent upgrades.
|
||||||
|
##
|
||||||
|
job:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
## Annotations to apply to the signing-key-job.
|
||||||
|
##
|
||||||
|
annotations: {}
|
||||||
|
|
||||||
|
publishImage:
|
||||||
|
registry: docker.io
|
||||||
|
repository: bitnami/kubectl
|
||||||
|
tag: latest
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
|
||||||
|
## Specify an existing signing key secret, will need to be created in advance.
|
||||||
|
##
|
||||||
|
# existingSecret: secret-name
|
||||||
|
# existingSecretKey: signing.key
|
||||||
|
|
||||||
|
## Resources to apply to the signing key generation job
|
||||||
|
##
|
||||||
|
resources: {}
|
||||||
|
# limits:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 250Mi
|
||||||
|
# requests:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 250Mi
|
||||||
|
|
||||||
|
## Matrix configuration values that affect other parts of the chart, for any
|
||||||
|
## value not handled by this block, you will want to instead set it in
|
||||||
|
## extraConfig below.
|
||||||
|
## Ref: https://github.com/matrix-org/synapse/blob/develop/docs/sample_config.yaml
|
||||||
|
##
|
||||||
|
config:
|
||||||
|
## The publicly accessible URL for the Synapse instance, will default to
|
||||||
|
## https://<publicServerName>.
|
||||||
|
##
|
||||||
|
# publicBaseurl: 'https://matrix.example.com'
|
||||||
|
|
||||||
|
## The log level for Synapse and all modules.
|
||||||
|
##
|
||||||
|
# logLevel: INFO
|
||||||
|
|
||||||
|
## Should usage stats be reported
|
||||||
|
##
|
||||||
|
reportStats: false
|
||||||
|
|
||||||
|
## Protect registration with recaptcha. (optional)
|
||||||
|
##
|
||||||
|
# recaptcha:
|
||||||
|
# publicKey: ''
|
||||||
|
# privateKey: ''
|
||||||
|
|
||||||
|
## URIs and secret key for TURN servers to use to help establish 1:1 WebRTC
|
||||||
|
## calls.
|
||||||
|
##
|
||||||
|
# turnUris: []
|
||||||
|
# turnSecret: ''
|
||||||
|
|
||||||
|
## Registration configuration, note that registration with the
|
||||||
|
## container-internal register_new_matrix_user tool is always possible.
|
||||||
|
##
|
||||||
|
# enableRegistration: false
|
||||||
|
|
||||||
|
## NB; this value will default to a random string if not specified.
|
||||||
|
# registrationSharedSecret: ''
|
||||||
|
|
||||||
|
## NB; Strongly recommended to set this to a secure value.
|
||||||
|
# macaroonSecretKey: ''
|
||||||
|
|
||||||
|
# -- A set of trusted servers to contact if another server doesn't respond to a signing key request.
|
||||||
|
trustedKeyServers:
|
||||||
|
- server_name: matrix.org
|
||||||
|
# verify_keys:
|
||||||
|
# "ed25519:auto": "Noi6WqcDj0QmPxCNQqgezwTlBKrfqehY1u2FyWP9uYw"
|
||||||
|
|
||||||
|
# -- The bind addresses to use for the default listeners
|
||||||
|
bindAddresses:
|
||||||
|
- '::'
|
||||||
|
|
||||||
|
## Extra listeners to configure.
|
||||||
|
##
|
||||||
|
extraListeners: []
|
||||||
|
# - port: 9000
|
||||||
|
# bind_addresses: ['::']
|
||||||
|
# type: manhole
|
||||||
|
|
||||||
|
## Extra listener types to add onto the main listener.
|
||||||
|
##
|
||||||
|
extraMainListenerTypes: []
|
||||||
|
# - consent
|
||||||
|
|
||||||
|
## Logging
|
||||||
|
# use TerseJsonFormatter structured logging
|
||||||
|
# Ref: https://matrix-org.github.io/synapse/latest/structured_logging.html
|
||||||
|
useStructuredLogging: false
|
||||||
|
|
||||||
|
## Specify arbitrary Synapse configuration here;
|
||||||
|
## Ref: https://github.com/matrix-org/synapse/blob/develop/docs/sample_config.yaml
|
||||||
|
##
|
||||||
|
extraConfig: {}
|
||||||
|
# old_signing_keys:
|
||||||
|
# "ed25519:id": { key: "base64string", expired_ts: 123456789123 }
|
||||||
|
# use_presence: false
|
||||||
|
# enable_search: false
|
||||||
|
# federation_domain_whitelist:
|
||||||
|
# - lon.example.com
|
||||||
|
# - nyc.example.com
|
||||||
|
# - syd.example.com
|
||||||
|
# dynamic_thumbnails: true
|
||||||
|
|
||||||
|
## Specify additional loggers configutation here;
|
||||||
|
## Ref: https://matrix-org.github.io/synapse/latest/structured_logging.html
|
||||||
|
extraLoggers: {}
|
||||||
|
# synapse.storage.SQL:
|
||||||
|
# level: WARNING
|
||||||
|
|
||||||
|
## Specify arbitrary - secret - Synapse configuration here;
|
||||||
|
## These values will be stored in secrets instead of configmaps
|
||||||
|
## Ref: https://github.com/matrix-org/synapse/blob/develop/docs/sample_config.yaml
|
||||||
|
##
|
||||||
|
extraSecrets: {}
|
||||||
|
# password_config:
|
||||||
|
# pepper: ''
|
||||||
|
|
||||||
|
## Configuration to apply to the main Synapse pod.
|
||||||
|
##
|
||||||
|
synapse:
|
||||||
|
## Only really applicable when the deployment has an RWO PV attached (e.g. when media repository
|
||||||
|
## is enabled for the main Synapse pod)
|
||||||
|
## Since replicas = 1, an update can get "stuck", as the previous pod remains attached to the
|
||||||
|
## PV, and the "incoming" pod can never start. Changing the strategy to "Recreate" will
|
||||||
|
## terminate the single previous pod, so that the new, incoming pod can attach to the PV
|
||||||
|
##
|
||||||
|
strategy:
|
||||||
|
type: RollingUpdate
|
||||||
|
|
||||||
|
## Annotations to apply to the main Synapse pod.
|
||||||
|
##
|
||||||
|
annotations: {}
|
||||||
|
# prometheus.io/scrape: "true"
|
||||||
|
# prometheus.io/path: "/_synapse/metrics"
|
||||||
|
# prometheus.io/port: "9090"
|
||||||
|
|
||||||
|
## Labels to apply to the main Synapse pod.
|
||||||
|
##
|
||||||
|
labels: {}
|
||||||
|
|
||||||
|
## Additional environment variables to apply to the main Synapse pod
|
||||||
|
##
|
||||||
|
extraEnv: []
|
||||||
|
# - name: LD_PRELOAD
|
||||||
|
# value: /usr/lib/x86_64-linux-gnu/libjemalloc.so.2
|
||||||
|
# - name: SYNAPSE_CACHE_FACTOR
|
||||||
|
# value: "2"
|
||||||
|
|
||||||
|
## Additional volumes to mount into Synapse
|
||||||
|
##
|
||||||
|
extraVolumes: []
|
||||||
|
# - name: spamcheck
|
||||||
|
# flexVolume:
|
||||||
|
# driver: ananace/git-live
|
||||||
|
# options:
|
||||||
|
# repo: https://github.com/company/synapse-module
|
||||||
|
# interval: 1d
|
||||||
|
# readOnly: true
|
||||||
|
extraVolumeMounts: []
|
||||||
|
# - name: spamcheck
|
||||||
|
# mountPath: /usr/local/lib/python3.7/site-packages/company
|
||||||
|
|
||||||
|
## Extra commands to run when starting Synapse
|
||||||
|
##
|
||||||
|
extraCommands: []
|
||||||
|
# - 'apt-get update -yqq && apt-get install patch -yqq'
|
||||||
|
# - 'patch -d/usr/local/lib/python3.7/site-packages/synapse -p2 < /synapse/patches/something.patch'
|
||||||
|
|
||||||
|
## Configuration for the pod security policy, Synapse will by always run as
|
||||||
|
## its own user, even if not set.
|
||||||
|
## Note that changing this may also require you to use the volumePermission
|
||||||
|
## helper depending on your storage.
|
||||||
|
##
|
||||||
|
## NB; The synapse install is currently unable to run as anything but UID:GID
|
||||||
|
## 666:666.
|
||||||
|
##
|
||||||
|
podSecurityContext: {}
|
||||||
|
# fsGroup: 666
|
||||||
|
# runAsGroup: 666
|
||||||
|
# runAsUser: 666
|
||||||
|
|
||||||
|
## Configuration for the container security policy, refer to the above
|
||||||
|
## podSecurityContext for more relevant information.
|
||||||
|
##
|
||||||
|
securityContext: {}
|
||||||
|
# capabilities:
|
||||||
|
# drop:
|
||||||
|
# - ALL
|
||||||
|
# readOnlyRootFilesystem: true
|
||||||
|
# runAsNonRoot: true
|
||||||
|
# runAsUser: 666
|
||||||
|
|
||||||
|
## Resources to apply to the main Synapse pod.
|
||||||
|
##
|
||||||
|
resources: {}
|
||||||
|
# limits:
|
||||||
|
# cpu: 1000m
|
||||||
|
# memory: 2500Mi
|
||||||
|
# requests:
|
||||||
|
# cpu: 1000m
|
||||||
|
# memory: 2500Mi
|
||||||
|
|
||||||
|
## Liveness probe configuration to use
|
||||||
|
##
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /health
|
||||||
|
port: http
|
||||||
|
|
||||||
|
## Readiness probe configuration to use
|
||||||
|
##
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /health
|
||||||
|
port: http
|
||||||
|
|
||||||
|
## Startup probe configuration to use
|
||||||
|
##
|
||||||
|
startupProbe:
|
||||||
|
failureThreshold: 12
|
||||||
|
httpGet:
|
||||||
|
path: /health
|
||||||
|
port: http
|
||||||
|
|
||||||
|
## Node selectors to set for the main Synapse pod.
|
||||||
|
##
|
||||||
|
nodeSelector: {}
|
||||||
|
|
||||||
|
## Tolerations to set for the main Synapse pod.
|
||||||
|
##
|
||||||
|
tolerations: []
|
||||||
|
|
||||||
|
## Affinity to set for the main Synapse pod.
|
||||||
|
##
|
||||||
|
affinity: {}
|
||||||
|
|
||||||
|
## Configuration for handling Synapse workers, which are useful for handling
|
||||||
|
## high-load deployments.
|
||||||
|
##
|
||||||
|
## More information is available at;
|
||||||
|
## https://github.com/matrix-org/synapse/blob/master/docs/workers.md
|
||||||
|
##
|
||||||
|
workers:
|
||||||
|
## Default configuration, this is inherited into all workers, and can also be
|
||||||
|
## overriden on each worker type.
|
||||||
|
##
|
||||||
|
default:
|
||||||
|
## The number of worker replicas, note that some workers require special
|
||||||
|
## handling. Refer to the information URL above.
|
||||||
|
##
|
||||||
|
replicaCount: 1
|
||||||
|
|
||||||
|
## Update strategy - only really applicable for deployments with RWO PVs attached (e.g. media repository)
|
||||||
|
## If replicas = 1, an update can get "stuck", as the previous pod remains attached to the
|
||||||
|
## PV, and the "incoming" pod can never start. Changing the strategy to "Recreate" will
|
||||||
|
## terminate the single previous pod, so that the new, incoming pod can attach to the PV
|
||||||
|
##
|
||||||
|
strategy:
|
||||||
|
type: RollingUpdate
|
||||||
|
|
||||||
|
## A specific name for this worker, can't be set globally.
|
||||||
|
## Note that this can only be set when replicaCount is 1
|
||||||
|
# name:
|
||||||
|
|
||||||
|
## Additional configuration to set for the worker, can't be set globally.
|
||||||
|
# extraConfig: {}
|
||||||
|
|
||||||
|
## Annotations to apply to the worker.
|
||||||
|
##
|
||||||
|
annotations: {}
|
||||||
|
# prometheus.io/scrape: "true"
|
||||||
|
# prometheus.io/path: /_synapse/metrics
|
||||||
|
# prometheus.io/port: 9090
|
||||||
|
|
||||||
|
## Additional environment variables to add to the worker.
|
||||||
|
##
|
||||||
|
extraEnv: []
|
||||||
|
# - name: LD_PRELOAD
|
||||||
|
# value: /usr/lib/x86_64-linux-gnu/libjemalloc.so.2
|
||||||
|
# - name: SYNAPSE_CACHE_FACTOR
|
||||||
|
# value: "1.0"
|
||||||
|
|
||||||
|
## Additional volumes to add to the worker.
|
||||||
|
## Useful for the media repo, or for adding Python modules.
|
||||||
|
##
|
||||||
|
volumes: []
|
||||||
|
volumeMounts: []
|
||||||
|
|
||||||
|
## Extra commands to run when starting Synapse
|
||||||
|
##
|
||||||
|
extraCommands: []
|
||||||
|
# - 'apt-get update -yqq && apt-get install patch -yqq'
|
||||||
|
# - 'patch -d/usr/local/lib/python3.7/site-packages/synapse -p2 < /synapse/patches/something.patch'
|
||||||
|
|
||||||
|
## Security context information to set to the worker.
|
||||||
|
##
|
||||||
|
podSecurityContext: {}
|
||||||
|
# fsGroup: 666
|
||||||
|
# runAsGroup: 666
|
||||||
|
# runAsUser: 666
|
||||||
|
|
||||||
|
## Container security context information to set to the worker.
|
||||||
|
##
|
||||||
|
securityContext: {}
|
||||||
|
# capabilities:
|
||||||
|
# drop:
|
||||||
|
# - ALL
|
||||||
|
# readOnlyRootFilesystem: true
|
||||||
|
# runAsNonRoot: true
|
||||||
|
# runAsUser: 666
|
||||||
|
|
||||||
|
## Resources to apply to the worker.
|
||||||
|
##
|
||||||
|
resources: {}
|
||||||
|
# limits:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 128Mi
|
||||||
|
# requests:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 128Mi
|
||||||
|
|
||||||
|
## Liveness probe configuration to use
|
||||||
|
##
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /health
|
||||||
|
port: metrics
|
||||||
|
|
||||||
|
## Readiness probe configuration to use
|
||||||
|
##
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /health
|
||||||
|
port: metrics
|
||||||
|
|
||||||
|
## Readiness probe configuration to use
|
||||||
|
## Defaults to allowing workers 60 seconds to start up
|
||||||
|
##
|
||||||
|
startupProbe:
|
||||||
|
failureThreshold: 6
|
||||||
|
httpGet:
|
||||||
|
path: /health
|
||||||
|
port: metrics
|
||||||
|
|
||||||
|
## Node selector configuration to set on the worker.
|
||||||
|
##
|
||||||
|
nodeSelector: {}
|
||||||
|
|
||||||
|
## Toleration configuration to set on the worker.
|
||||||
|
##
|
||||||
|
tolerations: []
|
||||||
|
|
||||||
|
## Affinity configuration to set on the worker.
|
||||||
|
##
|
||||||
|
affinity: {}
|
||||||
|
|
||||||
|
## The generic worker can be used to handle most endpoints.
|
||||||
|
## Be careful when enabling the sync endpoints as they can eat large amounts of
|
||||||
|
## resources. Refer to the information URL above for more info.
|
||||||
|
## Proper load balancing with the K8s Ingress resource may not be possible.
|
||||||
|
##
|
||||||
|
generic_worker:
|
||||||
|
enabled: false
|
||||||
|
generic: true
|
||||||
|
listeners: [client, federation]
|
||||||
|
csPaths:
|
||||||
|
## Sync requests
|
||||||
|
# - "/_matrix/client/(r0|v3)/sync$"
|
||||||
|
- "/_matrix/client/(api/v1|r0|v3)/events$"
|
||||||
|
# - "/_matrix/client/(api/v1|r0|v3)/initialSync$"
|
||||||
|
# - "/_matrix/client/(api/v1|r0|v3)/rooms/[^/]+/initialSync$"
|
||||||
|
|
||||||
|
## Client API requests
|
||||||
|
- "/_matrix/client/(api/v1|r0|v3|unstable)/createRoom$"
|
||||||
|
- "/_matrix/client/(api/v1|r0|v3|unstable)/publicRooms$"
|
||||||
|
- "/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/joined_members$"
|
||||||
|
- "/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/context/"
|
||||||
|
- "/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/members$"
|
||||||
|
- "/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/state$"
|
||||||
|
- "/_matrix/client/v1/rooms/.*/hierarchy$"
|
||||||
|
- "/_matrix/client/unstable/org.matrix.msc2716/rooms/.*/batch_send$"
|
||||||
|
- "/_matrix/client/unstable/im.nheko.summary/rooms/.*/summary$"
|
||||||
|
- "/_matrix/client/(r0|v3|unstable)/account/3pid$"
|
||||||
|
- "/_matrix/client/(r0|v3|unstable)/account/whoami$"
|
||||||
|
- "/_matrix/client/(r0|v3|unstable)/devices$"
|
||||||
|
- "/_matrix/client/versions$"
|
||||||
|
- "/_matrix/client/(api/v1|r0|v3|unstable)/voip/turnServer$"
|
||||||
|
- "/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/event/"
|
||||||
|
- "/_matrix/client/(api/v1|r0|v3|unstable)/joined_rooms$"
|
||||||
|
- "/_matrix/client/(api/v1|r0|v3|unstable)/search$"
|
||||||
|
|
||||||
|
## Encryption requests
|
||||||
|
- "/_matrix/client/(r0|v3|unstable)/keys/query$"
|
||||||
|
- "/_matrix/client/(r0|v3|unstable)/keys/changes$"
|
||||||
|
- "/_matrix/client/(r0|v3|unstable)/keys/claim$"
|
||||||
|
- "/_matrix/client/(r0|v3|unstable)/room_keys/"
|
||||||
|
|
||||||
|
## Registration/login requests
|
||||||
|
- "/_matrix/client/(api/v1|r0|v3|unstable)/login$"
|
||||||
|
- "/_matrix/client/(r0|v3|unstable)/register$"
|
||||||
|
- "/_matrix/client/v1/register/m.login.registration_token/validity$"
|
||||||
|
|
||||||
|
## Event sending requests
|
||||||
|
- "/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/redact"
|
||||||
|
- "/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/send"
|
||||||
|
- "/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/state/"
|
||||||
|
- "/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/(join|invite|leave|ban|unban|kick)$"
|
||||||
|
- "/_matrix/client/(api/v1|r0|v3|unstable)/join/"
|
||||||
|
- "/_matrix/client/(api/v1|r0|v3|unstable)/profile/"
|
||||||
|
|
||||||
|
## User directory search requests
|
||||||
|
- "/_matrix/client/(r0|v3|unstable)/user_directory/search"
|
||||||
|
|
||||||
|
## Worker event streams
|
||||||
|
## See https://matrix-org.github.io/synapse/latest/workers.html#stream-writers
|
||||||
|
##
|
||||||
|
|
||||||
|
## The typing event stream
|
||||||
|
# - "/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/typing"
|
||||||
|
|
||||||
|
## The to_device event stream
|
||||||
|
# - "/_matrix/client/(r0|v3|unstable)/sendToDevice/"
|
||||||
|
|
||||||
|
## The account_data event stream
|
||||||
|
# - "/_matrix/client/(r0|v3|unstable)/.*/tags"
|
||||||
|
# - "/_matrix/client/(r0|v3|unstable)/.*/account_data"
|
||||||
|
|
||||||
|
## The receipts event stream
|
||||||
|
# - "/_matrix/client/(r0|v3|unstable)/rooms/.*/receipt"
|
||||||
|
# - "/_matrix/client/(r0|v3|unstable)/rooms/.*/read_markers"
|
||||||
|
|
||||||
|
## The presence event stream
|
||||||
|
# - "/_matrix/client/(api/v1|r0|v3|unstable)/presence/"
|
||||||
|
|
||||||
|
paths:
|
||||||
|
## Federation requests
|
||||||
|
- "/_matrix/federation/v1/event/"
|
||||||
|
- "/_matrix/federation/v1/state/"
|
||||||
|
- "/_matrix/federation/v1/state_ids/"
|
||||||
|
- "/_matrix/federation/v1/backfill/"
|
||||||
|
- "/_matrix/federation/v1/get_missing_events/"
|
||||||
|
- "/_matrix/federation/v1/publicRooms"
|
||||||
|
- "/_matrix/federation/v1/query/"
|
||||||
|
- "/_matrix/federation/v1/make_join/"
|
||||||
|
- "/_matrix/federation/v1/make_leave/"
|
||||||
|
- "/_matrix/federation/(v1|v2)/send_join/"
|
||||||
|
- "/_matrix/federation/(v1|v2)/send_leave/"
|
||||||
|
- "/_matrix/federation/(v1|v2)/invite/"
|
||||||
|
- "/_matrix/federation/v1/event_auth/"
|
||||||
|
- "/_matrix/federation/v1/exchange_third_party_invite/"
|
||||||
|
- "/_matrix/federation/v1/user/devices/"
|
||||||
|
- "/_matrix/key/v2/query"
|
||||||
|
- "/_matrix/federation/v1/hierarchy/"
|
||||||
|
|
||||||
|
## Inbound federation transaction request
|
||||||
|
- "/_matrix/federation/v1/send/"
|
||||||
|
|
||||||
|
## To separate the generic worker into specific concerns - for example federation transaction receiving;
|
||||||
|
## NB; This worker should have incoming traffic routed based on source IP, which is
|
||||||
|
## left as an exercise to the reader.
|
||||||
|
## https://github.com/matrix-org/synapse/blob/develop/docs/workers.md#load-balancing
|
||||||
|
# federation_reader:
|
||||||
|
# enabled: true
|
||||||
|
# generic: true
|
||||||
|
# listeners: [federation]
|
||||||
|
# paths:
|
||||||
|
# - "/_matrix/federation/v1/send/"
|
||||||
|
|
||||||
|
## Or /sync handling.
|
||||||
|
## NB; Care should be taken to route users to the same instance when scaling this worker,
|
||||||
|
## this is left as an exercise to the reader.
|
||||||
|
## https://github.com/matrix-org/synapse/blob/develop/docs/workers.md#load-balancing
|
||||||
|
# synchrotron:
|
||||||
|
# enabled: true
|
||||||
|
# generic: true
|
||||||
|
# listeners: [client]
|
||||||
|
# csPaths:
|
||||||
|
# - "/_matrix/client/(v2_alpha|r0|v3)/sync$"
|
||||||
|
# - "/_matrix/client/(api/v1|v2_alpha|r0|v3)/events$"
|
||||||
|
# - "/_matrix/client/(api/v1|r0|v3)/initialSync$"
|
||||||
|
# - "/_matrix/client/(api/v1|r0|v3)/rooms/[^/]+/initialSync$"
|
||||||
|
|
||||||
|
## Specialized - non-generic workers below;
|
||||||
|
|
||||||
|
## This worker deals with pushing notifications.
|
||||||
|
## NB; Only one instance of this worker can be run at a time, refer to the
|
||||||
|
## information URL above.
|
||||||
|
##
|
||||||
|
pusher:
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
## This worker handles sending data to registered appservices.
|
||||||
|
## NB; Only one instance of this worker can be run at at time, refer to the
|
||||||
|
## information URL above.
|
||||||
|
##
|
||||||
|
appservice:
|
||||||
|
enabled: false
|
||||||
|
generic: true
|
||||||
|
name: appservices
|
||||||
|
|
||||||
|
## This worker handles sending federation traffic to other Synapse servers.
|
||||||
|
##
|
||||||
|
federation_sender:
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
## Specialized workers can also be run as multiple separate instances,
|
||||||
|
## make sure to read the relevant documentation.
|
||||||
|
##
|
||||||
|
# federation_sender_other:
|
||||||
|
# app: federation_sender
|
||||||
|
# enabled: false
|
||||||
|
|
||||||
|
## This worker deals with serving and storing media.
|
||||||
|
## NB; Running multiple instances will conflict with background jobs.
|
||||||
|
##
|
||||||
|
media_repository:
|
||||||
|
enabled: false
|
||||||
|
listeners: [media]
|
||||||
|
csPaths:
|
||||||
|
- "/_matrix/media/.*"
|
||||||
|
- "/_synapse/admin/v1/purge_media_cache$"
|
||||||
|
- "/_synapse/admin/v1/room/.*/media"
|
||||||
|
- "/_synapse/admin/v1/user/.*/media"
|
||||||
|
- "/_synapse/admin/v1/media/"
|
||||||
|
- "/_synapse/admin/v1/quarantine_media/"
|
||||||
|
- "/_synapse/admin/v1/users/.*/media$"
|
||||||
|
paths:
|
||||||
|
- "/_matrix/media/.*"
|
||||||
|
|
||||||
|
## This worker deals with user directory searches.
|
||||||
|
##
|
||||||
|
user_dir:
|
||||||
|
enabled: false
|
||||||
|
name: userdir
|
||||||
|
listeners: [client]
|
||||||
|
csPaths:
|
||||||
|
- "/_matrix/client/(api/v1|r0|v3|unstable)/user_directory/search$"
|
||||||
|
|
||||||
|
## This worker handles key uploads, and may also stub out presence if that is
|
||||||
|
## disabled. If you set extraConfig.use_presence=false then you may want to
|
||||||
|
## uncomment the second path.
|
||||||
|
##
|
||||||
|
frontend_proxy:
|
||||||
|
enabled: false
|
||||||
|
listeners: [client]
|
||||||
|
csPaths:
|
||||||
|
- "/_matrix/client/(api/v1|r0|v3|unstable)/keys/upload"
|
||||||
|
# - "/_matrix/client/(api/v1|r0|v3|unstable)/presence/[^/]+/status"
|
||||||
|
|
||||||
|
## This will set up a Lighttpd server to respond to any
|
||||||
|
## /.well-known/matrix/server requests, to make federation possible without
|
||||||
|
## adding SRV-records to DNS.
|
||||||
|
##
|
||||||
|
wellknown:
|
||||||
|
enabled: false
|
||||||
|
image:
|
||||||
|
registry: docker.io
|
||||||
|
repository: library/nginx
|
||||||
|
tag: 1.25.3
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
|
||||||
|
replicaCount: 1
|
||||||
|
podLabels: {}
|
||||||
|
podAnnotations: []
|
||||||
|
podSecurityContext: {}
|
||||||
|
securityContext: {}
|
||||||
|
containerPort: 80
|
||||||
|
env: []
|
||||||
|
resources: {}
|
||||||
|
nodeSelector: {}
|
||||||
|
tolerations: []
|
||||||
|
affinity: {}
|
||||||
|
|
||||||
|
service:
|
||||||
|
type: ClusterIP
|
||||||
|
port: 8080
|
||||||
|
annotations: {}
|
||||||
|
|
||||||
|
# -- The host and port combo to serve on .well-known/matrix/server.
|
||||||
|
# m.server: matrix.example.com:443
|
||||||
|
server: {}
|
||||||
|
|
||||||
|
# -- Data to serve on .well-known/matrix/client.
|
||||||
|
# m.homeserver:
|
||||||
|
# base_url: https://matrix.example.com
|
||||||
|
client: {}
|
||||||
|
|
||||||
|
## This configuration is for setting up the internally provided Postgres server,
|
||||||
|
## if you instead want to use an existing server, then you may want to set
|
||||||
|
## enabled to false and configure the externalPostgresql block.
|
||||||
|
##
|
||||||
|
postgresql:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
auth:
|
||||||
|
# XXX Change me!
|
||||||
|
password: synapse
|
||||||
|
|
||||||
|
## Or use existing secret with "password" key
|
||||||
|
## instead of static password
|
||||||
|
##
|
||||||
|
# existingSecret: postgresql-secret
|
||||||
|
|
||||||
|
username: synapse
|
||||||
|
database: synapse
|
||||||
|
|
||||||
|
primary:
|
||||||
|
initdb:
|
||||||
|
args: "--lc-collate=C --lc-ctype=C"
|
||||||
|
|
||||||
|
persistence:
|
||||||
|
# storageClass: "-"
|
||||||
|
size: 16Gi
|
||||||
|
|
||||||
|
# -- set extra configuration
|
||||||
|
# ref: https://github.com/matrix-org/synapse/blob/develop/docs/postgres.md#synapse-config
|
||||||
|
# e.g. txn_limit, allow_unsafe_locale
|
||||||
|
options: {}
|
||||||
|
|
||||||
|
# -- Extra arguments for the database connection
|
||||||
|
# ref: https://github.com/matrix-org/synapse/blob/develop/docs/postgres.md#synapse-config
|
||||||
|
extraArgs: {}
|
||||||
|
|
||||||
|
## An externally configured Postgres server to use for Synapse's database, note
|
||||||
|
## that the database needs to have both COLLATE and CTYPE set to "C".
|
||||||
|
##
|
||||||
|
externalPostgresql:
|
||||||
|
# host: postgres
|
||||||
|
port: 5432
|
||||||
|
username: synapse
|
||||||
|
# password: synapse
|
||||||
|
|
||||||
|
## The name of an existing secret with postgresql credentials
|
||||||
|
# existingSecret: postgres-secrets
|
||||||
|
|
||||||
|
## Password key to be retrieved from existing secret
|
||||||
|
# existingSecretPasswordKey: postgres-password
|
||||||
|
|
||||||
|
database: synapse
|
||||||
|
# sslmode: prefer
|
||||||
|
|
||||||
|
# -- set extra configuration
|
||||||
|
# ref: https://github.com/matrix-org/synapse/blob/develop/docs/postgres.md#synapse-config
|
||||||
|
# e.g. txn_limit, allow_unsafe_locale
|
||||||
|
options: {}
|
||||||
|
|
||||||
|
# -- Extra arguments for the database connection
|
||||||
|
# ref: https://github.com/matrix-org/synapse/blob/develop/docs/postgres.md#synapse-config
|
||||||
|
extraArgs: {}
|
||||||
|
|
||||||
|
## This configuration is for the internal Redis that's deployed for use with
|
||||||
|
## workers/sharding, for an external Redis server you want to set enabled to
|
||||||
|
## false and configure the externalRedis block.
|
||||||
|
##
|
||||||
|
redis:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
## Database ID for non-default database
|
||||||
|
# dbid: 0
|
||||||
|
|
||||||
|
auth:
|
||||||
|
enabled: true
|
||||||
|
# XXX Change me!
|
||||||
|
password: synapse
|
||||||
|
|
||||||
|
## Or use existing secret with "redis-password" key
|
||||||
|
## instead of static password
|
||||||
|
##
|
||||||
|
# existingSecret: redis-secret
|
||||||
|
|
||||||
|
architecture: standalone
|
||||||
|
master:
|
||||||
|
kind: Deployment
|
||||||
|
persistence:
|
||||||
|
## Note that Synapse only uses redis as a synchronization utility, so no
|
||||||
|
## data will ever need to be persisted.
|
||||||
|
##
|
||||||
|
enabled: false
|
||||||
|
service:
|
||||||
|
port: 6379
|
||||||
|
|
||||||
|
## An externally configured Redis server to use for workers/sharding.
|
||||||
|
##
|
||||||
|
externalRedis:
|
||||||
|
# host: redis
|
||||||
|
port: 6379
|
||||||
|
# password: synapse
|
||||||
|
|
||||||
|
## Database ID for non-default database
|
||||||
|
# dbid: 0
|
||||||
|
|
||||||
|
## The name of an existing secret with redis credentials
|
||||||
|
# existingSecret: redis-secrets
|
||||||
|
|
||||||
|
## Password key to be retrieved from existing secret
|
||||||
|
# existingSecretPasswordKey: redis-password
|
||||||
|
|
||||||
|
## Persistence configuration for the media repository function.
|
||||||
|
## This PVC will be mounted in either Synapse or a media_repo worker.
|
||||||
|
##
|
||||||
|
## NB; If you want to be able to scale this, you will have to set the
|
||||||
|
## accessMode to RWX/ReadWriteMany.
|
||||||
|
##
|
||||||
|
persistence:
|
||||||
|
enabled: true
|
||||||
|
# existingClaim: synapse-data
|
||||||
|
|
||||||
|
# storageClass: "-"
|
||||||
|
accessMode: ReadWriteOnce
|
||||||
|
size: 10Gi
|
||||||
|
|
||||||
|
## Set up an init container to chown the mounted media if necessary.
|
||||||
|
##
|
||||||
|
volumePermissions:
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
uid: 666
|
||||||
|
gid: 666
|
||||||
|
|
||||||
|
image:
|
||||||
|
registry: docker.io
|
||||||
|
repository: library/alpine
|
||||||
|
tag: 3.19.1
|
||||||
|
pullPolicy: Always
|
||||||
|
|
||||||
|
## Optionally specify an array of imagePullSecrets.
|
||||||
|
## Secrets must be manually created in the namespace.
|
||||||
|
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
|
||||||
|
##
|
||||||
|
# pullSecrets:
|
||||||
|
# - myRegistryKeySecretName
|
||||||
|
|
||||||
|
resources: {}
|
||||||
|
# resources:
|
||||||
|
# requests:
|
||||||
|
# memory: 128Mi
|
||||||
|
# cpu: 100m
|
||||||
|
|
||||||
|
## Configuration for the main Synapse service.
|
||||||
|
## To use TLS inside Synapse itself, add an TLS listener, and change the ports
|
||||||
|
## configured in here.
|
||||||
|
##
|
||||||
|
service:
|
||||||
|
type: ClusterIP
|
||||||
|
port: 8008
|
||||||
|
targetPort: http
|
||||||
|
|
||||||
|
## The K8s ingress configuration, this will be quite heavily used in order to
|
||||||
|
## set up all routing necessary for use with a sharded Synapse instance.
|
||||||
|
## If you're not using a Ingress compatible K8s ingress, you will need to set up
|
||||||
|
## your own routing instead.
|
||||||
|
##
|
||||||
|
ingress:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
## Generate traefik-compatible regex paths instead of nginx-compatible ones.
|
||||||
|
##
|
||||||
|
traefikPaths: false
|
||||||
|
|
||||||
|
## Annotations to apply to the created ingress resource.
|
||||||
|
##
|
||||||
|
annotations: {}
|
||||||
|
# nginx.ingress.kubernetes.io/use-regex: "true"
|
||||||
|
# # Sync proxy-body-size with Synapse's max_upload_size which is 10M by default
|
||||||
|
# nginx.ingress.kubernetes.io/proxy-body-size: 10m
|
||||||
|
# kubernetes.io/ingress.class: nginx
|
||||||
|
# kubernetes.io/tls-acme: "true"
|
||||||
|
|
||||||
|
## Hosts to add to the ingress configuration for handling Client-to-Server
|
||||||
|
## API request paths.
|
||||||
|
##
|
||||||
|
## NB; config.serverName is included if includeServerName is set. (default)
|
||||||
|
##
|
||||||
|
csHosts: []
|
||||||
|
# - matrix.example.com
|
||||||
|
|
||||||
|
## Additional hosts to add to the ingress configuration for handling
|
||||||
|
## Server-to-Server API requests.
|
||||||
|
##
|
||||||
|
## NB; config.serverName is included if includeServerName is set. (default)
|
||||||
|
##
|
||||||
|
hosts: []
|
||||||
|
# - example.com
|
||||||
|
|
||||||
|
## Additional hosts to add to the ingress configuration for handling
|
||||||
|
## well-known requests.
|
||||||
|
##
|
||||||
|
## NB; config.serverName is included if includeServerName is set. (default)
|
||||||
|
##
|
||||||
|
wkHosts: []
|
||||||
|
# - example.com
|
||||||
|
|
||||||
|
## Additional paths to add to the Server-to-Server ingress blocks, will be
|
||||||
|
## inserted before the /_matrix catch-all path.
|
||||||
|
##
|
||||||
|
paths: []
|
||||||
|
# # K8s 1.19+
|
||||||
|
# - path: /_matrix/media
|
||||||
|
# pathType: Prefix
|
||||||
|
# backend:
|
||||||
|
# service:
|
||||||
|
# name: matrix-media-repo
|
||||||
|
# port: 8000
|
||||||
|
# # K8s <1.19
|
||||||
|
# - path: /_matrix/media
|
||||||
|
# backend:
|
||||||
|
# serviceName: matrix-media-repo
|
||||||
|
# servicePort: 8000
|
||||||
|
|
||||||
|
## Additional paths to add to the Client-to-Server ingress blocks, will be
|
||||||
|
## inserted before the /_matrix and /_synapse catch-all paths.
|
||||||
|
##
|
||||||
|
csPaths: []
|
||||||
|
# # K8s 1.19+
|
||||||
|
# - path: /_matrix/media
|
||||||
|
# pathType: Prefix
|
||||||
|
# backend:
|
||||||
|
# service:
|
||||||
|
# name: matrix-media-repo
|
||||||
|
# port:
|
||||||
|
# number: 8000
|
||||||
|
# # K8s <1.19
|
||||||
|
# - path: /_matrix/media
|
||||||
|
# backend:
|
||||||
|
# serviceName: matrix-media-repo
|
||||||
|
# servicePort: 8000
|
||||||
|
|
||||||
|
## Should the /_synapse path be included in the ingress, admin APIs are
|
||||||
|
## provided under this path.
|
||||||
|
##
|
||||||
|
includeUnderscoreSynapse: true
|
||||||
|
|
||||||
|
## Should config.serverName be included in the list of ingress paths, can be
|
||||||
|
## set to false if the main domain is managed in some external way.
|
||||||
|
##
|
||||||
|
includeServerName: true
|
||||||
|
|
||||||
|
## TLS configuration to include in the ingress configuration
|
||||||
|
##
|
||||||
|
tls: []
|
||||||
|
# - secretName: chart-example-tls
|
||||||
|
# hosts:
|
||||||
|
# - example.com
|
||||||
|
# - matrix.example.com
|
||||||
|
|
||||||
|
## Set the name of the IngressClass cluster resource (optional)
|
||||||
|
## https://kubernetes.io/docs/reference/kubernetes-api/service-resources/ingress-v1/#IngressSpec
|
||||||
|
# className: can-be-anything
|
||||||
|
|
||||||
|
## Specifies whether a service account should be created, and annotations to add.
|
||||||
|
##
|
||||||
|
serviceAccount:
|
||||||
|
create: false
|
||||||
|
annotations: {}
|
||||||
|
# eks.amazonaws.com/role-arn: arn:aws:iam::000000000000:role/matrix-synapse
|
||||||
|
# name: non-default-service-name
|
Loading…
Add table
Reference in a new issue