Commit Graph
2372 Commits
Author SHA1 Message Date
Amir Alavi 73bcc99a5e refactor(e2e): centralize kubevirt version from go.mod
Derive KUBEVIRT_VERSION in run-e2e-tests.sh from go.mod and pass it to
e2e tests via --kubevirt-version-tag so container disk images stay in sync.
2026-08-10 10:13:12 -04:00
kubernetes-prow[bot]andGitHub 82b96a392e Merge pull request #1910 from PKNaveen/myfeature
Updated Kubivert to latest v1.9.0
2026-08-10 14:12:10 +00:00
Amir Alavi 5c3469c3ff Bump kubevirt dependencies to v1.9.0
Bump KubeVirt dependencies to v1.9.0 in go.mod, go.sum, and vendor/.
Disable ImageVolume in e2e KubeVirt setup on k8s 1.34 only.

Signed-off-by: Amir Alavi <amiralavi7@gmail.com>
2026-08-10 09:32:41 -04:00
kubernetes-prow[bot]andGitHub 9d09c0d65f Merge pull request #1908 from sammedsingalkar09/master
security: bump grpc and cel-go to fix vulnerabilities
2026-08-09 19:40:00 +00:00
sammedsingalkar09andAmir Alavi 0b2a396ac1 fix vuln 2026-08-09 13:11:37 -04:00
kubernetes-prow[bot]andGitHub e08a32dfa8 Merge pull request #1911 from a7i/fix-e2e-lownodeutilization-metrics-timeout
fix(e2e): resolve LowNodeUtilization metrics timeout, test isolation, and runner resource exhaustion
2026-08-09 17:08:00 +00:00
Amir Alavi b5a214909c Fix e2e test descheduler deployment cleanup and KubeVirt live migration wait 2026-08-09 12:35:43 -04:00
Amir Alavi ec736d7140 fix(e2e): harden test suite isolation, resource usage, and leader election timing
- Isolate TestLiveMigrationInBackground into dedicated e2e-livemigration namespace with t.Cleanup teardown.
- Switch VMI containerdisk image from fedora (1.2GB, 512MB RAM) to cirros-container-disk-demo (12MB, 128MB RAM), reducing Kind memory pressure by 75%.
- Filter pod list API calls with LabelSelector=kubevirt.io=virt-launcher to reduce API server serialization load.
- Override --descheduling-interval to 3s in startDeschedulerServer (e2e_leaderelection_test.go) so leader descheduler re-evaluates pod lifetime periodically.
- Exclude context cancellation/deadline from isClientRateLimiterError in e2e_test.go so context deadlines are not swallowed.
- Add t.Cleanup and IsAlreadyExists handling to prevent leftover resources from causing cascading failures.

Signed-off-by: Amir Alavi <amiralavi7@gmail.com>
2026-08-09 11:18:09 -04:00
Amir Alavi 51ecda87fb fix(e2e): update CPU threshold, timeout, and metrics-server readiness for LowNodeUtilization
- Wait for deployment/metrics-server to be Available before running e2e tests in run-e2e-tests.sh.
- Replace infinite context cancellation polling with a 60s timeout in e2e_lownodeutilization_test.go to prevent 40m CI hangs.
- Set Thresholds.CPU to 20% and TargetThresholds.CPU to 40% for reliable single-pass overutilization detection.
- Add IsAlreadyExists and t.Cleanup handling for descheduler policy ConfigMap lifecycle.

Signed-off-by: Amir Alavi <amiralavi7@gmail.com>
2026-08-09 11:18:09 -04:00
kubernetes-prow[bot]andGitHub 7d2b28bf2b Merge pull request #1885 from somaz94/feat/chart-pod-disruption-budget
feat: add opt-in PodDisruptionBudget to the Helm chart
2026-06-30 02:56:08 +00:00
kubernetes-prow[bot]andGitHub cf2e95cb60 Merge pull request #1889 from sammedsingalkar09/master
deps: bump golang.org/x/net and x/crypto for security fixes
2026-06-29 09:42:09 +00:00
kubernetes-prow[bot]andGitHub ea957b271b Merge pull request #1888 from yugstar/fix-1887-rbac-remove-pods-delete
Remove unnecessary pods delete permission from ClusterRole
2026-06-27 11:07:02 +00:00
sammedsingalkar09 bb14e73150 security vuln 2026-06-27 14:01:00 +05:30
Aman Raj 341aba2723 Remove unnecessary pods delete permission from ClusterRole
The descheduler ClusterRole granted both pods:delete and
pods/eviction:create. Eviction goes through the eviction subresource
(PolicyV1().Evictions().Evict, requiring pods/eviction:create), and there
are no direct pod Delete calls anywhere in the codebase, so the
pods:delete verb is unused. Drop it to follow least privilege.

