apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: '4'
kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{},"labels":{"app.kubernetes.io/component":"synapse","app.kubernetes.io/instance":"matrix","app.kubernetes.io/managed-by":"Helm","app.kubernetes.io/name":"matrix-synapse","app.kubernetes.io/version":"1.114.0","helm.sh/chart":"matrix-synapse-3.9.11"},"name":"matrix-matrix-synapse","namespace":"matrix"},"spec":{"replicas":1,"selector":{"matchLabels":{"app.kubernetes.io/component":"synapse","app.kubernetes.io/instance":"matrix","app.kubernetes.io/name":"matrix-synapse"}},"strategy":{"type":"RollingUpdate"},"template":{"metadata":{"annotations":{"checksum/config":"043066ecc62a24c373d126dacae95e23a8ff84fa73512aa6e4a45f72f47b2f20","checksum/secrets":"233c503074a0de368c9da37c4583673229a1f1c24cbd3f5fac07251b91c12c73"},"labels":{"app.kubernetes.io/component":"synapse","app.kubernetes.io/instance":"matrix","app.kubernetes.io/name":"matrix-synapse"}},"spec":{"containers":[{"command":["sh","-c","export
POSTGRES_PASSWORD=$(echo \"${POSTGRES_PASSWORD:-}\" | sed ''s/\\//\\\\\\//g''
| sed ''s/\\\u0026/\\\\\\\u0026/g'') \u0026\u0026 \\\nexport REDIS_PASSWORD=$(echo
\"${REDIS_PASSWORD:-}\" | sed ''s/\\//\\\\\\//g'' | sed ''s/\\\u0026/\\\\\\\u0026/g'')
\u0026\u0026 \\\ncat /synapse/secrets/*.yaml | \\\n sed -e \"s/@@POSTGRES_PASSWORD@@/${POSTGRES_PASSWORD:-}/\"
\\\n -e \"s/@@REDIS_PASSWORD@@/${REDIS_PASSWORD:-}/\" \\\n \u003e
/synapse/config/conf.d/secrets.yaml\n\nexec python -B -m synapse.app.homeserver
\\\n -c /synapse/config/homeserver.yaml \\\n -c /synapse/config/conf.d/\n"],"env":[{"name":"POSTGRES_PASSWORD","valueFrom":{"secretKeyRef":{"key":"password","name":"matrix-postgresql"}}},{"name":"REDIS_PASSWORD","valueFrom":{"secretKeyRef":{"key":"redis-password","name":"matrix-redis"}}}],"image":"matrixdotorg/synapse:v1.114.0","imagePullPolicy":"IfNotPresent","livenessProbe":{"httpGet":{"path":"/health","port":"http"}},"name":"synapse","ports":[{"containerPort":8008,"name":"http","protocol":"TCP"},{"containerPort":9093,"name":"replication","protocol":"TCP"},{"containerPort":9090,"name":"metrics","protocol":"TCP"}],"readinessProbe":{"httpGet":{"path":"/health","port":"http"}},"resources":{},"securityContext":{},"startupProbe":{"failureThreshold":12,"httpGet":{"path":"/health","port":"http"}},"volumeMounts":[{"mountPath":"/synapse/config","name":"config"},{"mountPath":"/synapse/config/conf.d","name":"tmpconf"},{"mountPath":"/synapse/secrets","name":"secrets"},{"mountPath":"/synapse/keys","name":"signingkey"},{"mountPath":"/synapse/data","name":"media"},{"mountPath":"/tmp","name":"tmpdir"}]}],"securityContext":{},"serviceAccountName":"default","volumes":[{"configMap":{"name":"matrix-matrix-synapse"},"name":"config"},{"name":"secrets","secret":{"secretName":"matrix-matrix-synapse"}},{"name":"signingkey","secret":{"items":[{"key":"signing.key","path":"signing.key"}],"secretName":"matrix-signingkey"}},{"emptyDir":{},"name":"tmpconf"},{"emptyDir":{},"name":"tmpdir"},{"name":"media","persistentVolumeClaim":{"claimName":"matrix-matrix-synapse"}}]}}}}
'
creationTimestamp: '2024-09-14T22:46:57Z'
generation: 4
labels:
app.kubernetes.io/component: synapse
app.kubernetes.io/instance: matrix
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: matrix-synapse
app.kubernetes.io/version: 1.114.0
helm.sh/chart: matrix-synapse-3.9.11
managedFields:
- apiVersion: apps/v1
fieldsType: FieldsV1
fieldsV1:
f:metadata:
f:annotations:
.: {}
f:kubectl.kubernetes.io/last-applied-configuration: {}
f:labels:
.: {}
f:app.kubernetes.io/component: {}
f:app.kubernetes.io/instance: {}
f:app.kubernetes.io/managed-by: {}
f:app.kubernetes.io/name: {}
f:app.kubernetes.io/version: {}
f:helm.sh/chart: {}
f:spec:
f:progressDeadlineSeconds: {}
f:replicas: {}
f:revisionHistoryLimit: {}
f:selector: {}
f:strategy:
f:rollingUpdate:
.: {}
f:maxSurge: {}
f:maxUnavailable: {}
f:type: {}
f:template:
f:metadata:
f:annotations:
.: {}
f:checksum/config: {}
f:checksum/secrets: {}
f:labels:
.: {}
f:app.kubernetes.io/component: {}
f:app.kubernetes.io/instance: {}
f:app.kubernetes.io/name: {}
f:spec:
f:containers:
k:{"name":"synapse"}:
.: {}
f:command: {}
f:env:
.: {}
k:{"name":"POSTGRES_PASSWORD"}:
.: {}
f:name: {}
f:valueFrom:
.: {}
f:secretKeyRef:
.: {}
f:key: {}
f:name: {}
k:{"name":"REDIS_PASSWORD"}:
.: {}
f:name: {}
f:valueFrom:
.: {}
f:secretKeyRef:
.: {}
f:key: {}
f:name: {}
f:image: {}
f:imagePullPolicy: {}
f:livenessProbe:
.: {}
f:failureThreshold: {}
f:httpGet:
.: {}
f:path: {}
f:port: {}
f:scheme: {}
f:periodSeconds: {}
f:successThreshold: {}
f:timeoutSeconds: {}
f:name: {}
f:ports:
.: {}
k:{"containerPort":8008,"protocol":"TCP"}:
.: {}
f:containerPort: {}
f:name: {}
f:protocol: {}
k:{"containerPort":9090,"protocol":"TCP"}:
.: {}
f:containerPort: {}
f:name: {}
f:protocol: {}
k:{"containerPort":9093,"protocol":"TCP"}:
.: {}
f:containerPort: {}
f:name: {}
f:protocol: {}
f:readinessProbe:
.: {}
f:failureThreshold: {}
f:httpGet:
.: {}
f:path: {}
f:port: {}
f:scheme: {}
f:periodSeconds: {}
f:successThreshold: {}
f:timeoutSeconds: {}
f:resources: {}
f:securityContext: {}
f:startupProbe:
.: {}
f:failureThreshold: {}
f:httpGet:
.: {}
f:path: {}
f:port: {}
f:scheme: {}
f:periodSeconds: {}
f:successThreshold: {}
f:timeoutSeconds: {}
f:terminationMessagePath: {}
f:terminationMessagePolicy: {}
f:volumeMounts:
.: {}
k:{"mountPath":"/synapse/config"}:
.: {}
f:mountPath: {}
f:name: {}
k:{"mountPath":"/synapse/config/conf.d"}:
.: {}
f:mountPath: {}
f:name: {}
k:{"mountPath":"/synapse/data"}:
.: {}
f:mountPath: {}
f:name: {}
k:{"mountPath":"/synapse/keys"}:
.: {}
f:mountPath: {}
f:name: {}
k:{"mountPath":"/synapse/secrets"}:
.: {}
f:mountPath: {}
f:name: {}
k:{"mountPath":"/tmp"}:
.: {}
f:mountPath: {}
f:name: {}
f:dnsPolicy: {}
f:restartPolicy: {}
f:schedulerName: {}
f:securityContext: {}
f:serviceAccount: {}
f:serviceAccountName: {}
f:terminationGracePeriodSeconds: {}
f:volumes:
.: {}
k:{"name":"config"}:
.: {}
f:configMap:
.: {}
f:defaultMode: {}
f:name: {}
f:name: {}
k:{"name":"media"}:
.: {}
f:name: {}
f:persistentVolumeClaim:
.: {}
f:claimName: {}
k:{"name":"secrets"}:
.: {}
f:name: {}
f:secret:
.: {}
f:defaultMode: {}
f:secretName: {}
k:{"name":"signingkey"}:
.: {}
f:name: {}
f:secret:
.: {}
f:defaultMode: {}
f:items: {}
f:secretName: {}
k:{"name":"tmpconf"}:
.: {}
f:emptyDir: {}
f:name: {}
k:{"name":"tmpdir"}:
.: {}
f:emptyDir: {}
f:name: {}
manager: argocd-controller
operation: Update
time: '2024-09-14T22:46:57Z'
- apiVersion: apps/v1
fieldsType: FieldsV1
fieldsV1:
f:metadata:
f:annotations:
f:deployment.kubernetes.io/revision: {}
f:status:
f:availableReplicas: {}
f:conditions:
.: {}
k:{"type":"Available"}:
.: {}
f:lastTransitionTime: {}
f:lastUpdateTime: {}
f:message: {}
f:reason: {}
f:status: {}
f:type: {}
k:{"type":"Progressing"}:
.: {}
f:lastTransitionTime: {}
f:lastUpdateTime: {}
f:message: {}
f:reason: {}
f:status: {}
f:type: {}
f:observedGeneration: {}
f:readyReplicas: {}
f:replicas: {}
f:updatedReplicas: {}
manager: k3s
operation: Update
time: '2025-10-19T10:17:04Z'
name: matrix-matrix-synapse
namespace: matrix
resourceVersion: '3508119891'
uid: 687bd3f9-4f83-41aa-975c-274db2add1d6
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app.kubernetes.io/component: synapse
app.kubernetes.io/instance: matrix
app.kubernetes.io/name: matrix-synapse
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
annotations:
checksum/config: 043066ecc62a24c373d126dacae95e23a8ff84fa73512aa6e4a45f72f47b2f20
checksum/secrets: 233c503074a0de368c9da37c4583673229a1f1c24cbd3f5fac07251b91c12c73
creationTimestamp: null
labels:
app.kubernetes.io/component: synapse
app.kubernetes.io/instance: matrix
app.kubernetes.io/name: matrix-synapse
spec:
containers:
- command:
- sh
- -c
- "export POSTGRES_PASSWORD=$(echo \"${POSTGRES_PASSWORD:-}\" | sed 's/\\\
//\\\\\\//g' | sed 's/\\&/\\\\\\&/g') && \\\nexport REDIS_PASSWORD=$(echo\
\ \"${REDIS_PASSWORD:-}\" | sed 's/\\//\\\\\\//g' | sed 's/\\&/\\\\\\&/g')\
\ && \\\ncat /synapse/secrets/*.yaml | \\\n sed -e \"s/@@POSTGRES_PASSWORD@@/${POSTGRES_PASSWORD:-}/\"\
\ \\\n -e \"s/@@REDIS_PASSWORD@@/${REDIS_PASSWORD:-}/\" \\\n \
\ > /synapse/config/conf.d/secrets.yaml\n\nexec python -B -m synapse.app.homeserver\
\ \\\n -c /synapse/config/homeserver.yaml \\\n -c\
\ /synapse/config/conf.d/\n"
env:
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
key: password
name: matrix-postgresql
- name: REDIS_PASSWORD
valueFrom:
secretKeyRef:
key: redis-password
name: matrix-redis
image: matrixdotorg/synapse:v1.114.0
imagePullPolicy: IfNotPresent
livenessProbe:
failureThreshold: 3
httpGet:
path: /health
port: http
scheme: HTTP
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
name: synapse
ports:
- containerPort: 8008
name: http
protocol: TCP
- containerPort: 9093
name: replication
protocol: TCP
- containerPort: 9090
name: metrics
protocol: TCP
readinessProbe:
failureThreshold: 3
httpGet:
path: /health
port: http
scheme: HTTP
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
resources: {}
securityContext: {}
startupProbe:
failureThreshold: 12
httpGet:
path: /health
port: http
scheme: HTTP
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /synapse/config
name: config
- mountPath: /synapse/config/conf.d
name: tmpconf
- mountPath: /synapse/secrets
name: secrets
- mountPath: /synapse/keys
name: signingkey
- mountPath: /synapse/data
name: media
- mountPath: /tmp
name: tmpdir
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
serviceAccount: default
serviceAccountName: default
terminationGracePeriodSeconds: 30
volumes:
- configMap:
defaultMode: 420
name: matrix-matrix-synapse
name: config
- name: secrets
secret:
defaultMode: 420
secretName: matrix-matrix-synapse
- name: signingkey
secret:
defaultMode: 420
items:
- key: signing.key
path: signing.key
secretName: matrix-signingkey
- emptyDir: {}
name: tmpconf
- emptyDir: {}
name: tmpdir
- name: media
persistentVolumeClaim:
claimName: matrix-matrix-synapse
status:
availableReplicas: 1
conditions:
- lastTransitionTime: '2024-09-14T22:46:57Z'
lastUpdateTime: '2024-09-22T22:34:46Z'
message: ReplicaSet "matrix-matrix-synapse-54c86797f4" has successfully progressed.
reason: NewReplicaSetAvailable
status: 'True'
type: Progressing
- lastTransitionTime: '2025-10-19T10:17:04Z'
lastUpdateTime: '2025-10-19T10:17:04Z'
message: Deployment has minimum availability.
reason: MinimumReplicasAvailable
status: 'True'
type: Available
observedGeneration: 4
readyReplicas: 1
replicas: 1
updatedReplicas: 1