在main.go中,manager.New时,将namespace参数修改成空。
在types.go文件中,修改scope为Cluster.
operator-sdk generate crds
将rbac从role修改成clusterrole,rolebinding修改成clusterrolebind。
将operator.yaml中的WATCH_NAMESPACE修改成空,然后就可以重新编译测试了。需要注意,代码中使用WATCH_NAMESPACE的地方都需要修改。并确保修改获取cluster-scoped的obj的相关代码。
当crd是cluster-scoped时,cr.Namespace会变成空,这部分需要特殊处理。
https://developers.redhat.com/blog/2020/06/26/migrating-a-namespace-scoped-operator-to-a-cluster-scoped-operator/
LEo at 12:12