亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

configmaps 更新時如何在 kubernetes 的應用程序中獲取通知

configmaps 更新時如何在 kubernetes 的應用程序中獲取通知

Go
溫溫醬 2023-06-01 16:21:52
我有一個應用程序在其中運行kubernetes,其中有一個通過configmaps. kubectl update configmaps xyz現在,當這個文件(來自 configmap)更新時(比方說通過命令),我想從應用程序內部執行一些操作。假設我使用以下命令創建了一個 configmap:kubectl create configmap myy-config --from-file=config.json我的部署是這樣創建的:apiVersion: apps/v1beta2kind: Deploymentmetadata:  name: myappspec:  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我可以看到該文件。如果我使用編輯 configmapkubectl 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 中)嗎?
查看完整描述

2 回答

?
白豬掌柜的

TA貢獻1893條經驗 獲得超10個贊

您可能會遇到這樣的問題:

當 ConfigMap 發生變化時,它包含的配置文件的真實路徑也發生了變化,但這有點被 2 級符號鏈接“隱藏”了:[..]

因此,您似乎需要遵循符號鏈接鏈并觀察它。由于您的應用程序是用 編寫的,go您可以直接使用,因為添加了WatchConfig 和 Kubernetesspf13/viper功能。

或者,您可以通過 Kubernetes API 獲得有關ConfigMap 更改的通知。這很可能需要預先配置一些訪問規則。


查看完整回答
反對 回復 2023-06-01
?
烙印99

TA貢獻1829條經驗 獲得超13個贊

聽起來Reloader就是您要找的那個。它將監視 configmap/secret 并更新與其相關的部署。



查看完整回答
反對 回復 2023-06-01
  • 2 回答
  • 0 關注
  • 138 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號