Skip to content

Commit 05da60b

Browse files
committed
renew routing for envoy
1 parent c824dc6 commit 05da60b

7 files changed

Lines changed: 1133 additions & 240 deletions

File tree

charts/synapse/Chart.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ apiVersion: v2
22
appVersion: 1.151.0
33
description: matrix synapse kubernetes deployment
44
name: synapse
5-
version: 2.4.4
5+
version: 2.4.5

charts/synapse/templates/envoy-configmap.yaml

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,24 @@ data:
151151
name: whoami_hash
152152
{{- end }}
153153
154+
155+
{{- range $route := .Values.ingress.syncKeysRoutes }}
156+
- match:
157+
safe_regex:
158+
regex: {{ printf "^%s" $route | squote }}
159+
route:
160+
timeout: 300s
161+
auto_host_rewrite: true
162+
cluster: httpd-user-hash
163+
hash_policy:
164+
- header:
165+
header_name: X-Hash-Key
166+
typed_per_filter_config:
167+
envoy.filters.http.lua:
168+
"@type": type.googleapis.com/envoy.extensions.filters.http.lua.v3.LuaPerRoute
169+
name: whoami_hash
170+
{{- end }}
171+
154172
{{- range $route := .Values.ingress.mediaRepository }}
155173
- match:
156174
safe_regex:
@@ -274,6 +292,26 @@ data:
274292
{{- end }}
275293
{{- end }}
276294
295+
{{- range $route := .Values.ingress.clientReaderRoomKeys }}
296+
- match:
297+
safe_regex:
298+
regex: {{ printf "^%s" $route | squote }}
299+
route:
300+
timeout: 300s
301+
auto_host_rewrite: true
302+
cluster: httpd-client-reader
303+
{{- end }}
304+
305+
{{- range $route := .Values.ingress.clientReaderEventsRoutes }}
306+
- match:
307+
safe_regex:
308+
regex: {{ printf "^%s" $route | squote }}
309+
route:
310+
timeout: 300s
311+
auto_host_rewrite: true
312+
cluster: httpd-client-reader
313+
{{- end }}
314+
277315
{{- range $route := .Values.ingress.clientReaderRoutes }}
278316
- match:
279317
safe_regex:

charts/synapse/tests/golden/fixtures/test-envoy-configmap-msc4306.golden.yaml

Lines changed: 335 additions & 65 deletions
Large diffs are not rendered by default.

charts/synapse/tests/golden/fixtures/test-envoy-configmap-no-mas.golden.yaml

Lines changed: 334 additions & 64 deletions
Large diffs are not rendered by default.

charts/synapse/tests/golden/fixtures/test-envoy-configmap.golden.yaml

Lines changed: 335 additions & 65 deletions
Large diffs are not rendered by default.

charts/synapse/tests/golden/fixtures/test-envoy-deployment.golden.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ spec:
2424
app: synapse
2525
component: synapse-client-reader-envoy
2626
annotations:
27-
checksum/config: d71199f5998c47c881b811bf2218e203effbe19b31755ece0e4a3cccc30bc5bf
27+
checksum/config: 4e5e008b7f7d9a5463aff65090872424c71bfd2f62a244863c06c80082de0999
2828
spec:
2929
terminationGracePeriodSeconds: 60
3030
containers:

charts/synapse/values.yaml

Lines changed: 89 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -377,42 +377,43 @@ ingress:
377377
- "/_synapse/.*"
378378

379379
typing:
380-
- "/_matrix/client/(api/v1|r0|v3|unstable)/rooms/[^/]+/typing.*"
380+
- '/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/typing.*'
381381

382382
toDevice:
383-
- "/_matrix/client/(r0|v3|unstable)/sendToDevice/.*"
383+
- '/_matrix/client/(r0|v3|unstable)/sendToDevice/.*'
384384

385385
accountData:
386-
- "/_matrix/client/(r0|v3|unstable)/.*/tags.*"
387-
- "/_matrix/client/(r0|v3|unstable)/.*/account_data.*"
386+
- '/_matrix/client/(r0|v3|unstable)/.*/tags.*'
387+
- '/_matrix/client/(r0|v3|unstable)/.*/account_data.*'
388388

389389
receipts:
390-
- '/_matrix/client/(r0|v3|unstable)/rooms/[^/]+/receipt.*'
391-
- '/_matrix/client/(r0|v3|unstable)/rooms/[^/]+/read_markers$'
390+
- '/_matrix/client/(r0|v3|unstable)/rooms/.*/receipt.*'
391+
- '/_matrix/client/(r0|v3|unstable)/rooms/.*/read_markers.*'
392392

393393
presence:
394-
- "/_matrix/client/(api/v1|r0|v3|unstable)/presence/.*"
394+
- '/_matrix/client/(api/v1|r0|v3|unstable)/presence/.*'
395395

396396
pushRulesRoutes:
397-
- "/_matrix/client/(api/v1|r0|v3|unstable)/pushrules/.*"
397+
- '/_matrix/client/(api/v1|r0|v3|unstable)/pushrules/.*'
398398

