Skip to content

Commit bce6909

Browse files
Ygnasopenshift-merge-bot[bot]
authored andcommitted
Add a check for head pod imagePullSecrets
1 parent 6ccf23e commit bce6909

File tree

1 file changed

+51
-1
lines changed

1 file changed

+51
-1
lines changed

pkg/controllers/raycluster_controller.go

+51-1
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,10 @@ func (r *RayClusterReconciler) Reconcile(ctx context.Context, req ctrl.Request)
213213
return ctrl.Result{RequeueAfter: requeueTime}, err
214214
}
215215

216+
if err := r.deleteHeadPodIfMissingImagePullSecrets(ctx, cluster); err != nil {
217+
return ctrl.Result{RequeueAfter: requeueTime}, err
218+
}
219+
216220
_, err = r.kubeClient.RbacV1().ClusterRoleBindings().Apply(ctx, desiredOAuthClusterRoleBinding(cluster), metav1.ApplyOptions{FieldManager: controllerName, Force: true})
217221
if err != nil {
218222
logger.Error(err, "Failed to update OAuth ClusterRoleBinding")
@@ -470,6 +474,7 @@ func generateCACertificate() ([]byte, []byte, error) {
470474

471475
return privateKeyPem, certPem, nil
472476
}
477+
473478
func desiredWorkersNetworkPolicy(cluster *rayv1.RayCluster) *networkingv1ac.NetworkPolicyApplyConfiguration {
474479
return networkingv1ac.NetworkPolicy(cluster.Name+"-workers", cluster.Namespace).
475480
WithLabels(map[string]string{RayClusterNameLabel: cluster.Name}).
@@ -486,6 +491,7 @@ func desiredWorkersNetworkPolicy(cluster *rayv1.RayCluster) *networkingv1ac.Netw
486491
metav1ac.OwnerReference().WithUID(cluster.UID).WithName(cluster.Name).WithKind(cluster.Kind).WithAPIVersion(cluster.APIVersion).WithController(true),
487492
)
488493
}
494+
489495
func desiredHeadNetworkPolicy(cluster *rayv1.RayCluster, cfg *config.KubeRayConfiguration, kubeRayNamespaces []string) *networkingv1ac.NetworkPolicyApplyConfiguration {
490496
allSecuredPorts := []*networkingv1ac.NetworkPolicyPortApplyConfiguration{
491497
networkingv1ac.NetworkPolicyPort().WithProtocol(corev1.ProtocolTCP).WithPort(intstr.FromInt(8443)),
@@ -544,6 +550,49 @@ func desiredHeadNetworkPolicy(cluster *rayv1.RayCluster, cfg *config.KubeRayConf
544550
)
545551
}
546552

553+
func (r *RayClusterReconciler) deleteHeadPodIfMissingImagePullSecrets(ctx context.Context, cluster *rayv1.RayCluster) error {
554+
serviceAccount, err := r.kubeClient.CoreV1().ServiceAccounts(cluster.Namespace).Get(ctx, oauthServiceAccountNameFromCluster(cluster), metav1.GetOptions{})
555+
if err != nil {
556+
return fmt.Errorf("failed to get OAuth ServiceAccount: %w", err)
557+
}
558+
559+
headPod, err := getHeadPod(ctx, r, cluster)
560+
if err != nil {
561+
return fmt.Errorf("failed to get head pod: %w", err)
562+
}
563+
564+
if headPod == nil {
565+
return nil
566+
}
567+
568+
missingSecrets := map[string]bool{}
569+
for _, secret := range serviceAccount.ImagePullSecrets {
570+
missingSecrets[secret.Name] = true
571+
}
572+
for _, secret := range headPod.Spec.ImagePullSecrets {
573+
delete(missingSecrets, secret.Name)
574+
}
575+
if len(missingSecrets) > 0 {
576+
if err := r.kubeClient.CoreV1().Pods(headPod.Namespace).Delete(ctx, headPod.Name, metav1.DeleteOptions{}); err != nil {
577+
return fmt.Errorf("failed to delete head pod: %w", err)
578+
}
579+
}
580+
return nil
581+
}
582+
583+
func getHeadPod(ctx context.Context, r *RayClusterReconciler, cluster *rayv1.RayCluster) (*corev1.Pod, error) {
584+
podList, err := r.kubeClient.CoreV1().Pods(cluster.Namespace).List(ctx, metav1.ListOptions{
585+
LabelSelector: fmt.Sprintf("ray.io/node-type=head,ray.io/cluster=%s", cluster.Name),
586+
})
587+
if err != nil {
588+
return nil, err
589+
}
590+
if len(podList.Items) > 0 {
591+
return &podList.Items[0], nil
592+
}
593+
return nil, nil
594+
}
595+
547596
// SetupWithManager sets up the controller with the Manager.
548597
func (r *RayClusterReconciler) SetupWithManager(mgr ctrl.Manager) error {
549598
r.kubeClient = kubernetes.NewForConfigOrDie(mgr.GetConfig())
@@ -577,7 +626,8 @@ func (r *RayClusterReconciler) SetupWithManager(mgr ctrl.Manager) error {
577626
NamespacedName: client.ObjectKey{
578627
Name: name,
579628
Namespace: namespace,
580-
}}}
629+
},
630+
}}
581631
}),
582632
)
583633
if r.IsOpenShift {

0 commit comments

Comments
 (0)