@@ -126,6 +126,11 @@ func (r *RayClusterReconciler) Reconcile(ctx context.Context, req ctrl.Request)
126
126
return ctrl.Result {}, client .IgnoreNotFound (err )
127
127
}
128
128
129
+ if err := deleteDeprecatedObjects (ctx , r , cluster ); err != nil {
130
+ logger .Error (err , "Failed to delete deprecated objects" )
131
+ return ctrl.Result {RequeueAfter : requeueTime }, err
132
+ }
133
+
129
134
if cluster .ObjectMeta .DeletionTimestamp .IsZero () {
130
135
if ! controllerutil .ContainsFinalizer (cluster , oAuthFinalizer ) {
131
136
logger .Info ("Add a finalizer" , "finalizer" , oAuthFinalizer )
@@ -304,7 +309,7 @@ func isMTLSEnabled(cfg *config.KubeRayConfiguration) bool {
304
309
}
305
310
306
311
func crbNameFromCluster (cluster * rayv1.RayCluster ) string {
307
- return cluster .Name + "-" + cluster .Namespace + "-auth" // NOTE: potential naming conflicts ie {name: foo, ns: bar-baz} and {name: foo-bar, ns: baz}
312
+ return RCCUniqueName ( cluster .Name + "-" + cluster .Namespace + "-auth" )
308
313
}
309
314
310
315
func desiredOAuthClusterRoleBinding (cluster * rayv1.RayCluster ) * rbacv1ac.ClusterRoleBindingApplyConfiguration {
@@ -326,7 +331,7 @@ func desiredOAuthClusterRoleBinding(cluster *rayv1.RayCluster) *rbacv1ac.Cluster
326
331
}
327
332
328
333
func oauthServiceAccountNameFromCluster (cluster * rayv1.RayCluster ) string {
329
- return cluster .Name + "-oauth-proxy"
334
+ return RCCUniqueName ( cluster .Name + "-oauth-proxy" )
330
335
}
331
336
332
337
func desiredServiceAccount (cluster * rayv1.RayCluster ) * corev1ac.ServiceAccountApplyConfiguration {
@@ -363,11 +368,11 @@ func desiredClusterRoute(cluster *rayv1.RayCluster) *routev1ac.RouteApplyConfigu
363
368
}
364
369
365
370
func oauthServiceNameFromCluster (cluster * rayv1.RayCluster ) string {
366
- return cluster .Name + "-oauth"
371
+ return RCCUniqueName ( cluster .Name + "-oauth" )
367
372
}
368
373
369
374
func oauthServiceTLSSecretName (cluster * rayv1.RayCluster ) string {
370
- return cluster .Name + "-proxy-tls-secret"
375
+ return RCCUniqueName ( cluster .Name + "-proxy-tls-secret" )
371
376
}
372
377
373
378
func desiredOAuthService (cluster * rayv1.RayCluster ) * corev1ac.ServiceApplyConfiguration {
@@ -389,7 +394,7 @@ func desiredOAuthService(cluster *rayv1.RayCluster) *corev1ac.ServiceApplyConfig
389
394
}
390
395
391
396
func oauthSecretNameFromCluster (cluster * rayv1.RayCluster ) string {
392
- return cluster .Name + "-oauth-config"
397
+ return RCCUniqueName ( cluster .Name + "-oauth-config" )
393
398
}
394
399
395
400
// desiredOAuthSecret defines the desired OAuth secret object
@@ -406,7 +411,7 @@ func desiredOAuthSecret(cluster *rayv1.RayCluster, cookieSalt string) *corev1ac.
406
411
}
407
412
408
413
func caSecretNameFromCluster (cluster * rayv1.RayCluster ) string {
409
- return " ca-secret-" + cluster . Name
414
+ return RCCUniqueName ( cluster . Name + "- ca-secret" )
410
415
}
411
416
412
417
func desiredCASecret (cluster * rayv1.RayCluster , key , cert []byte ) * corev1ac.SecretApplyConfiguration {
@@ -463,7 +468,9 @@ func generateCACertificate() ([]byte, []byte, error) {
463
468
}
464
469
465
470
func desiredWorkersNetworkPolicy (cluster * rayv1.RayCluster ) * networkingv1ac.NetworkPolicyApplyConfiguration {
466
- return networkingv1ac .NetworkPolicy (cluster .Name + "-workers" , cluster .Namespace ).
471
+ return networkingv1ac .NetworkPolicy (
472
+ RCCUniqueName (cluster .Name + "-workers" ), cluster .Namespace ,
473
+ ).
467
474
WithLabels (map [string ]string {RayClusterNameLabel : cluster .Name }).
468
475
WithSpec (networkingv1ac .NetworkPolicySpec ().
469
476
WithPodSelector (metav1ac .LabelSelector ().WithMatchLabels (map [string ]string {"ray.io/cluster" : cluster .Name , "ray.io/node-type" : "worker" })).
@@ -484,7 +491,7 @@ func desiredHeadNetworkPolicy(cluster *rayv1.RayCluster, cfg *config.KubeRayConf
484
491
if ptr .Deref (cfg .MTLSEnabled , true ) {
485
492
allSecuredPorts = append (allSecuredPorts , networkingv1ac .NetworkPolicyPort ().WithProtocol (corev1 .ProtocolTCP ).WithPort (intstr .FromInt (10001 )))
486
493
}
487
- return networkingv1ac .NetworkPolicy (cluster .Name + "-head" , cluster .Namespace ).
494
+ return networkingv1ac .NetworkPolicy (RCCUniqueName ( cluster .Name + "-head" ) , cluster .Namespace ).
488
495
WithLabels (map [string ]string {RayClusterNameLabel : cluster .Name }).
489
496
WithSpec (networkingv1ac .NetworkPolicySpec ().
490
497
WithPodSelector (metav1ac .LabelSelector ().WithMatchLabels (map [string ]string {"ray.io/cluster" : cluster .Name , "ray.io/node-type" : "head" })).
@@ -619,3 +626,47 @@ func (r *RayClusterReconciler) SetupWithManager(mgr ctrl.Manager) error {
619
626
620
627
return controller .Complete (r )
621
628
}
629
+
630
+ func RCCUniqueName (s string ) string {
631
+ return s + "-" + seededHash (controllerName , s )
632
+ }
633
+
634
+ func deleteDeprecatedObjects (ctx context.Context , r * RayClusterReconciler , cluster * rayv1.RayCluster ) error {
635
+ // Delete deprecated objects if they exist. These have all been replace by objects with names generated by
636
+ // rccUniqueName. This is a temporary measure to clean up old objects that were created before the name generation
637
+ // TODO: DELETE THIS FUNCTION AFTER A FEW RELEASES. Current release = v1.7.0 (remove in 1.9.0 or 1.10.0)
638
+ logger := ctrl .LoggerFrom (ctx )
639
+ if err := r .kubeClient .CoreV1 ().Secrets (cluster .Namespace ).Delete (ctx , cluster .Name + "-oauth-config" , metav1.DeleteOptions {}); err != nil && ! errors .IsNotFound (err ) {
640
+ logger .Error (err , "Failed to delete oauth secret" )
641
+ return err
642
+ }
643
+ if err := r .kubeClient .CoreV1 ().Secrets (cluster .Namespace ).Delete (ctx , "ca-secret-" + cluster .Name , metav1.DeleteOptions {}); err != nil && ! errors .IsNotFound (err ) {
644
+ logger .Error (err , "Failed to delete ca secret" )
645
+ return err
646
+ }
647
+ if err := r .kubeClient .CoreV1 ().ServiceAccounts (cluster .Namespace ).Delete (ctx , cluster .Name + "-oauth-proxy" , metav1.DeleteOptions {}); err != nil && ! errors .IsNotFound (err ) {
648
+ logger .Error (err , "Failed to delete SA" )
649
+ return err
650
+ }
651
+ if err := r .kubeClient .RbacV1 ().ClusterRoleBindings ().Delete (ctx , cluster .Name + "-" + cluster .Namespace + "-auth" , metav1.DeleteOptions {}); err != nil && ! errors .IsNotFound (err ) {
652
+ logger .Error (err , "Failed to delete CRB" )
653
+ return err
654
+ }
655
+ if err := r .kubeClient .CoreV1 ().Services (cluster .Namespace ).Delete (ctx , cluster .Name + "-oauth" , metav1.DeleteOptions {}); err != nil && ! errors .IsNotFound (err ) {
656
+ logger .Error (err , "Failed to delete service" )
657
+ return err
658
+ }
659
+ if err := r .kubeClient .CoreV1 ().Secrets (cluster .Namespace ).Delete (ctx , cluster .Name + "-proxy-tls-secret" , metav1.DeleteOptions {}); err != nil && ! errors .IsNotFound (err ) {
660
+ logger .Error (err , "Failed to delete tls secret" )
661
+ return err
662
+ }
663
+ if err := r .kubeClient .NetworkingV1 ().NetworkPolicies (cluster .Namespace ).Delete (ctx , cluster .Name + "-workers" , metav1.DeleteOptions {}); err != nil && ! errors .IsNotFound (err ) {
664
+ logger .Error (err , "Failed to delete worker nwp" )
665
+ return err
666
+ }
667
+ if err := r .kubeClient .NetworkingV1 ().NetworkPolicies (cluster .Namespace ).Delete (ctx , cluster .Name + "-head" , metav1.DeleteOptions {}); err != nil && ! errors .IsNotFound (err ) {
668
+ logger .Error (err , "Failed to delete head nwp" )
669
+ return err
670
+ }
671
+ return nil
672
+ }
0 commit comments