我有一个正在运行的应用程序,kubernetes其中有一个通过configmaps. kubectl update configmaps xyz现在,从应用程序内部,当这个文件(来自 configmap)被更新(让我们说通过命令)时,我想执行一些操作。
假设我使用以下命令创建了一个 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并更改内容,则在我的 pod 中运行的应用程序不会收到文件更改通知。我正在为应用程序使用 GO Lang,它没有收到文件上的 fsnotify,/myapp/config/config.json即使我可以看到在编辑后文件已更改。
如果我在笔记本电脑上运行相同的应用程序,当然,代码会获取 fsnotify 并且我的应用程序会更新它的配置。来自 kubernetes 的相同代码与来自 configmap 的文件相同,但它不起作用。我已经阅读了类似这样的其他 SOF 问题以及其他各种问题,但没有针对我所面临的问题提供专门的解决方案。
我知道该文件(来自 configmap)是一个符号链接,实际文件位于名为..data/config.json. 我也尝试添加该文件,但仍然没有收到 fsnotify 信号。是否可以为来自应用程序中的 configmap(以及机密)的文件获取 fsnotify 信号?如果是这样,有人可以帮助我并展示如何做到这一点(最好在 GO lang 中)?