Restart the router when its routing config changes (2.0.0+up1.46.4)
The deployment now carries a checksum/config annotation over the rendered ConfigMap, so a changed routing table produces a new pod template and a controlled rollout. Without it a mapping change was inert but looked successful: the file is mounted with subPath (kubelet never refreshes those in a running container) and mc-router reads ROUTES_CONFIG only at startup. That combination caused the minecraft-server stage-3 outage - the ConfigMap pointed at the renamed services, the running router kept proxying to the old ones, and the pod stayed Ready throughout. Major bump: runtime behaviour changes. A mapping change now costs a router restart (~4.5 s in k3d, so roughly 17-19 s in the real cluster) during which clients cannot connect. That restart is what makes the change take effect at all. Refs #82.
This commit is contained in:
3 files changed
+13
-1
No files matched your search
@@ -5,7 +5,7 @@ icon: https://avatars.githubusercontent.com/u/988985
|
|||||||
|
|
||||||
type: application
|
type: application
|
||||||
|
|
||||||
version: 1.0.1+up1.46.4
|
version: 2.0.0+up1.46.4
|
||||||
appVersion: "1.46.4"
|
appVersion: "1.46.4"
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
|
|||||||
@@ -14,6 +14,13 @@ spec:
|
|||||||
name: {{ .Release.Name }}-{{ .Chart.Name }}-deployment
|
name: {{ .Release.Name }}-{{ .Chart.Name }}-deployment
|
||||||
labels:
|
labels:
|
||||||
app: {{ .Release.Name }}-{{ .Chart.Name }}-deployment
|
app: {{ .Release.Name }}-{{ .Chart.Name }}-deployment
|
||||||
|
annotations:
|
||||||
|
# Rolls the pod whenever the rendered routing ConfigMap changes.
|
||||||
|
# Without it a changed routing table stays inert: the file is mounted
|
||||||
|
# with subPath (kubelet never refreshes those in a running container)
|
||||||
|
# and mc-router reads ROUTES_CONFIG only at startup, so the router
|
||||||
|
# would keep serving the old routes while everything looks healthy.
|
||||||
|
checksum/config: {{ include (print $.Template.BasePath "/minecraft-router.configmap.yaml") . | sha256sum }}
|
||||||
spec:
|
spec:
|
||||||
automountServiceAccountToken: false
|
automountServiceAccountToken: false
|
||||||
securityContext:
|
securityContext:
|
||||||
|
|||||||
@@ -15,6 +15,11 @@ scaleDown: false
|
|||||||
# - domain: creative.example.com
|
# - domain: creative.example.com
|
||||||
# internalUrl: creative-service.minecraft.svc.cluster.local
|
# internalUrl: creative-service.minecraft.svc.cluster.local
|
||||||
# port: 25566
|
# port: 25566
|
||||||
|
# Since chart 2.0.0 a change here rolls the router pod: the deployment carries
|
||||||
|
# a checksum/config annotation over the rendered ConfigMap. That restart is
|
||||||
|
# required for the change to take effect at all - the config is mounted with
|
||||||
|
# subPath and mc-router only reads it at startup - and costs a few seconds of
|
||||||
|
# proxy downtime, during which clients cannot connect.
|
||||||
mappings: null
|
mappings: null
|
||||||
|
|
||||||
server:
|
server:
|
||||||
|
|||||||
Reference in new issue
Block a user