Signed-off-by: Aman Raj <aman.yug@gmail.com>
2026-06-27 02:26:45 +05:30
somaz 607b578980 feat: add opt-in PodDisruptionBudget to the Helm chart 2026-06-23 11:02:19 +09:00
Kubernetes Prow RobotandGitHub 86183b15a2 Merge pull request #1880 from tiraboschi/fix_eviction_metric
fix: emit eviction metrics for background evictions that never get deleted
2026-06-08 15:43:47 +05:30
Simone Tiraboschi 81fb28c18c fix: emit eviction metrics for background evictions that never get deleted
Pods evicted in background may stay in Succeeded/Failed phase forever
without being garbage-collected, so the metric was silently dropped.
Similarly, entries whose background eviction timed out in cleanCache
were expired without recording an outcome.

- UpdateFunc: emit "success"/"error" metric when a pod transitions to
  PodSucceeded/PodFailed respectively, matching the label convention
  used elsewhere in the file
- cleanCache: add onAssumedTimeout callback on evictionRequestsCache,
  wired in NewPodEvictor to emit "error" for entries that exceed the
  assumed-eviction timeout
- Add TestEvictionInBackgroundMetrics_PodCompleted and
  TestEvictionInBackgroundMetrics_AssumedTimeout to cover both paths

Signed-off-by: Simone Tiraboschi <stirabos@redhat.com>
2026-06-03 19:08:15 +02:00
Kubernetes Prow RobotandGitHub 3588dacd57 Merge pull request #1879 from a7i/descheduler-v0.36.0-helm
[descheduler v0.36.0] update helm chart
descheduler-helm-chart-0.36.0
2026-05-20 17:15:48 +05:30
Kubernetes Prow RobotandGitHub 9cba672e8f Merge pull request #1876 from a7i/copilot-ignore-vendor-master
chore(copilot): ignore vendor directory
2026-05-20 02:53:46 +05:30
Amir Alavi 5ac9278456 [descheduler v0.36.0] update helm chart 2026-05-19 16:43:16 -04:00
Kubernetes Prow RobotandGitHub 8005cdf783 Merge pull request #1874 from a7i/descheduler-v0.36.0
[v0.36.0] release prep: bump k8s/go deps, manifests, docs, and CI matrix
v0.36.0
2026-05-20 01:49:54 +05:30
Amir Alavi 745146e411 ci(e2e): bump KubeVirt to v1.9.0-alpha.0 for k8s 1.36 compatibility
KubeVirt v1.8.2 publishes VMI status checksum fields (uint32 in Go) as
format: int32 in its generated CRD schema. k8s 1.36 enables strict
numeric format validation in CRDs via
https://github.com/kubernetes/kubernetes/pull/136582, which now rejects
the legacy schema and causes virt-handler to enter an infinite VMI
status update re-enqueue loop. Live migrations never complete and the
descheduler e2e TestLiveMigrationInBackground times out.

The schema fix landed upstream in
https://github.com/kubevirt/kubevirt/pull/17469 (merged to main on
2026-04-18, included in v1.9.0-alpha.0 tagged 2026-05-11) but was not
backported to release-1.8, so no v1.8.x release contains it. Bump the
default KUBEVIRT_VERSION to v1.9.0-alpha.0 so the e2e suite consumes a
release whose generated CRDs are compatible with k8s 1.36's stricter
validator.

Tracked in https://github.com/kubevirt/kubevirt/issues/17858.
2026-05-19 15:06:11 -04:00
Amir Alavi 2119baee3d revert: ensureVMIsLiveMigratable retry helper
Reverts b767b9c0f. The helper was added to work around what looked like
the virt-handler containerdisk-socket race on k8s 1.36, but the actual
root cause is unrelated: k8s 1.36's stricter CRD numeric format
validation (kubernetes/kubernetes#136582) rejects VMI status updates
with the pre-fix uint32 Checksum schema. See
https://github.com/kubevirt/kubevirt/issues/17858 for the upstream
context and kubevirt/kubevirt#17469 for the upstream fix (merged to
main, included in v1.9.0-alpha.0, not in v1.8.x).

