2305 Commits

Author SHA1 Message Date
Kubernetes Prow Robot
b49fd27d10 Merge pull request #1830 from davidandreoletti/patch-1
Change annotations condition to deploymentAnnotations for Deployment object annotations
v0.35.0
2026-02-19 14:13:39 +05:30
Kubernetes Prow Robot
ce6bf5b735 Merge pull request #1832 from a7i/v0.35.0-docs-manifests
[v0.35.0] update docs and manifests
2026-02-19 10:23:37 +05:30
Kubernetes Prow Robot
86e96b5b04 Merge pull request #1831 from a7i/amir/CVE-2024-44337
chore: upgrade github.com/gomarkdown/markdown to latest version
2026-02-19 09:37:37 +05:30
Amir Alavi
86070c62c6 [v0.35.0] update docs and manifests 2026-02-18 22:49:59 -05:00
Amir Alavi
118f466290 chore: upgrade github.com/gomarkdown/markdown to latest version
Upgrade github.com/gomarkdown/markdown from v0.0.0-20240328165702-4d01890c35c0
to v0.0.0-20260217112301-37c66b85d6ab (latest as of 2026-02-17)
2026-02-18 22:39:34 -05:00
Kubernetes Prow Robot
0de5bad232 Merge pull request #1827 from a7i/k8s-1.35
[v0.35.0] bump to kubernetes 1.35 deps
2026-02-18 16:31:37 +05:30
David Andreoletti
66075b069a Change annotations condition to deploymentAnnotations 2026-02-18 17:59:03 +08:00
Kubernetes Prow Robot
f587486296 Merge pull request #1829 from ingvagabund/bump-golangci-lint
bump(golangci-lint): update and migrate
2026-02-18 15:03:40 +05:30
Jan Chaloupka
a868c8d129 chore: update the code based on golangci-lint report 2026-02-17 22:01:25 +01:00
Jan Chaloupka
91c1297a54 bump(golangci-lint): update and migrate
golangci-lint migrate to make .golangci.yaml v2 compatible
2026-02-17 21:53:53 +01:00
Kubernetes Prow Robot
760e9cc2e1 Merge pull request #1828 from ingvagabund/extend-list-of-supported-go-versions
chore: extend the list of supported Go versions
2026-02-17 16:27:03 +05:30
Jan Chaloupka
a4ac8447b6 chore: extend the list of supported Go versions 2026-02-17 11:27:24 +01:00
Amir Alavi
a206a88d86 [v0.35.0] bump to kubernetes 1.35 deps
Signed-off-by: Amir Alavi <amiralavi7@gmail.com>
2026-02-15 19:50:50 -05:00
Kubernetes Prow Robot
7221fa7613 Merge pull request #1822 from sammedsingalkar09/master
Update go dependecies to fix vulnerabilities
2026-02-06 01:52:31 +05:30
Kubernetes Prow Robot
6e33b690d7 Merge pull request #1823 from ingvagabund/prom-client-controller
refactor: move prometheus client controller related code under a seperate file
2026-02-05 21:14:33 +05:30
Jan Chaloupka
f4718bf928 refactor(prom client controllers): change the one letter receiver into ctrl 2026-02-05 15:54:49 +01:00
Jan Chaloupka
f149f5a083 refactor: move prometheus client controller related code under a seperate file 2026-02-05 15:42:47 +01:00
Kubernetes Prow Robot
8de50a8a17 Merge pull request #1815 from ingvagabund/new-profile-under-new-descheduler
feat(pkg/descheduler): create profiles outside the descheduling cycle
2026-02-05 14:36:35 +05:30
Jan Chaloupka
b214c14793 feat(pkg/descheduler): create profiles outside the descheduling cycle 2026-02-04 20:04:31 +01:00
Kubernetes Prow Robot
fc863ff58d Merge pull request #1821 from ingvagabund/prom-client-controllers
refactor(promClientController): split it into two prom client controllers
2026-02-04 22:48:32 +05:30
sammedsingalkar09
f801f34346 update dependecies 2026-02-04 22:32:15 +05:30
Jan Chaloupka
d262c7af44 refactor(TestPromClientControllerSync_EventHandler): be more verbose about the target expectations 2026-02-04 17:44:17 +01:00
Jan Chaloupka
4b5be0a772 feat(prometheus client reconciling): be more strict about clearing the previous connection
To avoid stalling connections that are not expected to be kept. E.g.
when an invalid secret is provided.
2026-02-04 17:16:44 +01:00
Jan Chaloupka
29e5a51cb5 refactor(newSecretBasedPromClientController): inline setupPrometheusProvider into newSecretBasedPromClientController 2026-02-04 17:16:15 +01:00
Jan Chaloupka
a91a02cadc refactor(newSecretBasedPromClientController): move prometheus config validation under newSecretBasedPromClientController 2026-02-04 17:14:58 +01:00
Jan Chaloupka
964df4ce95 refactor(promClientController): split it into two prom client controllers 2026-02-04 16:59:13 +01:00
Kubernetes Prow Robot
5fb70c12c7 Merge pull request #1820 from ingvagabund/refactorings
test(token reconciling): have tests initialize the prom client reconciling through the descheduler's bootstraping entry too
2026-02-04 18:31:59 +05:30
Jan Chaloupka
c357bc3d28 test(TestReconcileInClusterSAToken): have prometheus client tests build an entire descheduler as well 2026-02-04 13:26:00 +01:00
Jan Chaloupka
f8a4efd4f0 format(TestReconcileInClusterSAToken): indent the code by two tabs 2026-02-04 13:18:53 +01:00
Jan Chaloupka
0822f6f99a test(TestPromClientControllerSync_EventHandler): have prometheus client tests build an entire descheduler as well 2026-02-04 13:18:07 +01:00
Jan Chaloupka
4361c133e9 format(TestPromClientControllerSync_EventHandler): indent the code by two tabs 2026-02-04 13:11:20 +01:00
Jan Chaloupka
818675f73e refactor(TestPromClientControllerSync_EventHandler): get secret name and namespace from the implicitly generated secret object 2026-02-04 12:47:41 +01:00
Jan Chaloupka
a8f618c3fd test(TestPromClientControllerSync_ClientCreation): have prometheus client tests build an entire descheduler as well 2026-02-04 12:41:31 +01:00
Jan Chaloupka
760bacab34 format(TestPromClientControllerSync_ClientCreation): indent the code by two tabs 2026-02-04 12:40:12 +01:00
Jan Chaloupka
aa21eed809 refactor(setupPromClientControllerTest): inject context instead of creating a stop channel 2026-02-04 12:33:53 +01:00
Kubernetes Prow Robot
8849882944 Merge pull request #1819 from ingvagabund/bootstrap-descheduler
Deduplicate descheduler initialization code so unit tests test more of the production code
2026-02-04 16:33:55 +05:30
Jan Chaloupka
807f580204 test(pkg/descheduler): TestPluginPrometheusClientAccess_Secret to test secret based token reconciliation
This test makes sure the secret is reconciled and available in plugins
while running the descheduler from its main entry point.
2026-02-04 11:31:18 +01:00
Jan Chaloupka
643179cdac feat(pkg/descheduler): setup prometheus client for the dry run mode descheduler as well
The secret is used for read-only operations so it can be safely wired.
2026-02-04 11:29:09 +01:00
Jan Chaloupka
d1671034df refactor(pkg/descheduler): move the main descheduler run entry under a dedicated function 2026-02-03 23:31:29 +01:00
Jan Chaloupka
f26ab740fe feat(pkg/descheduler): do not cancel the context when runDeschedulerLoop fails
When the descheduler is running in the dry mode the the kube client sandbox restoring may fail.
Which can be caused by timeouts when waiting for internal caches to sync.
The internal timeouts depend on the cluster size which changes in time.
No reason to cancel the context because of that.
2026-02-03 23:31:06 +01:00
Jan Chaloupka
0d05e5dd1f refactor(pkg/descheduler): dedicated function for setting token reconciliation 2026-02-03 23:31:01 +01:00
Jan Chaloupka
e402adb9f1 refactor(pkg/descheduler): start factory informers and other descheduler parts during bootstrap
This will help with testing as the initDescheduler function under
descheduler_test.go is now much closer to the production invocation.
2026-02-03 21:33:28 +01:00
Jan Chaloupka
0c307cf7b9 refactor(pkg/descheduler): bootstrap a descheduler through a dedicated function 2026-02-03 21:26:16 +01:00
Jan Chaloupka
a71c2ab331 refactor(pkg/descheduler): single ctx with cancel with the whole RunDeschedulerStrategies function for consistency 2026-02-03 21:15:13 +01:00
Kubernetes Prow Robot
ffd05ff9c1 Merge pull request #1818 from ingvagabund/prom-client-testing
tests: Prom client testing
2026-02-02 19:04:28 +05:30
Kubernetes Prow Robot
a60ab7b5ed Merge pull request #1786 from W1seKappa/add-namespace-label-selector
Add namespace label selector
2026-02-02 18:24:29 +05:30
Danila Bobkov
4361eefaf2 add namespaceLabelSelector
Signed-off-by: Danila Bobkov <danila.bobkov@flant.com>
2026-02-02 15:22:11 +03:00
Jan Chaloupka
5a53f16526 test(promClientController): unit test the implementation
Currently, there's a single prometheus client reconciler for both in
cluster and secret based strategies. The in cluster reconciling is run in
sync with each descheduling cycle. An in file token either changes or it
does not. If changed a new prometheus client is created. The secret
based reconciling is run async and watches for secret object changes. If a
secret changes a new client is created. The internal state of the
reconciler keeps previous connection data for clearing and checks.

