「WATCH_NAMESPACE」envから読み取って、監視する名前空間を理解するkubeビルダーを介して構築されたオペレーターがあります。これが現在のセットアップの仕組みです。
namespaces := os.Getenv("WATCH_NAMESPACE")
if strings.Contains(namespaces, ",") {
setupLog.Info("Operator will listen to the specific namespaces: " + namespaces)
options.NewCache = cache.MultiNamespacedCacheBuilder(strings.Split(namespaces, ","))
} else {
log.Info("Operator will listen only one namespace or all namespace: " + namespaces)
options.Namespace = namespaces
}
mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), options)
if err != nil {
log.Error(err, "unable to start manager")
os.Exit(1)
}
if err = (&dataplatformcontroller.DruidReconciler{
...
}
これはうまくいきます。しかし問題は、監視する新しい名前空間を追加する必要があるたびに、オペレーターを再起動する必要があることです。ここでの最良のオプションは、構成マップを監視し、毎回それを読み取ることだと思います。しかし、これをどのように進めればよいかわかりません。提案、ドキュメント、またはリンクは役に立ちます。