The follow-up commit bumps KUBEVIRT_VERSION so the test consumes a
KubeVirt release that contains the fix, which removes the need for any
test-side retry.
2026-05-19 15:05:04 -04:00
Amir Alavi b767b9c0f7 test(e2e): wait for VMIs to be LiveMigratable, recreate on race
Adds ensureVMIsLiveMigratable in TestLiveMigrationInBackground. After
the existing wait for virt-launcher pods to reach Running, poll each
VMI for the LiveMigratable=True condition. If a VMI fails to become
migratable within 120s, delete and recreate it (up to 3 attempts).

This works around an upstream KubeVirt race where virt-handler computes
the containerdisk checksum before the disk socket is ready, fails, and
never retries. The recreated VMI lands on a node that has already
cached the containerdisk image, so the socket comes up before
virt-handler's first attempt.

The race surfaces consistently with the kind v1.36.1 node image,
causing TestLiveMigrationInBackground to fail with "Expected at least
3 finished live migrations, got less: 0".
2026-05-19 09:16:51 -04:00
Amir Alavi 03f7dc5889 Bump KubeVirt dependencies to v1.8.2 and migrate to new client package
- Update kubevirt.io/api from v1.3.0 to v1.8.2
- Update kubevirt.io/client-go from v1.3.0 to v1.8.2
- Update kubevirt.io/containerized-data-importer-api from v1.57.0-alpha1 to v1.64.0
- Migrate e2e test from deprecated generated clientset path
  (kubevirt.io/client-go/generated/kubevirt/clientset/versioned)
  to new kubevirt.io/client-go/kubevirt client package