The current reconciler implementation lacks mutually exclusive access.
So data races are possible. The prometheus configuration validation is
performed during every sync. The future refactorings is expected to move
the validation to the creation phase of the reconciler.

The extra unit testing is expected to cover the following scenarios:
- in cluster:
  - in file token is unchanged: no-op
  - in file token is changed: client is created or fails to be created
- secret:
  - no secret is not found: no client creation, internal state cleared
  - secret is found: if token changed a new client created, otherwise
    no-op
- prometheus config validation
- prometheus client injection

Any error during new prom client creation should be followed by closing
the previous connection and reseting the internal state. Yet, the error
handling is not that strict currently. So the current extra unit testing
keeps the incomplete testing cases as they are.

Other use of the tests is to make sure every time a new prometheus
client is created a descheduling cycle injects a new profile with the
updated prometheus clients. So the future refactoring does not introduce
a regression.
2026-02-01 18:13:18 +01:00
Jan Chaloupka
12b1ddfb52 refactor(pkg/descheduler): move prometheus client specific code under a dedicated promClientController
The underlying implementation is the same. Only moving the code under a
separate controller that can be unit test independently of the
descheduler type implementation.
2026-02-01 12:42:27 +01:00
Kubernetes Prow Robot
0b4fd3544c Merge pull request #1816 from ingvagabund/prometheus-client-update-test
test(pkg/descheduler): test a prometheus client update propagates to a plugin profile handle
2026-01-26 03:01:08 +05:30