Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
48a9a5d
feat: add ConfigMap-sourced dynamic configuration loader
vvnpn-nv Mar 26, 2026
fe33738
fix: address bugs and code quality issues in configmap_loader
vvnpn-nv Mar 26, 2026
ec56c17
test: add comprehensive tests for ConfigMap config loader
vvnpn-nv Mar 26, 2026
67ce147
fix: address review findings, add config watcher, fix test failures
vvnpn-nv Apr 1, 2026
2ddcda3
simplify: consolidate singleton config functions, fix advisory lock
vvnpn-nv Apr 1, 2026
71bb8a6
feat: add drift reconciliation for configmap-mode configs
vvnpn-nv Apr 2, 2026
d0db789
feat: add UX improvements — managed_by visibility, immediate re-apply…
vvnpn-nv Apr 3, 2026
7c8d00f
feat: reject CLI writes to configmap-managed configs with 409 Conflict
vvnpn-nv Apr 3, 2026
1a9c887
refactor: extract configmap_guard module, fix circular import, cover …
vvnpn-nv Apr 6, 2026
230f8b3
chore: remove debug print, dead code, stale comment
vvnpn-nv Apr 6, 2026
e493ec7
fix: rollback guard referenced removed configmap_loader.reject_if_man…
vvnpn-nv Apr 6, 2026
975635e
docs: add design doc for ConfigMap-sourced dynamic configuration
vvnpn-nv Apr 7, 2026
b2f0cee
fix: guard watcher startup to avoid service boot abort
vvnpn-nv Apr 7, 2026
452c4bb
feat: extend secret file references to all config credential fields
vvnpn-nv Apr 7, 2026
42a2253
feat: auto-detect Docker registry .dockerconfigjson secret format
vvnpn-nv Apr 7, 2026
a11c049
refactor: redesign ConfigMap config to in-memory + watchdog + global …
vvnpn-nv Apr 7, 2026
25dcec2
docs: rewrite design doc for v2 architecture
vvnpn-nv Apr 7, 2026
2890e97
feat: authz_sidecar reads roles from ConfigMap file instead of DB
vvnpn-nv Apr 8, 2026
fa3705b
feat: authz_sidecar uses --roles-file when dynamicConfig enabled
vvnpn-nv Apr 8, 2026
5f98c4b
feat: move product defaults to chart values, auto-derive service_base…
vvnpn-nv Apr 8, 2026
bc5bd00
feat: add default backend and pool to chart defaults
vvnpn-nv Apr 8, 2026
670fb18
docs: update design doc for v3 — authz file-backed, chart defaults
vvnpn-nv Apr 8, 2026
c0caafe
refactor: eliminate remaining DB deps in ConfigMap mode
vvnpn-nv Apr 8, 2026
321ddae
chore: fix medium review findings — remove stale docs and dead code
vvnpn-nv Apr 8, 2026
629f608
refactor: flatten ConfigMap YAML — remove managed_configs/config/item…
vvnpn-nv Apr 9, 2026
51176ea
chore: clean up v1/v2 leftovers — remove dead code and stale references
vvnpn-nv Apr 9, 2026
53bbccb
fix: correct YAML indentation in chart values after items: removal
vvnpn-nv Apr 9, 2026
433c69f
fix: update api-service.yaml for flat config structure
vvnpn-nv Apr 10, 2026
eea825d
fix: add dynamic-config volume to agent and logger deployments
vvnpn-nv Apr 10, 2026
78cfc28
fix: add checksum annotation to agent/logger, remove duplicate guards
vvnpn-nv Apr 10, 2026
c3fabd2
refactor: rename dynamicConfig → configs across codebase
vvnpn-nv Apr 10, 2026
fc91e1f
refactor: replace recursive secret templates with explicit secretRefs
vvnpn-nv Apr 10, 2026
c18a1a2
refactor: rename dynamic-config files to configs
vvnpn-nv Apr 10, 2026
4fd5e18
chore: cleanup dead code and stale references from review
vvnpn-nv Apr 10, 2026
7683258
perf: bypass caches in file-backed authz mode
vvnpn-nv Apr 10, 2026
2aedc40
chore: optimize loader + remove dead code
vvnpn-nv Apr 10, 2026
00f084a
perf: don't allocate caches in file-backed authz mode
vvnpn-nv Apr 10, 2026
63bed76
fix: address PR review findings #1, #2, #3, #4, #9
vvnpn-nv Apr 10, 2026
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
11 changes: 10 additions & 1 deletion deployments/charts/service/templates/_sidecar-helpers.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -305,6 +305,9 @@ Authorization sidecar container
imagePullPolicy: {{ .Values.sidecars.authz.imagePullPolicy }}
args:
- "--grpc-port={{ .Values.sidecars.authz.grpcPort }}"
{{- if .Values.services.configs.enabled }}
- "--roles-file=/etc/osmo/configs/config.yaml"
{{- else }}
- "--postgres-host={{ .Values.services.postgres.serviceName }}"
- "--postgres-port={{ .Values.services.postgres.port }}"
- "--postgres-database={{ .Values.services.postgres.db }}"
Expand All @@ -313,6 +316,7 @@ Authorization sidecar container
- "--postgres-max-conns={{ .Values.sidecars.authz.postgres.maxConns }}"
- "--postgres-min-conns={{ .Values.sidecars.authz.postgres.minConns }}"
- "--postgres-max-conn-lifetime={{ .Values.sidecars.authz.postgres.maxConnLifetimeMin }}"
{{- end }}
- "--cache-ttl={{ .Values.sidecars.authz.cache.ttl }}"
- "--cache-max-size={{ .Values.sidecars.authz.cache.maxSize }}"
{{- if .Values.global.logs.enabled }}
Expand Down Expand Up @@ -340,11 +344,16 @@ Authorization sidecar container
name: redis-secret
key: redis-password
{{- end }}
{{- if .Values.global.logs.enabled }}
volumeMounts:
{{- if .Values.global.logs.enabled }}
- name: logs
mountPath: /logs
{{- end }}
{{- if .Values.services.configs.enabled }}
- name: configs
mountPath: /etc/osmo/configs
readOnly: true
{{- end }}
{{- with .Values.sidecars.authz.livenessProbe }}
livenessProbe:
{{- toYaml . | nindent 4 }}
Expand Down
8 changes: 8 additions & 0 deletions deployments/charts/service/templates/agent-service.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ spec:
{{- end }}
annotations:
{{- include "osmo.extra-annotations" .Values.services.agent | nindent 8 }}
{{- if .Values.services.configs.enabled }}
checksum/configs: {{ .Values.services.configs | toYaml | sha256sum }}
{{- end }}
spec:
{{- with .Values.services.agent.hostAliases }}
hostAliases:
Expand Down Expand Up @@ -214,6 +217,11 @@ spec:
- name: logs
emptyDir: {}
{{- end}}
{{- if .Values.services.configs.enabled }}
- name: configs
configMap:
name: {{ .Values.services.service.serviceName }}-configs
{{- end }}
{{- if .Values.services.configFile.enabled}}
- configMap:
defaultMode: 420
Expand Down
29 changes: 28 additions & 1 deletion deployments/charts/service/templates/api-service.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ spec:
{{- end }}
annotations:
checksum/envoy-config: {{ .Values.sidecars.envoy | toYaml | sha256sum }}
{{- if .Values.services.configs.enabled }}
checksum/configs: {{ .Values.services.configs | toYaml | sha256sum }}
{{- end }}
{{- include "osmo.extra-annotations" .Values.services.service | nindent 8 }}
spec:
{{- with .Values.services.service.hostAliases }}
Expand Down Expand Up @@ -149,6 +152,10 @@ spec:
- --default_admin_username
- {{ .Values.services.defaultAdmin.username | quote }}
{{- end }}
{{- if .Values.services.configs.enabled }}
- --config_file
- /etc/osmo/configs/config.yaml
{{- end }}
{{- range $arg := .Values.services.service.extraArgs }}
- {{ $arg | quote }}
{{- end }}
Expand Down Expand Up @@ -192,14 +199,24 @@ spec:
ports:
- name: metrics
containerPort: 9464
{{- if or .Values.services.configFile.enabled .Values.global.logs.enabled .Values.services.service.extraVolumeMounts }}
{{- if or .Values.services.configFile.enabled .Values.global.logs.enabled .Values.services.configs.enabled .Values.services.service.extraVolumeMounts }}
volumeMounts:
{{- end }}
{{- if .Values.services.configFile.enabled}}
- mountPath: {{ .Values.services.configFile.path }}
name: mek-volume
subPath: mek.yaml
{{- end }}
{{- if .Values.services.configs.enabled }}
- name: configs
mountPath: /etc/osmo/configs
readOnly: true
{{- range .Values.services.configs.secretRefs }}
- name: secret-{{ .secretName }}
mountPath: /etc/osmo/secrets/{{ .secretName }}
readOnly: true
{{- end }}
{{- end }}
{{- if .Values.global.logs.enabled }}
- name: logs
mountPath: /logs
Expand Down Expand Up @@ -262,6 +279,16 @@ spec:
name: mek-config
name: mek-volume
{{- end}}
{{- if .Values.services.configs.enabled }}
- name: configs
configMap:
name: {{ .Values.services.service.serviceName }}-configs
{{- range .Values.services.configs.secretRefs }}
- name: secret-{{ .secretName }}
secret:
secretName: {{ .secretName }}
{{- end }}
{{- end }}
---
{{- if .Values.sidecars.envoy.enabled }}

