The advantage is that it separates the dependencies of the different tools
better. golangci-lint in particular has many dependencies and is sometimes
sensitive to the exact version being used. This way, "go get" bumps up
dependencies exactly as defined by the upstream golangci-lint module.
It's not quite self-contained because logcheck as a Go plugin for golangci-lint
must be built from the same dependencies. But it only adds one and does not
change any of the others.
While at it, the Go 1.24 "tools" directive gets used instead of the traditional
tools.go approach.
This finishes the work started in
https://github.com/kubernetes/kubernetes/pull/131113.
Changes:
- Remove TODOs for things that we don't have plans to fix.
- Add issue for older TODO.
- Reorganize and remove suppression rules so that the base check
has no unused rules.
- Document warn-unused, but don't enable it.
- Remove disabling of statistics (they are useful) and ensure that
they don't get the ERROR prefix.
- Avoid ../ prefix in paths via `run.relative-path-mode: gomod`.
Passing a constant value to gomega.Consistently means that it will not re-check
while running.
Found by linter after removing the suppression rule for the check. It was
disabled earlier because of a bug in the linter.
github.com/client9/misspell was archived by the owner on Mar 26, 2025.
The golangci-lint team maintains a fork.
The newer code finds some misspellings which where missed before.
If the external jwt signer is enabled, publishing
OIDC discovery docs and keys fails because the PublicKeysGetter
is not wired correctly.
Set the public keys getter on startup so public key
discovery works in that case as well.
Trying to create a pod using a resourcequota whose status has not been
populated will result in api admission rejecting it with a 403
Forbidden. The pod resize tests do not wait/check to make sure the
resourcequota status is populated before trying to use the quota when
creating a pod, so in scenarious where either the test runs too fast, or
the resourcequota controller is too slow, the tests will fail.
This just makes the test wait up to a minute for the quota status to
populate. The status generation timing/logic gets tested separately in
test/e2e/apimachinery/resource_quota.go, and it waits a minute, so we
wait a minute, but in practice it takes at worst seconds.
The kubelet certificate manager was using a closure to get the node addresses,
but this closure depended on a static field that was only updated during the node
status update. This created a twisted dependency between the node.status
reconcile loops and the certificate manager.
This commit fixes this issue by using the node informer to get the node addresses directly.
This ensures that the kubelet always requests a certificate with the latest node addresses.