У меня есть приложение, работающее внутри kubernetes
, в котором есть файл, смонтированный через configmaps
. Теперь внутри приложения я хочу выполнить какое-то действие, когда этот файл (из configmap) будет обновлен (скажем, с помощью команды kubectl update configmaps xyz
).
Допустим, я создал configmap с помощью следующей команды:
kubectl create configmap myy-config --from-file=config.json
и мое развертывание создано так:
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: myapp
spec:
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
-
image: "xyz"
name: myapp
ports:
-
containerPort: 5566
volumeMounts:
-
mountPath: /myapp/config
name: config
dnsPolicy: ClusterFirstWithHostNet
volumes:
-
name: config
configMap:
name: my-config
Теперь, если я сделаю kubectl exec -it <pod> sh
, я смогу увидеть файл. Если я отредактирую карту конфигурации с помощью kubectl edit configmap my-config
и изменим содержимое, приложение, запущенное в моем модуле, не получит уведомление об изменении файла. Я использую GO Lang для приложения, и он не получает fsnotify для файла /myapp/config/config.json
, хотя я вижу, что после редактирования файл изменился.
Если я запускаю одно и то же приложение на своем ноутбуке, конечно, код получает fsnotify, а мое приложение обновляет его конфигурацию. Тот же код из kubernetes с файлом, полученным из configmap, он не работает. Я читал другие вопросы SOF , подобные этому , и другие, но ни у кого нет конкретного решения проблемы, с которой я столкнулся.
Я понимаю, что файл (полученный из configmap) является символической ссылкой, а сам файл находится в папке с именем ..data/config.json
. Я также попытался добавить этот файл, но все еще не получил сигнал fsnotify. Можно ли получить сигнал fsnotify для файлов, которые приходят из configmap (а также из секретов) в приложении? Если да, то может кто-нибудь помочь мне и показать, как это сделать (желательно в GO lang)?