Skip to content

Commit 35e76cb

Browse files
szaheropenshift-merge-bot[bot]
authored andcommitted
Auto-Detect kuberay-operator namespace
Enable auto-detection of the namespace where kuberay-operator is deployed so we can enable network traffic between raycluster namespace and kuberay-operator namespace. Signed-off-by: Saad Zaher <[email protected]>
1 parent bebce01 commit 35e76cb

File tree

1 file changed

+41
-7
lines changed

1 file changed

+41
-7
lines changed

pkg/controllers/raycluster_controller.go

+41-7
Original file line numberDiff line numberDiff line change
@@ -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+
322356
func 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

Comments
 (0)