Repository: kubernetes-sigs/kueue

Issue:
[flaky test] ManageJobsWithoutQueueName when manageJobsWithoutQueueName=true and LocalQueueDefaulting=false should suspend a job
/kind flake 

**What happened**:
failure https://prow.k8s.io/view/gs/kubernetes-ci-logs/pr-logs/pull/kubernetes-sigs_kueue/7899/pull-kueue-test-e2e-customconfigs-main/1993718563780694016
**What you expected to happen**:
no fail
**How to reproduce it (as minimally and precisely as possible)**:
ci
**Anything else we need to know?**:
```
End To End Custom Configs handling Suite: kindest/node:v1.34.0: [It] ManageJobsWithoutQueueName when manageJobsWithoutQueueName=true and LocalQueueDefaulting=false should suspend a job expand_less	51s
{Expected success, but got an error:
    <*errors.StatusError | 0xc000bfa1e0>: 
    conversion webhook for kueue.x-k8s.io/v1beta1, Kind=LocalQueue failed: Post "https://kueue-webhook-service.kueue-system.svc:443/convert?timeout=30s": EOF
    {
        ErrStatus: {
            TypeMeta: {Kind: "", APIVersion: ""},
            ListMeta: {
                SelfLink: "",
                ResourceVersion: "",
                Continue: "",
                RemainingItemCount: nil,
            },
            Status: "Failure",
            Message: "conversion webhook for kueue.x-k8s.io/v1beta1, Kind=LocalQueue failed: Post \"https://kueue-webhook-service.kueue-system.svc:443/convert?timeout=30s\": EOF",
            Reason: "",
            Details: nil,
            Code: 500,
        },
    } failed [FAILED] Expected success, but got an error:
    <*errors.StatusError | 0xc000bfa1e0>: 
    conversion webhook for kueue.x-k8s.io/v1beta1, Kind=LocalQueue failed: Post "https://kueue-webhook-service.kueue-system.svc:443/convert?timeout=30s": EOF
    {
        ErrStatus: {
            TypeMeta: {Kind: "", APIVersion: ""},
            ListMeta: {
                SelfLink: "",
                ResourceVersion: "",
                Continue: "",
                RemainingItemCount: nil,
            },
            Status: "Failure",
            Message: "conversion webhook for kueue.x-k8s.io/v1beta1, Kind=LocalQueue failed: Post \"https://kueue-webhook-service.kueue-system.svc:443/convert?timeout=30s\": EOF",
            Reason: "",
            Details: nil,
            Code: 500,
        },
    }
In [AfterEach] at: /home/prow/go/src/sigs.k8s.io/kueue/test/e2e/customconfigs/managejobswithoutqueuename_test.go:86 @ 11/26/25 16:41:21.303
}
```

Discussion:
@mimowo: I have analyzed the logs, and I think the reason is that while the Deployment is ready, the old pods may be still terminating, and sometimes receive still traffic, leading to errors. I think we should wait for `Status.TerminatingReplicas` to be 0.

To try to confirm this I looked at the kubelet logs around of the time of failure: `16:41:21`: https://storage.googleapis.com/kubernetes-ci-logs/pr-logs/pull/kubernetes-sigs_kueue/7899/pull-kueue-test-e2e-customconfigs-main/1993718563780694016/artifacts/run-test-e2e-customconfigs-1.34.0/kind-worker2/kubelet.log

here we see the order of events:
- `16:41:21.009593` (kubelet)  the new Pod `kueue-controller-manager-bfc875747-v4pjr` is Ready
- `16:41:21.037487` (kubelet) the old Pod `kueue-controller-manager-579dfb7c48-8ddb8` receives delete
- `16:41:21.30` (test code) reports failure
- `16:41:22.043663` (kubelet)  the old Pod termination completes@mimowo: /assign

Solution patch:
diff --git a/.github/workflows/update-versions-with-renovate.yaml b/.github/workflows/update-versions-with-renovate.yaml
index 966de6f73..84dd88333 100644
--- a/.github/workflows/update-versions-with-renovate.yaml
+++ b/.github/workflows/update-versions-with-renovate.yaml
@@ -1,10 +1,14 @@
-name: update-versions-with-renovate
+name: Update versions with renovate
 
 on:
   schedule:
     # Once a week
     - cron: '0 0 * * 0'
   workflow_dispatch:
+# TODO: remove once permission issue is resolved
+  pull_request:
+    branches:
+      - main
 
 jobs:
   renovate:
@@ -13,14 +17,15 @@ jobs:
     permissions:
       contents: write
       pull-requests: write
+      issues: write
     steps:
       - name: checkout
         uses: actions/checkout@v6
-      - name: run renovate (dry-run on PRs)
+      - name: run renovate
         uses: renovatebot/github-action@v44.0.4
         with:
           token: ${{ secrets.GITHUB_TOKEN }}
           configurationFile: renovate.json
         env:
-          LOG_LEVEL: info
+          LOG_LEVEL: debug
           RENOVATE_REPOSITORIES: ${{ github.repository }}



Test patch:
diff --git a/test/util/e2e.go b/test/util/e2e.go
index bd0f60718..d78ccf0a9 100644
--- a/test/util/e2e.go
+++ b/test/util/e2e.go
@@ -369,6 +369,18 @@ func RestartKueueController(ctx context.Context, k8sClient client.Client, kindCl
 	kcmKey := types.NamespacedName{Namespace: kueueNS, Name: "kueue-controller-manager"}
 	rolloutOperatorDeployment(ctx, k8sClient, kcmKey, kindClusterName)
 	WaitForKueueAvailabilityNoRestartCountCheck(ctx, k8sClient)
+	waitForDeploymentWithOnlyAvailableReplicas(ctx, k8sClient, kcmKey)
+}
+
+func waitForDeploymentWithOnlyAvailableReplicas(ctx context.Context, k8sClient client.Client, key types.NamespacedName) {
+	deployment := &appsv1.Deployment{}
+	waitForAvailableStart := time.Now()
+	ginkgo.By(fmt.Sprintf("Waiting for deployment to have only available replicas: %q", key))
+	gomega.EventuallyWithOffset(2, func(g gomega.Gomega) {
+		g.Expect(k8sClient.Get(ctx, key, deployment)).To(gomega.Succeed())
+		g.Expect(deployment.Status.Replicas).To(gomega.Equal(deployment.Status.AvailableReplicas))
+	}, LongTimeout, Interval).Should(gomega.Succeed())
+	ginkgo.GinkgoLogr.Info("Deployment has only available replicas in the cluster", "deployment", key, "waitingTime", time.Since(waitForAvailableStart))
 }
 
 func WaitForActivePodsAndTerminate(ctx context.Context, k8sClient client.Client, restClient *rest.RESTClient, cfg *rest.Config, namespace string, activePodsCount, exitCode int, opts ...client.ListOption) {