@@ -23,6 +23,8 @@ import (
23
23
"encoding/base64"
24
24
"fmt"
25
25
26
+ networkingv1 "k8s.io/api/networking/v1"
27
+
26
28
rayv1 "github.com/ray-project/kuberay/ray-operator/apis/ray/v1"
27
29
28
30
corev1 "k8s.io/api/core/v1"
@@ -38,6 +40,8 @@ import (
38
40
ctrl "sigs.k8s.io/controller-runtime"
39
41
"sigs.k8s.io/controller-runtime/pkg/client"
40
42
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
43
+ "sigs.k8s.io/controller-runtime/pkg/handler"
44
+ "sigs.k8s.io/controller-runtime/pkg/reconcile"
41
45
42
46
routev1 "github.com/openshift/api/route/v1"
43
47
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
@@ -233,7 +237,7 @@ func crbNameFromCluster(cluster *rayv1.RayCluster) string {
233
237
func desiredOAuthClusterRoleBinding (cluster * rayv1.RayCluster ) * rbacapply.ClusterRoleBindingApplyConfiguration {
234
238
return rbacapply .ClusterRoleBinding (
235
239
crbNameFromCluster (cluster )).
236
- WithLabels (map [string ]string {"ray.io/cluster-name" : cluster .Name }).
240
+ WithLabels (map [string ]string {"ray.io/cluster-name" : cluster .Name , "ray.io/cluster-namespace" : cluster . Namespace }).
237
241
WithSubjects (
238
242
rbacapply .Subject ().
239
243
WithKind ("ServiceAccount" ).
@@ -350,5 +354,19 @@ func (r *RayClusterReconciler) SetupWithManager(mgr ctrl.Manager) error {
350
354
return ctrl .NewControllerManagedBy (mgr ).
351
355
Named (controllerName ).
352
356
For (& rayv1.RayCluster {}).
357
+ Owns (& corev1.ServiceAccount {}).
358
+ Owns (& corev1.Service {}).
359
+ Owns (& corev1.Secret {}).
360
+ Owns (& routev1.Route {}).
361
+ Owns (& networkingv1.Ingress {}).
362
+ Watches (& rbacv1.ClusterRoleBinding {}, handler .EnqueueRequestsFromMapFunc (
363
+ func (c context.Context , o client.Object ) []reconcile.Request {
364
+ return []reconcile.Request {{
365
+ NamespacedName : client.ObjectKey {
366
+ Name : o .GetLabels ()["ray.io/cluster-name" ],
367
+ Namespace : o .GetLabels ()["ray.io/cluster-namespace" ],
368
+ }}}
369
+ }),
370
+ ).
353
371
Complete (r )
354
372
}
0 commit comments