Expand Down
70 changes: 70 additions & 0 deletions deployments/charts/service/templates/configs.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
{{- if .Values.services.configs.enabled }}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Values.services.service.serviceName }}-configs
labels:
app: {{ .Values.services.service.serviceName }}
data:
config.yaml: |
{{- $cfg := .Values.services.configs }}
{{- if $cfg.service }}
service:
{{- $service := deepCopy $cfg.service }}
{{- if and (not (index $service "service_base_url")) .Values.services.service.hostname }}
{{- $_ := set $service "service_base_url" (printf "https://%s" .Values.services.service.hostname) }}
{{- end }}
{{- toYaml $service | nindent 6 }}
{{- end }}
{{- if $cfg.workflow }}
workflow:
{{- toYaml $cfg.workflow | nindent 6 }}
{{- end }}
{{- if $cfg.dataset }}
dataset:
{{- toYaml $cfg.dataset | nindent 6 }}
{{- end }}
{{- if $cfg.pools }}
pools:
{{- toYaml $cfg.pools | nindent 6 }}
{{- end }}
{{- if $cfg.podTemplates }}
pod_templates:
{{- toYaml $cfg.podTemplates | nindent 6 }}
{{- end }}
{{- if $cfg.resourceValidations }}
resource_validations:
{{- toYaml $cfg.resourceValidations | nindent 6 }}
{{- end }}
{{- if $cfg.backends }}
backends:
{{- toYaml $cfg.backends | nindent 6 }}
{{- end }}
{{- if $cfg.backendTests }}
backend_tests:
{{- toYaml $cfg.backendTests | nindent 6 }}
{{- end }}
{{- if $cfg.groupTemplates }}
group_templates:
{{- toYaml $cfg.groupTemplates | nindent 6 }}
{{- end }}
{{- if $cfg.roles }}
roles:
{{- toYaml $cfg.roles | nindent 6 }}
{{- end }}
{{- end }}
8 changes: 8 additions & 0 deletions deployments/charts/service/templates/logger-service.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ spec:
{{- end }}
annotations:
{{- include "osmo.extra-annotations" .Values.services.logger | nindent 8 }}
{{- if .Values.services.configs.enabled }}
checksum/configs: {{ .Values.services.configs | toYaml | sha256sum }}
{{- end }}
spec:
{{- with .Values.services.logger.hostAliases }}
hostAliases:
Expand Down Expand Up @@ -206,6 +209,11 @@ spec:
- name: logs
emptyDir: {}
{{- end}}
{{- if .Values.services.configs.enabled }}
- name: configs
configMap:
name: {{ .Values.services.service.serviceName }}-configs
{{- end }}
{{- if .Values.services.configFile.enabled}}
- configMap:
defaultMode: 420
Expand Down
Loading