K8S中ConfigMap更新的方式

最近的項目中,需要監控ConfigMap數據變化,然後通過grpc調用相應的接口通知業務系統發生變化。
首先我創建了另一個ConfigMap, 然後將它掛載到系統的/config目錄下,然後監控這個目錄的變化,
但發現我需要的某一個文件(比如db.properties)發生了修改, 則通知業務系統進行更新,

	if ev.Op&fsnotify.Write == fsnotify.Write {
						log.Println("寫入文件 : ", ev.Name)
						var fileName = path.Base(ev.Name)
						if fileName == "db.properties" {
							log.Println("start call switchDB ")
							switchDB()
							log.Println("end call switchDB ")
						}
					}

當我把程序集成到docker鏡像中後,通過rancher修改了ConfigMap, 程序什麼也沒有發生,沒有任何調用Log,
但實際上通過cat /config/db.properties文件內容已經發生了變化,真是一個奇怪的情況,然後我打印了所有的目錄變動記錄,
發現configmap是用了符號鏈接,目錄結構如下

drwxr-xr-x. 2 root root 27 Jun 25 08:47 ..2020_06_25_08_47_52.504274213
lrwxrwxrwx. 1 root root 31 Jun 25 08:47 ..data -> ..2020_06_25_08_47_52.504274213
lrwxrwxrwx. 1 root root 20 Jun 25 06:21 db.properties -> ..data/db.properties

當我們修改ConfigMap後, 然後重新創建新的目錄(以時間命名的),最後將…data的符號鏈接
重新指向新創建的目錄,最後刪除原目錄,對於我們最終使用的文件db.properties則沒有任何變化。
以下是一次調用的過程

2020/06/25 08:47:52 創建文件 :  /config/..2020_06_25_08_47_52.504274213
2020/06/25 08:47:52 修改權限 :  /config/..2020_06_25_08_47_52.504274213
2020/06/25 08:47:52 重命名文件 :  /config/..data_tmp
2020/06/25 08:47:52 創建文件 :  /config/..data
2020/06/25 08:47:52 刪除文件 :  /config/..2020_06_25_08_45_30.890655308
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章