👁 В Kubernetes часто приходится менять конфигурацию сервисов через ConfigMap. По умолчанию Pod не видит изменения, пока не будет пересоздан. Для продакшена это неудобно: хочется изменить параметры «на лету», без даунтайма. С помощью subPath и дополнительного sidecar-контейнера можно динамически подгружать новые конфиги.
📝 Настройка ConfigMap с динамическим обновлением
Создаём ConfigMap с конфигурацией:
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
settings.yaml: |
log_level: info
feature_flag: falseМонтируем ConfigMap в Pod через volume:
volumes:
- name: config
configMap:
name: app-config
containers:
- name: app
image: myapp:latest
volumeMounts:
- name: config
mountPath: /etc/app/settings.yaml
subPath: settings.yaml📝 Sidecar для горячего обновления
Добавляем sidecar, который отслеживает изменения файла и сигнализирует основному контейнеру о перезагрузке конфигурации:
containers:
- name: reload-watcher
image: busybox
command: ['sh', '-c', 'while inotifywait -e modify /etc/app/settings.yaml; do kill -HUP 1; done']
volumeMounts:
- name: config
mountPath: /etc/app/settings.yaml
subPath: settings.yaml📌 Теперь основное приложение получает сигнал SIGHUP при изменении конфигурации и может перезагрузить настройки без рестарта Pod.
❗️ Горячее обновление ConfigMap через sidecar — мощный инструмент для продакшн Kubernetes. Он позволяет вносить изменения в конфигурацию без даунтайма, минимизирует риски и ускоряет работу с микросервисами.
tags: #полезно #k8s #разработка