- Update vendor and dependencies for Kubernetes 1.36 compatibility
2026-05-18 22:39:53 -04:00
Amir Alavi dfc3166787 test(e2e): harden kind install and align lint tooling 2026-05-18 12:15:31 -04:00
Amir Alavi 0883de763b ci(manifests): build kind node image for k8s v1.36.1 2026-05-18 12:15:31 -04:00
Amir Alavi 3f8f9bb74e [v0.36.0] release prep: bump k8s/go deps, manifests, docs, and CI matrix 2026-05-18 12:15:30 -04:00
Jan ChaloupkaandGitHub d6720f509c Merge pull request #1878 from ingvagabund/setupTestSandbox-fix
fix(test/setupTestSandbox): wait until initial objects are propagated to informers
2026-05-18 17:18:47 +02:00
Jan Chaloupka 66918dc553 fix(test/setupTestSandbox): wait until initial objects are propagated to informers 2026-05-18 16:46:24 +02:00
Linus FankhauserandGitHub 6b5f6b450c chore(defaultevictor): add matchlabels compatibility to the namespaceselector (#1853) 2026-05-18 16:45:53 +05:30
Kubernetes Prow RobotandGitHub 3ea8051e1e Merge pull request #1873 from tiraboschi/fix_background_eviction_metric_race
evictions: fix assumePod silently dropping success metric on informer race
2026-05-17 18:53:03 +05:30
Amir Alavi 5fd4c1ea00 chore(copilot): ignore vendor directory 2026-05-16 21:59:11 -04:00
Kubernetes Prow RobotandGitHub 57105044ad Merge pull request #1875 from a7i/pin-github-actions-sha
ci: pin GitHub Actions to immutable SHAs
2026-05-16 18:34:32 +05:30
Amir Alavi b5a7c076f3 ci: pin GitHub Actions to commit SHAs 2026-05-15 22:24:20 -04:00
Simone Tiraboschi a7ac072c7d evictions: fix assumePod silently dropping success metric on informer race
When KubeVirt sets EvictionInProgressAnnotationKey before returning
TooManyRequests, the informer's UpdateFunc can call addPod
(evictionAssumed=false) before evictPod's assumePod call arrives.
assumePod found the entry already present and returned early, leaving
evictionAssumed=false. DeleteFunc then skipped the "success" metric.

Fix: if the existing entry has evictionAssumed=false (added by addPod),
upgrade it in place without double-counting the pod in the counters.

Adds TestEvictionInBackgroundMetrics_InformerRace to reproduce the race
deterministically.

Signed-off-by: Simone Tiraboschi <stirabos@redhat.com>
2026-05-14 17:23:18 +02:00
Kubernetes Prow RobotandGitHub c00d88f9ed Merge pull request #1837 from a7i/feat/servicemonitor-apiversion-1824
chart: allow overriding ServiceMonitor apiVersion
2026-05-11 17:45:51 +05:30
Kubernetes Prow RobotandGitHub 290d7f3dfb Merge pull request #1871 from Paramesh324/bump-gcb-docker-gcloud_issue_38936
cloudbuild: pin gcb-docker-gcloud image by digest
2026-05-11 14:15:48 +05:30
Parameshwaran Krishnasamy fab0f2ab70 Replace the GC'd tag v20211118-2f2d816b90 with digest pinning and a
tag comment (v20260205-38cfa9523f) so Cloud Build keeps working after
staging registry retention.
Related: kubernetes/kubernetes#138936

Signed-off-by: Parameshwaran Krishnasamy <Parameshwaran.K@ibm.com>
2026-05-10 12:25:34 +05:30
Kubernetes Prow RobotandGitHub ddadd33ab2 Merge pull request #1868 from ingvagabund/pin-gh-actions-to-sha
fix(.github/workflows/manifests.yaml): pin actions to a sha
2026-05-06 20:20:26 +05:30
Jan Chaloupka 7be855f7a5 fix(.github/workflows/manifests.yaml): pin actions to a sha 2026-05-06 16:11:17 +02:00
Kubernetes Prow RobotandGitHub 67a20369b8 Merge pull request #1862 from tiraboschi/fix_1840
fix(descheduler): reset prometheus usage client at each extension point
2026-05-04 20:08:24 +05:30
Simone Tiraboschi e56144c7a2 fix(descheduler): reset prometheus usage client at each extension point
Profile creation was moved outside the descheduling cycle in b214c147,
but reconcileInClusterSAToken() still runs only in runFnc(), after
newDescheduler() returns. This leaves the prometheus client nil when
LowNodeUtilization's New() runs, causing "prometheus client not
initialized" at startup.

Avoid failing at plugin creation time if the prometheus
client is not yet available. Instead, usageClientForMetrics() is now
called at the start of every extension point via a resetUsageClient()
helper, so each descheduling cycle picks up the latest client regardless
of when the SA token is reconciled or rotated.

Fixes: https://github.com/kubernetes-sigs/descheduler/issues/1840

Signed-off-by: Simone Tiraboschi <stirabos@redhat.com>
2026-04-29 11:36:32 +02:00
Kubernetes Prow RobotandGitHub fa8ae489ae Merge pull request #1856 from tiraboschi/background_eviction_metrics
evictions: fix missing observability for background evictions
2026-04-20 15:23:52 +05:30
Simone Tiraboschi bc0f0354c6 evictions: fix missing observability for background evictions
Background evictions were completely invisible in metrics: the ignore=true
path caused EvictPod to return before incrementing any counter, leaving
operators with no signal that a background eviction had been triggered or
completed.

Add a "background" result label emitted at eviction request time and a
"success" label emitted from the informer DeleteFunc when the pod is
actually gone. The two labels together give a complete picture:
"background" is recorded at eviction request time and may not have a
matching "success" if the descheduler restarts before the pod is deleted,
while "success" confirms the eviction completed within the same lifecycle.

Signed-off-by: Simone Tiraboschi <stirabos@redhat.com>
2026-04-20 11:20:58 +02:00
Kubernetes Prow RobotandGitHub 0bc278a816 Merge pull request #1859 from sammedsingalkar09/master
security: upgrade grpc and otel sdk dependencies
2026-04-18 20:15:36 +05:30
sammedsingalkar09 212b706950 security: upgrade grpc and otel sdk dependencies
Bump gRPC and OpenTelemetry SDK/exporter dependencies to patched releases and refresh vendored modules to address reported vulnerabilities while keeping tracing resource schema versions consistent.

Made-with: Cursor
2026-04-18 13:12:03 +05:30
Kubernetes Prow RobotandGitHub 8f9d5c607d Merge pull request #1854 from kubernetes-sigs/security/update-trivy-action-v0.35.0
security: Update trivy-action to use sha for v0.35.0
2026-03-23 15:32:17 +05:30
Priyanka Saggu 1ca2edbb59 security: Update trivy-action to v0.35.0
Updates aquasecurity/trivy-action from mutable references to SHA-pinned
version to address security vulnerabilities.

- Updates to v0.35.0 (57a97c7e)
- Pins to specific SHA for immutability
- Addresses issue: aquasecurity/trivy#10425

Signed-off-by: Priyanka Saggu <priyankasaggu11929@gmail.com>
2026-03-22 18:42:48 +01:00
Kubernetes Prow RobotandGitHub 0fafc09fff Merge pull request #1844 from a7i/extend-podlifetime-transitions
Extend PodLifeTime with condition, exit code, owner kind, and transition time filters
2026-03-07 01:04:21 +05:30