@@ -22,6 +22,8 @@ import (
22
22
"crypto/sha1"
23
23
"encoding/base64"
24
24
25
+ networkingv1 "k8s.io/api/networking/v1"
26
+
25
27
rayv1 "github.com/ray-project/kuberay/ray-operator/apis/ray/v1"
26
28
27
29
corev1 "k8s.io/api/core/v1"
@@ -37,6 +39,8 @@ import (
37
39
ctrl "sigs.k8s.io/controller-runtime"
38
40
"sigs.k8s.io/controller-runtime/pkg/client"
39
41
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
42
+ "sigs.k8s.io/controller-runtime/pkg/handler"
43
+ "sigs.k8s.io/controller-runtime/pkg/reconcile"
40
44
41
45
routev1 "github.com/openshift/api/route/v1"
42
46
routeapply "github.com/openshift/client-go/route/applyconfigurations/route/v1"
@@ -75,12 +79,12 @@ var (
75
79
// +kubebuilder:rbac:groups=ray.io,resources=rayclusters,verbs=get;list;watch;create;update;patch;delete
76
80
// +kubebuilder:rbac:groups=ray.io,resources=rayclusters/status,verbs=get;update;patch
77
81
// +kubebuilder:rbac:groups=ray.io,resources=rayclusters/finalizers,verbs=update
78
- // +kubebuilder:rbac:groups=route.openshift.io,resources=routes;routes/custom-host,verbs=get;create;update;patch;delete
79
- // +kubebuilder:rbac:groups=networking.k8s.io,resources=ingresses,verbs=get;create;update;patch;delete
80
- // +kubebuilder:rbac:groups=core,resources=secrets,verbs=get;create;patch;delete;get
81
- // +kubebuilder:rbac:groups=core,resources=services,verbs=get;create;update;patch;delete
82
- // +kubebuilder:rbac:groups=core,resources=serviceaccounts,verbs=get;create;update;patch;delete
83
- // +kubebuilder:rbac:groups=rbac.authorization.k8s.io,resources=clusterrolebindings,verbs=get;create;update;patch;delete
82
+ // +kubebuilder:rbac:groups=route.openshift.io,resources=routes;routes/custom-host,verbs=get;create;update;patch;delete;watch
83
+ // +kubebuilder:rbac:groups=networking.k8s.io,resources=ingresses,verbs=get;create;update;patch;delete;watch
84
+ // +kubebuilder:rbac:groups=core,resources=secrets,verbs=get;create;patch;delete;get;watch
85
+ // +kubebuilder:rbac:groups=core,resources=services,verbs=get;create;update;patch;delete;watch
86
+ // +kubebuilder:rbac:groups=core,resources=serviceaccounts,verbs=get;create;update;patch;delete;watch
87
+ // +kubebuilder:rbac:groups=rbac.authorization.k8s.io,resources=clusterrolebindings,verbs=get;create;update;patch;delete;watch
84
88
// +kubebuilder:rbac:groups=authentication.k8s.io,resources=tokenreviews,verbs=create;
85
89
// +kubebuilder:rbac:groups=authorization.k8s.io,resources=subjectaccessreviews,verbs=create;
86
90
@@ -220,7 +224,7 @@ func crbNameFromCluster(cluster *rayv1.RayCluster) string {
220
224
func desiredOAuthClusterRoleBinding (cluster * rayv1.RayCluster ) * rbacapply.ClusterRoleBindingApplyConfiguration {
221
225
return rbacapply .ClusterRoleBinding (
222
226
crbNameFromCluster (cluster )).
223
- WithLabels (map [string ]string {"ray.io/cluster-name" : cluster .Name }).
227
+ WithLabels (map [string ]string {"ray.io/cluster-name" : cluster .Name , "ray.io/cluster-namespace" : cluster . Namespace }).
224
228
WithSubjects (
225
229
rbacapply .Subject ().
226
230
WithKind ("ServiceAccount" ).
@@ -340,5 +344,19 @@ func (r *RayClusterReconciler) SetupWithManager(mgr ctrl.Manager) error {
340
344
return ctrl .NewControllerManagedBy (mgr ).
341
345
Named (controllerName ).
342
346
For (& rayv1.RayCluster {}).
347
+ Owns (& corev1.ServiceAccount {}).
348
+ Owns (& corev1.Service {}).
349
+ Owns (& corev1.Secret {}).
350
+ Owns (& routev1.Route {}).
351
+ Owns (& networkingv1.Ingress {}).
352
+ Watches (& rbacv1.ClusterRoleBinding {}, handler .EnqueueRequestsFromMapFunc (
353
+ func (c context.Context , o client.Object ) []reconcile.Request {
354
+ return []reconcile.Request {{
355
+ NamespacedName : client.ObjectKey {
356
+ Name : o .GetLabels ()["ray.io/cluster-name" ],
357
+ Namespace : o .GetLabels ()["ray.io/cluster-namespace" ],
358
+ }}}
359
+ }),
360
+ ).
343
361
Complete (r )
344
362
}
0 commit comments