K 8 SにおけるConfigMap更新の方式

1491 ワード

最近のプロジェクトでは、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