@@ -270,8 +270,16 @@ func (r *RayClusterReconciler) Reconcile(ctx context.Context, req ctrl.Request)
270270 // - First try to get the ODH / RHOAI application namespace from the DSCInitialization
271271 // - Or fallback to the well-known defaults
272272 // add check if running on openshift or vanilla kubernetes
273+ kubeRayNamespace , err := r .getKubeRayOperatorNamespace (ctx )
274+ if err != nil {
275+ logger .Error (err , "Failed to get KubeRay operator namespace" )
276+
277+ return ctrl.Result {RequeueAfter : requeueTime }, err
278+ }
279+ logger .Info ("Detected KubeRay operator namespace" , "namespace" , kubeRayNamespace )
280+
273281 var kubeRayNamespaces []string
274- kubeRayNamespaces = []string {kubeRayDefaultNamespace }
282+ kubeRayNamespaces = []string {kubeRayNamespace }
275283
276284 if r .IsOpenShift {
277285 dsci := & dsciv1.DSCInitialization {}
@@ -287,7 +295,7 @@ func (r *RayClusterReconciler) Reconcile(ctx context.Context, req ctrl.Request)
287295
288296 }
289297
290- _ , err : = r .kubeClient .NetworkingV1 ().NetworkPolicies (cluster .Namespace ).Apply (ctx , desiredHeadNetworkPolicy (cluster , r .Config , kubeRayNamespaces ), metav1.ApplyOptions {FieldManager : controllerName , Force : true })
298+ _ , err = r .kubeClient .NetworkingV1 ().NetworkPolicies (cluster .Namespace ).Apply (ctx , desiredHeadNetworkPolicy (cluster , r .Config , kubeRayNamespaces ), metav1.ApplyOptions {FieldManager : controllerName , Force : true })
291299 if err != nil {
292300 logger .Error (err , "Failed to update NetworkPolicy" )
293301 }
@@ -319,6 +327,32 @@ func isMTLSEnabled(cfg *config.KubeRayConfiguration) bool {
319327 return cfg == nil || ptr .Deref (cfg .MTLSEnabled , true )
320328}
321329
330+ // getKubeRayOperatorNamespace tries to get the namespace of the KubeRay operator
331+ func (r * RayClusterReconciler ) getKubeRayOperatorNamespace (ctx context.Context ) (string , error ) {
332+ logger := ctrl .LoggerFrom (ctx )
333+
334+ pods , err := r .kubeClient .CoreV1 ().Pods ("" ).List (context .TODO (), metav1.ListOptions {
335+ LabelSelector : "app.kubernetes.io/component=kuberay-operator" ,
336+ })
337+ if err != nil {
338+ logger .Error (err , "failed to get kuberay-operator namespace" )
339+
340+ return kubeRayDefaultNamespace , err
341+ }
342+
343+ if len (pods .Items ) == 0 {
344+ logger .Info (
345+ "No kuberay-operator pods found, using default kuberay-operator namespace" ,
346+ "namespace" ,
347+ kubeRayDefaultNamespace ,
348+ )
349+
350+ return kubeRayDefaultNamespace , nil
351+ }
352+
353+ return pods .Items [0 ].Namespace , nil
354+ }
355+
322356func isRayClusterSuspended (cluster * rayv1.RayCluster ) bool {
323357 return cluster .Spec .Suspend != nil && ptr .Deref (cluster .Spec .Suspend , false )
324358}
@@ -549,8 +583,8 @@ func desiredHeadNetworkPolicy(cluster *rayv1.RayCluster, cfg *config.KubeRayConf
549583 ),
550584 networkingv1ac .NetworkPolicyIngressRule ().
551585 WithPorts (
552- networkingv1ac .NetworkPolicyPort ().WithProtocol (corev1 .ProtocolTCP ).WithPort (intstr .FromInt (10001 )),
553- networkingv1ac .NetworkPolicyPort ().WithProtocol (corev1 .ProtocolTCP ).WithPort (intstr .FromInt (8265 )),
586+ networkingv1ac .NetworkPolicyPort ().WithProtocol (corev1 .ProtocolTCP ).WithPort (intstr .FromInt32 (10001 )),
587+ networkingv1ac .NetworkPolicyPort ().WithProtocol (corev1 .ProtocolTCP ).WithPort (intstr .FromInt32 (8265 )),
554588 ).WithFrom (
555589 networkingv1ac .NetworkPolicyPeer ().WithPodSelector (metav1ac .LabelSelector ()),
556590 ),
@@ -564,12 +598,12 @@ func desiredHeadNetworkPolicy(cluster *rayv1.RayCluster, cfg *config.KubeRayConf
564598 WithOperator (metav1 .LabelSelectorOpIn ).
565599 WithValues (kubeRayNamespaces ... )))).
566600 WithPorts (
567- networkingv1ac .NetworkPolicyPort ().WithProtocol (corev1 .ProtocolTCP ).WithPort (intstr .FromInt (8265 )),
568- networkingv1ac .NetworkPolicyPort ().WithProtocol (corev1 .ProtocolTCP ).WithPort (intstr .FromInt (10001 )),
601+ networkingv1ac .NetworkPolicyPort ().WithProtocol (corev1 .ProtocolTCP ).WithPort (intstr .FromInt32 (8265 )),
602+ networkingv1ac .NetworkPolicyPort ().WithProtocol (corev1 .ProtocolTCP ).WithPort (intstr .FromInt32 (10001 )),
569603 ),
570604 networkingv1ac .NetworkPolicyIngressRule ().
571605 WithPorts (
572- networkingv1ac .NetworkPolicyPort ().WithProtocol (corev1 .ProtocolTCP ).WithPort (intstr .FromInt (8080 )),
606+ networkingv1ac .NetworkPolicyPort ().WithProtocol (corev1 .ProtocolTCP ).WithPort (intstr .FromInt32 (8080 )),
573607 ).
574608 WithFrom (
575609 networkingv1ac .NetworkPolicyPeer ().WithNamespaceSelector (metav1ac .LabelSelector ().
0 commit comments