399+
# shold be before encryption rules ^/_matrix/client/(r0|v3|unstable)/keys/.*
399400
deviceListsRoutes:
400-
- "/_matrix/client/(r0|v3|unstable)/keys/query$"
401-
- "/_matrix/client/(r0|v3|unstable)/keys/changes$"
402-
- "/_matrix/client/(r0|v3|unstable)/keys/claim$"
403-
- "/_matrix/client/(r0|v3|unstable)/keys/upload/.*"
404-
- "/_matrix/client/(r0|v3|unstable)/delete_devices$"
405-
- "/_matrix/client/(api/v1|r0|v3|unstable)/devices(/.*)?$"
406-
- "/_matrix/client/(r0|v3|unstable)/keys/upload(/.*)?$"
407-
- "/_matrix/client/(api/v1|r0|v3|unstable)/keys/device_signing/upload$"
408-
- "/_matrix/client/(api/v1|r0|v3|unstable)/keys/signatures/upload$"
409-
401+
# workers.md: ^/_matrix/client/(r0|v3)/delete_devices$
402+
- '/_matrix/client/(r0|v3|unstable)/delete_devices$'
403+
# workers.md: ^/_matrix/client/(api/v1|r0|v3|unstable)/devices(/|$)
404+
- '/_matrix/client/(r0|v3|unstable)/devices(/.*)?$'
405+
- '/_matrix/client/(r0|v3|unstable)/keys/upload$'
406+
- '/_matrix/client/(v3|unstable)/keys/device_signing/upload$'
407+
# workers.md: ^/_matrix/client/(api/v1|r0|v3|unstable)/keys/signatures/upload$
408+
- '/_matrix/client/(r0|v3|unstable)/keys/signatures/upload$'
409+
410+
# validated 020626
410411
threadSubscriptionsRoutes:
411412
- "/_matrix/client/unstable/io.element.msc4306/rooms/.*/thread/.*/subscription$"
412413
- "/_matrix/client/unstable/io.element.msc4308/thread_subscriptions$"
413414

414415
roomRoutes:
415-
- '/_matrix/client/.*(?:%21|!)[A-Za-z0-9._=/-]+(?::|%3[Aa])[A-Za-z0-9.-]+.*$'
416+
- '/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/messages$'
416417

417418
mediaRepository:
418419
- "/_matrix/media/.*"
@@ -427,39 +428,61 @@ ingress:
427428

428429
syncRoutes:
429430
- "/_matrix/client/(r0|v3|unstable)/sync$"
430-
- "/_matrix/client/(api/v1|r0|v3)/events$"
431-
- "/_matrix/client/(api/v1|r0|v3)/initialSync$"
432-
- "/_matrix/client/(api/v1|r0|v3)/rooms/[^/]+/initialSync$"
433-
- '/_matrix/client/(r0|v3|unstable)/room_keys.*'
431+
- "/_matrix/client/(api/v1|r0|v3|unstable)/events$"
432+
- "/_matrix/client/(api/v1|r0|v3|unstable)/initialSync$"
433+
- "/_matrix/client/(api/v1|r0|v3|unstable)/rooms/[^/]+/initialSync$"
434434
- "/_matrix/client/unstable/org.matrix.simplified_msc3575/sync$"
435435

436+
# by user-id
437+
syncKeysRoutes:
438+
- '/_matrix/client/(r0|v3|unstable)/room_keys/.*'
439+
436440
userDirectoryRoutes:
437441
- "/_matrix/client/(r0|v3|unstable)/user_directory/search$"
438442

