Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions charts/s2s-proxy/templates/_helpers.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,14 @@ Merge default config with overrides
{{- end }}
{{- $_ := set $merged "clusterConnections" $mergedClusterConnections -}}

{{/*
Merge every other top-level key. Without this, only clusterConnections is written back and
everything else in configOverride is silently discarded.
deepCopy the source: sprig mergeOverwrite mutates its first argument, and the loop above already
writes defaults into .Values.configOverride.clusterConnections in place.
*/}}
{{- $merged = mergeOverwrite $merged (omit $overrides "clusterConnections" | deepCopy) -}}

{{- $merged | toYaml }}
{{- end }}

Expand Down
27 changes: 27 additions & 0 deletions charts/s2s-proxy/tests/configmap_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,30 @@ tests:
pattern: |-
muxAddressInfo:
\s*address: addr:3333

# Before this merge, only clusterConnections was written back.
# Every other top-level key in configOverride was silently discarded.
# The binary decodes with KnownFields(true).
# A key that now lands has to be one it knows.
- it: should apply top-level configOverride keys
set:
configOverride:
metrics:
prometheus:
listenAddress: "0.0.0.0:9999"
clusterConnections:
- local:
tcpClient:
address: "frontend-other:2222"
asserts:
- matchRegex:
path: data["config.yaml"]
pattern: |-
prometheus:
\s*listenAddress: 0.0.0.0:9999
# The clusterConnections merge is unaffected.
- matchRegex:
path: data["config.yaml"]
pattern: |-
tcpClient:
\s*address: frontend-other:2222
Loading