我有一个控制器,它协调'foo‘命名空间中的MyKind自定义资源。在协调循环中,它在‘MyDeployment’名称空间中创建一个部署栏。我想知道如何在'bar‘命名空间中创建的MyDeployment上设置监视,该命名空间与自定义资源所在的命名空间('foo')不同。
我尝试使用以下命令设置我的管理器,但似乎不起作用,因为我试图监视的部署位于不同的名称空间中,因此控制器无法接收部署上的CRUD操作的任何事件。
return controllerruntime.NewControllerManagedBy(mgr).
For(&v1alpha1.MyKind{}).
Owns(&appsv1.Deployment{}).
Complete(r)
}是否有任何自定义监视,我可以用来配置我的控制器,以便接收不同命名空间中部署的事件。
注意:我尝试过handler.EnqueueRequestsFromMapFunc,它还可以协调同一名称空间中的种类。
发布于 2020-12-01 04:36:35
您可以通过在创建ctrl.Options{}对象时传入该对象,在管理器选项中指定名称空间。
namespace := "namespace1,namespace2"
options := ctrl.Options{
.
.
.
Namespace: cache.MultiNamespacedCacheBuilder(strings.Split(namespace, ","))
}
mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), options)https://stackoverflow.com/questions/65079895
复制相似问题