443+
#event_creator - accepts events from clients
444+
#event_persister - accepts events from event_creator, writes events stream to db
445+
# by round-robin
446+
clientReaderEventsRoutes:
447+
- '/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/redact/.*'
448+
- '/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/send/.*'
449+
- '/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/state/.*'
450+
- '/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/(join|invite|leave|ban|unban|kick).*'
451+
- '/_matrix/client/(api/v1|r0|v3|unstable)/join/.*'
452+
- '/_matrix/client/(r0|v3|unstable)/knock/.*'
453+
- '/_matrix/client/(api/v1|r0|v3|unstable)/profile/.*'
454+
# by round-robin
455+
clientReaderRoomKeys:
456+
- '/_matrix/client/(r0|v3|unstable)/keys/changes$'
457+
- '/_matrix/client/(r0|v3|unstable)/keys/claim$'
458+
- '/_matrix/client/(r0|v3|unstable)/keys/query$'
459+
460+
# by round-robin
439461
clientReaderRoutes:
440462
- '/_matrix/client/versions$'
441-
- '/_matrix/client/(r0|v3|unstable)/notifications$'
442-
- '/_matrix/client/(api/v1|r0|v3|unstable)/room_keys/.*$'
443-
- '/_matrix/client/(api/v1|r0|v3|unstable)/keys/(query|changes|claim|room_keys/).*$'
444-
- '/_matrix/client/unstable/org\.matrix\.msc3814\.v1/dehydrated_device(?:\?.*)?$'
445-
- '/_matrix/client/unstable/org\.matrix\.msc3814\.v1/dehydrated_device/[^/]*/events(?:\?.*)?$'
446-
- '/_matrix/client/(api/v1|r0|v3|unstable)/profile.*$'
447-
- '/_matrix/client/(api/v1|r0|v3|unstable)/account/(3pid|whoami|deactivate).*$'
448-
- '/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/joined_members.*$'
449-
- '/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/members.*$'
450-
- '/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/state.*$'
451-
- '/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/hierarchy.*$'
452-
- '/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/aliases.*$'
453-
- '/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/timestamp_to_event.*$'
463+
- '/_matrix/client/(api/v1|r0|v3|unstable)/createRoom$'
464+
- '/_matrix/client/(api/v1|r0|v3|unstable)/publicRooms.*'
465+
- '/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/joined_members$'
454466
- '/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/context/.*$'
455-
- '/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/(relations/|event/).*$'
456-
- '/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/(redact|send|state/).*$'
457-
- '/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/(join|invite|leave|ban|unban|kick).*$'
458-
- '/_matrix/client/(api/v1|r0|v3|unstable)/(createRoom|publicRooms|versions|joined_rooms|search|capabilities).*$'
459-
- '/_matrix/client/(api/v1|r0|v3|unstable)/voip/turnServer.*$'
467+
- '/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/members$'
468+
- '/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/state$'
469+
- '/_matrix/client/v1/rooms/.*/hierarchy$'
470+
- '/_matrix/client/(v1|unstable)/rooms/.*/relations/.*'
471+
- '/_matrix/client/v1/rooms/.*/threads$'
472+
- '/_matrix/client/unstable/im\.nheko\.summary/summary/.*$'
473+
- '/_matrix/client/(r0|v3|unstable)/account/3pid$'
474+
- '/_matrix/client/(r0|v3|unstable)/account/whoami$'
475+
- '/_matrix/client/(r0|v3|unstable)/account/deactivate$'
476+
- '/_matrix/client/(api/v1|r0|v3|unstable)/voip/turnServer$'
477+
- '/_matrix/client/(api/v1|r0|v3|unstable)/rooms/.*/event/.*'
478+
- '/_matrix/client/(api/v1|r0|v3|unstable)/joined_rooms$'
479+
- '/_matrix/client/v1/rooms/.*/timestamp_to_event$'
480+
- '/_matrix/client/(api/v1|r0|v3|unstable.*)/rooms/.*/aliases.*'
481+
- '/_matrix/client/(api/v1|r0|v3|unstable)/search$'
482+
- '/_matrix/client/(r0|v3|unstable)/user/.*/filter(/.*)?$'
460483
- '/_matrix/client/(api/v1|r0|v3|unstable)/directory/room/.*$'
461-
- '/_matrix/client/(api/v1|r0|v3|unstable)/user/.*/filter(/|$).*$'
462-
- '/_matrix/client/unstable/org\.matrix\.msc4143/rtc/transports(?:\?.*)?$'
484+
- '/_matrix/client/(r0|v3|unstable)/capabilities$'
485+
- '/_matrix/client/(r0|v3|unstable)/notifications$'
463486

464487
clientReaderRegister:
465488
- "/_matrix/client/(api/v1|r0|v3|unstable)/login$"
@@ -469,7 +492,29 @@ ingress:
469492
- "/_matrix/client/(r0|v3|unstable)/password_policy$"
470493

471494
federationReaderRoutes:
472-
- "/_matrix/(federation/(v1|v2)|key/v2)/.*"
495+
- "/_matrix/federation/v1/version$"
496+
- "/_matrix/federation/v1/event/.*"
497+
- "/_matrix/federation/v1/state/.*"
498+
- "/_matrix/federation/v1/state_ids/.*"
499+
- "/_matrix/federation/v1/backfill/.*"
500+
- "/_matrix/federation/v1/get_missing_events/.*"
501+
- "/_matrix/federation/v1/publicRooms.*"
502+
- "/_matrix/federation/v1/query/.*"
503+
- "/_matrix/federation/v1/make_join/.*"
504+
- "/_matrix/federation/v1/make_leave/.*"
505+
- "/_matrix/federation/(v1|v2)/send_join/.*"
506+
- "/_matrix/federation/(v1|v2)/send_leave/.*"
507+
- "/_matrix/federation/v1/make_knock/.*"
508+
- "/_matrix/federation/v1/send_knock/.*"
509+
- "/_matrix/federation/(v1|v2)/invite/.*"
510+
- "/_matrix/federation/v1/event_auth/.*"
511+
- "/_matrix/federation/v1/timestamp_to_event/.*"
512+
- "/_matrix/federation/v1/exchange_third_party_invite/.*"
513+
- "/_matrix/federation/v1/user/devices/.*"
514+
- "/_matrix/key/v2/query.*"
515+
- "/_matrix/federation/v1/hierarchy/.*"
516+
- "/_matrix/federation/v1/send/.*"
517+
- "/_matrix/client/unstable/org.matrix.msc4140/delayed_events(/.*/restart)?$"
473518

474519
matrixAuthentication:
475520
- "/_matrix/client/(api/v1|r0|v3|unstable)/login/sso/redirect(/.*)?$"

0 commit comments

Comments
 (0)