@@ -126,6 +126,11 @@ func (r *RayClusterReconciler) Reconcile(ctx context.Context, req ctrl.Request)
126126 return ctrl.Result {}, client .IgnoreNotFound (err )
127127 }
128128
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+
129134 if cluster .ObjectMeta .DeletionTimestamp .IsZero () {
130135 if ! controllerutil .ContainsFinalizer (cluster , oAuthFinalizer ) {
131136 logger .Info ("Add a finalizer" , "finalizer" , oAuthFinalizer )
@@ -304,7 +309,7 @@ func isMTLSEnabled(cfg *config.KubeRayConfiguration) bool {
304309}
305310
306311func 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" )
308313}
309314
310315func desiredOAuthClusterRoleBinding (cluster * rayv1.RayCluster ) * rbacv1ac.ClusterRoleBindingApplyConfiguration {
@@ -326,7 +331,7 @@ func desiredOAuthClusterRoleBinding(cluster *rayv1.RayCluster) *rbacv1ac.Cluster
326331}
327332
328333func oauthServiceAccountNameFromCluster (cluster * rayv1.RayCluster ) string {
329- return cluster .Name + "-oauth-proxy"
334+ return rccUniqueName ( cluster .Name + "-oauth-proxy" )
330335}
331336
332337func desiredServiceAccount (cluster * rayv1.RayCluster ) * corev1ac.ServiceAccountApplyConfiguration {
@@ -363,11 +368,11 @@ func desiredClusterRoute(cluster *rayv1.RayCluster) *routev1ac.RouteApplyConfigu
363368}
364369
365370func oauthServiceNameFromCluster (cluster * rayv1.RayCluster ) string {
366- return cluster .Name + "-oauth"
371+ return rccUniqueName ( cluster .Name + "-oauth" )
367372}
368373
369374func oauthServiceTLSSecretName (cluster * rayv1.RayCluster ) string {
370- return cluster .Name + "-proxy-tls-secret"
375+ return rccUniqueName ( cluster .Name + "-proxy-tls-secret" )
371376}
372377
373378func desiredOAuthService (cluster * rayv1.RayCluster ) * corev1ac.ServiceApplyConfiguration {
@@ -389,7 +394,7 @@ func desiredOAuthService(cluster *rayv1.RayCluster) *corev1ac.ServiceApplyConfig
389394}
390395
391396func oauthSecretNameFromCluster (cluster * rayv1.RayCluster ) string {
392- return cluster .Name + "-oauth-config"
397+ return rccUniqueName ( cluster .Name + "-oauth-config" )
393398}
394399
395400// desiredOAuthSecret defines the desired OAuth secret object
@@ -406,7 +411,7 @@ func desiredOAuthSecret(cluster *rayv1.RayCluster, cookieSalt string) *corev1ac.
406411}
407412
408413func caSecretNameFromCluster (cluster * rayv1.RayCluster ) string {
409- return " ca-secret-" + cluster . Name
414+ return rccUniqueName ( cluster . Name + "- ca-secret" )
410415}
411416
412417func desiredCASecret (cluster * rayv1.RayCluster , key , cert []byte ) * corev1ac.SecretApplyConfiguration {
@@ -463,7 +468,9 @@ func generateCACertificate() ([]byte, []byte, error) {
463468}
464469
465470func 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+ ).
467474 WithLabels (map [string ]string {RayClusterNameLabel : cluster .Name }).
468475 WithSpec (networkingv1ac .NetworkPolicySpec ().
469476 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
484491 if ptr .Deref (cfg .MTLSEnabled , true ) {
485492 allSecuredPorts = append (allSecuredPorts , networkingv1ac .NetworkPolicyPort ().WithProtocol (corev1 .ProtocolTCP ).WithPort (intstr .FromInt (10001 )))
486493 }
487- return networkingv1ac .NetworkPolicy (cluster .Name + "-head" , cluster .Namespace ).
494+ return networkingv1ac .NetworkPolicy (rccUniqueName ( cluster .Name + "-head" ) , cluster .Namespace ).
488495 WithLabels (map [string ]string {RayClusterNameLabel : cluster .Name }).
489496 WithSpec (networkingv1ac .NetworkPolicySpec ().
490497 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 {
619626
620627 return controller .Complete (r )
621628}
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