Releases: kubernetes-sigs/controller-runtime
Releases · kubernetes-sigs/controller-runtime
v0.21.0
Highlights
- Bump to Kubernetes v1.33 libraries
- Improvements for priority queue (#2374)
- envtest now has an option to download envtest binaries (can be used to replace setup-envtest depending on use case)
- Metric improvements: native histograms, all Go runtime metrics are enabled now
- Various bug fixes
- New reviewers: @troy0820, @JoelSpeed!!
⚠️ Breaking Changes
- Bump to k8s.io/* v0.33.0 and Go 1.24 (#3104 #3142 #3161 #3204 #3215)
- config: Stop enabling client-side ratelimiter by default (#3119)
- Previous behavior can be preserved by setting QPS 20 and Burst 30 on the rest.Config
- controller: NewUnmanaged/NewTypedUnmanaged: Stop requiring a manager (#3141)
- reconcile: Deprecate
Result.Requeue
(#3107)
✨ New Features
- controller: priority queue:
- Add debug logging for the state of the priority queue (#3075)
- Add priority label to queue depth metric (#3156)
- Leverage IsInInitialList (#3162)
- Remove redundant WithLowPriorityWhenUnchanged in builder (#3168)
- Retain the priority after Reconcile (#3167)
- Set priority automatically in handlers (#3111 #3152 #3160 #3174)
- envtest: Add Environment.KubeConfig field (#2278)
- envtest: Add option to download envtest binaries (#3135 #3137)
- events: Add IsInInitialList to TypedCreateEvent (#3162)
- log/zap: Enable panic log level (#3186)
- logging: Adopt WarningHandlerWithContext (#3176)
- logging: Improve logging by adopting contextual logging (#3149)
- metrics: Adopt native histograms (#3165)
- metrics: Expose all Go runtime metrics (#3070)
🐛 Bug Fixes
- apiutil: restmapper: Respect preferred version (#3151)
- builder: webhook: Fix custom path for webhook conflicts (#3102)
- cache: Clone maps to prevent data races when concurrently creating caches using the same options (#3078)
- cache: Stop accumulating lists in multi-namespace cache implementation (#3195)
- cache: List out of global cache when present and necessary (#3126)
- client: Return error if pagination is used with the cached client (#3134)
- controller: Support WaitForSync in TypedSyncingSource (#3084)
- controller: priority queue: Fix behavior of rate limit option in priorityqueue.AddWithOpts (#3103)
- controller: priority queue: Yet another queue_depth metric fix (#3085)
- controllerutil: CreateOrUpdate: Avoid panic when the MutateFn is nil (#2828)
- envtest: Fix nil pointer exception in Stop() (#3153)
- fake client: Fix data races when writing to the scheme (#3143)
- fake client: Use k8s.io/apimachinery/pkg/util/json to unmarshal in fake client (#3208)
- log/zap: Fix verbose info lost on KubeAwareEncoder.Clone (#3209)
- logging: controller: Use fmt.Stringer from custom source for logging (if available) (#3068)
- webhook: MultiMutatingHandler/MultiValidatingHandler: return warnings on webhook response (#3223)
🌱 Others
- Add troy0820 to reviewers (#3099)
- Add JoelSpeed to reviewers (#3097)
- client: Validate that unstructured objects don't require scheme registration (#3138)
- controller: Mention the SkipNameValidation option in the name validation error (#3170)
- docs: Clarify that controller-runtime is not a kubebuilder subproject (#3185)
- envtest: Export envtest.ReadCRDFiles (#3129)
- golangci-lint: Bump golangci-lint to v1.63.4 (#3076)
- golangci-lint: Bump golangci-lint to v2.1.6 (#3187)
- manager: Fix race in unit test (#3150)
- setup-envtest: Add RELEASE_TAG to show binary version with version command (#3166)
- setup-envtest: Fix Godoc for version.Version (#3177)
- tests: Fix: make test fails with make: *** [Makefile:73: test] Error 1 (#3125)
📖 Additionally, there have been 4 contributions to our documentation. (#3116, #3118, #3169, #3181, #3193, #3225)
Dependencies
Added
- github.com/klauspost/compress: v1.18.0
- github.com/kylelemons/godebug: v1.1.0
- github.com/planetscale/vtprotobuf: 0393e58
- go.opentelemetry.io/auto/sdk: v1.1.0
- gopkg.in/go-jose/go-jose.v2: v2.6.3
- sigs.k8s.io/randfill: v1.0.0
Changed
- cel.dev/expr: v0.18.0 → v0.19.1
- cloud.google.com/go/compute/metadata: v0.3.0 → v0.5.0
- github.com/cncf/xds/go: 555b57e → b4127c9
- github.com/coreos/go-oidc: v2.2.1+incompatible → v2.3.0+incompatible
- github.com/davecgh/go-spew: d8f796a → v1.1.1
- github.com/envoyproxy/go-control-plane: v0.12.0 → v0.13.0
- github.com/envoyproxy/protoc-gen-validate: v1.0.4 → v1.1.0
- github.com/evanphx/json-patch/v5: v5.9.0 → v5.9.11
- github.com/golang-jwt/jwt/v4: v4.5.0 → v4.5.2
- github.com/golang/glog: v1.2.1 → v1.2.2
- github.com/google/cel-go: v0.22.0 → v0.23.2
- github.com/google/gnostic-models: v0.6.8 → v0.6.9
- github.com/google/go-cmp: v0.6.0 → v0.7.0
- github.com/gorilla/websocket: v1.5.0 → e064f32
- github.com/grpc-ecosystem/grpc-gateway/v2: v2.20.0 → v2.24.0
- github.com/jessevdk/go-flags: v1.4.0 → v1.6.1
- github.com/onsi/ginkgo/v2: v2.21.0 → v2.22.0
- github.com/onsi/gomega: v1.35.1 → v1.36.1
- github.com/pmezard/go-difflib: 5d4384e → v1.0.0
- github.com/prometheus/client_golang: v1.19.1 → v1.22.0
- github.com/prometheus/common: v0.55.0 → v0.62.0
- github.com/rogpeppe/go-internal: v1.12.0 → v1.13.1
- github.com/stretchr/objx: v0.5.0 → v0.5.2
- github.com/stretchr/testify: v1.9.0 → v1.10.0
- go.etcd.io/etcd/api/v3: v3.5.16 → v3.5.21
- go.etcd.io/etcd/client/pkg/v3: v3.5.16 → v3.5.21
- go.etcd.io/etcd/client/v2: v2.305.16 → v2.305.21
- go.etcd.io/etcd/client/v3: v3.5.16 → v3.5.21
- go.etcd.io/etcd/pkg/v3: v3.5.16 → v3.5.21
- go.etcd.io/etcd/raft/v3: v3.5.16 → v3.5.21
- go.etcd.io/etcd/server/v3: v3.5.16 → v3.5.21
- go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc: v0.53.0 → v0.58.0
- go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp: v0.53.0 → v0.58.0
- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc: v1.27.0 → v1.33.0
- go.opentelemetry.io/otel/exporters/otlp/otlptrace: v1.28.0 → v1.33.0
- go.opentelemetry.io/otel/metric: v1.28.0 → v1.33.0
- go.opentelemetry.io/otel/sdk: v1.28.0 → v1.33.0
- go.opentelemetry.io/otel/trace: v1.28.0 → v1.33.0
- go.opentelemetry.io/otel: v1.28.0 → v1.33.0
- go.opentelemetry.io/proto/otlp: v1.3.1 → v1.4.0
- golang.org/x/crypto: v0.28.0 → v0.36.0
- golang.org/x/net: v0.30.0 → v0.38.0
- golang.org/x/oauth2: v0.23.0 → v0.27.0
- golang.org/x/sync: v0.8.0 → v0.12.0
- golang.org/x/sys: v0.26.0 → v0.31.0
- golang.org/x/term: v0.25.0 → v0.30.0
- golang.org/x/text: v0.19.0 → v0.23.0
- golang.org/x/time: v0.7.0 → v0.9.0
- google.golang.org/genproto/googleapis/api: f6391c0 → e6fa225
- google.golang.org/genproto/googleapis/rpc: f6391c0 → e6fa225
- google.golang.org/grpc: v1.65.0 → v1.68.1
- google.golang.org/protobuf: v1.35.1 → v1.36.5
- k8s.io/api: v0.32.0 → v0.33.0
- k8s.io/apiextensions-apiserver: v0.32.0 → v0.33.0
- k8s.io/apimachinery: v0.32.0 → v0.33.0
- k8s.io/apiserver: v0.32.0 → v0.33.0
- k8s.io/client-go: v0.32.0 → v0.33.0
- k8s.io/code-generator: v0.32.0 → v0.33.0
- k8s.io/component-base: v0.32.0 → v0.33.0
- k8s.io/gengo/v2: 2b36238 → 1244d31
- k8s.io/kms: v0.32.0 → v0.33.0
- k8s.io/kube-openapi: 32ad38e → c8a335a
- sigs.k8s.io/apiserver-network-proxy/konnectivity-client: v0.31.0 → v0.31.2
- sigs.k8s.io/structured-merge-diff/v4: v4.4.2 → v4.6.0
Removed
- github.com/asaskevich/govalidator: f61b66f
- github.com/go-kit/log: v0.2.1
- github.com/go-logfmt/logfmt: v0.5.1
- google.golang.org/appengine: v1.6.7
- gopkg.in/square/go-jose.v2: v2.6.0
Thanks to all our contributors! 😊
v0.20.4
What's Changed
- 🐛 Restmapper: Respect preferred version by @k8s-infra-cherrypick-robot in #3159
- 🌱 Mention the SkipNameValidation option in the name validation error by @k8s-infra-cherrypick-robot in #3172
- ✨ Controller: Retain the priority by @k8s-infra-cherrypick-robot in #3173
- ✨Add RELEASE_TAG to tools/setup-envtest to show binary version with setup-envtest version by @k8s-infra-cherrypick-robot in #3175
- 🌱 Handlers: Default to LowPriorityWhenUnchanged without a wrapper by @alvaroaleman in #3179
Full Changelog: v0.20.3...v0.20.4
v0.20.3
What's Changed
- 🐛 fix: cache should list out of global cache when present and necessary by @k8s-infra-cherrypick-robot in #3127
- 🌱 Export envtest.ReadCRDFiles by @k8s-infra-cherrypick-robot in #3131
- 🐛 Fakeclient: Fix dataraces when writing to the scheme by @k8s-infra-cherrypick-robot in #3145
- Revert "✨ Expose all Go runtime metrics" by @alvaroaleman in #3147
Full Changelog: v0.20.2...v0.20.3
v0.19.7
What's Changed
- 🐛 fix: cache should list out of global cache when present and necessary by @k8s-infra-cherrypick-robot in #3128
- 🐛 Fakeclient: Fix dataraces when writing to the scheme by @k8s-infra-cherrypick-robot in #3146
- Revert "✨ Expose all Go runtime metrics" by @k8s-infra-cherrypick-robot in #3148
Full Changelog: v0.19.6...v0.19.7
v0.20.2
What's Changed
- ✨ Expose all Go runtime metrics by @k8s-infra-cherrypick-robot in #3100
- 🐛Fix behavior of rate limit option in priorityqueue.AddWithOpts by @k8s-infra-cherrypick-robot in #3106
- 🌱 Update dependencies, k8s 1.32.1 by @k8s-infra-cherrypick-robot in #3108
Full Changelog: v0.20.1...v0.20.2
v0.19.6
What's Changed
- ✨ Expose all Go runtime metrics by @k8s-infra-cherrypick-robot in #3101
Full Changelog: v0.19.5...v0.19.6
v0.20.1
What's Changed
- 🐛 Check to see if custom source implements fmt.Stringer when logging by @k8s-infra-cherrypick-robot in #3077
- 🐛 cache: clone maps to prevent data race when concurrently creating caches using the same options by @k8s-infra-cherrypick-robot in #3079
- 🐛 support WaitForSync in custom TypedSyncingSource by @k8s-infra-cherrypick-robot in #3086
- 🌱 Add debug logging for the state of the priority queue by @k8s-infra-cherrypick-robot in #3088
- 🐛 Priorityqueue: Yet another queue_depth metric fix by @k8s-infra-cherrypick-robot in #3089
Full Changelog: v0.20.0...v0.20.1
v0.19.5
What's Changed
- 🐛 cache: clone maps to prevent data race when concurrently creating caches using the same options by @k8s-infra-cherrypick-robot in #3080
- 🐛 support WaitForSync in custom TypedSyncingSource by @tareksha in #3087
Full Changelog: v0.19.4...v0.19.5
v0.20.0
Highlights
- Based on k8s.io/* v1.32 libraries and minimum Go version is now v1.23
- New experimental priority queue feature
- AggregatedDiscovery is automatically used when available (#2901)
- As usual, many improvements to the fake client
Changes since v0.19.0
⚠️ Breaking Changes
- Bump to k8s.io/* v1.32 libraries (#2971 #2990 #3001 #3007 #3029 #3043)
- logging: Stop deduplicating API warnings by default (#2953)
- webhook: Stop deleting unknown fields in CustomDefaulter (#2982 #3056)
- webhook: Remove deprecated Defaulter and Validator (#2877 #2945)
- cluster: Remove deprecated SyncPeriod option (#2970)
✨ New Features
- cache: Add EnableWatchBookmarks option (defaults to true) (#3017)
- cache: Export NewInformer option (#3061)
- cert-watcher: Add polling (#3020 #3050)
- controller: Add experimental priority queue (off per default) (#3013 #3014 #3060 #3066)
- fake client: Allow adding indexes at runtime (#3021)
- fake client: Add support for ServiceAccountToken subresource (#2969)
- restmapper: Use AggregatedDiscovery if available (#2901)
- util: Add HasOwnerReference func (#2882)
- webhook: Add custom path option (#2998)
🐛 Bug Fixes
- controller: Error when source.Start() never returns (#2997 #3006 #3008)
- fake client: Don't return items on invalid selector (#3022)
- fake client: Fix TOCTOU races (#2980)
- fake client: Preserve TypeMeta during Get call with PartialObjectMeta (#2949)
- fake client: Preserve TypeMeta during List call with UnstructuredList (#3074)
- manager: Fix RenewDeadline typo in leader election (#3032)
- manager: Use leader elector with client timeout (#3028 #3034)
🌱 Others
- cache: Switch to Go 1.23+ stdlib
maps
/slices
packages (#3012) - controller: Log the syncing source when WaitForSync fails (#3016)
- setup-envtest: drop support for GCS (#2915)
- Some fixes for typos (#3011 #3033 #2993)
🌱 CI
- PR-verify: Verify PR titles with shell script (#2944 #2961 #2964 #2973)
- Remove gosec linter (#3064)
- Upgrade golangci-lint to v1.61.0 (#2950)
📖 Additionally, there have been 7 contributions to our documentation. (#2942, #2985, #2996, #3002, #3039, #3062)
Dependencies
Added
Nothing has changed.
Changed
- cel.dev/expr: v0.15.0 → v0.18.0
- github.com/Azure/go-ansiterm: d185dfc → 306776e
- github.com/go-openapi/jsonpointer: v0.19.6 → v0.21.0
- github.com/go-openapi/swag: v0.22.4 → v0.23.0
- github.com/google/btree: v1.0.1 → v1.1.3
- github.com/google/cel-go: v0.20.1 → v0.22.0
- github.com/google/pprof: 4bfdf5a → d1b30fe
- github.com/gregjones/httpcache: 9cad4c3 → 901d907
- github.com/jonboulle/clockwork: v0.2.2 → v0.4.0
- github.com/moby/spdystream: v0.4.0 → v0.5.0
- github.com/onsi/ginkgo/v2: v2.19.0 → v2.21.0
- github.com/onsi/gomega: v1.33.1 → v1.35.1
- github.com/stoewer/go-strcase: v1.2.0 → v1.3.0
- github.com/xiang90/probing: 43a291a → a49e3df
- go.etcd.io/bbolt: v1.3.9 → v1.3.11
- go.etcd.io/etcd/api/v3: v3.5.14 → v3.5.16
- go.etcd.io/etcd/client/pkg/v3: v3.5.14 → v3.5.16
- go.etcd.io/etcd/client/v2: v2.305.13 → v2.305.16
- go.etcd.io/etcd/client/v3: v3.5.14 → v3.5.16
- go.etcd.io/etcd/pkg/v3: v3.5.13 → v3.5.16
- go.etcd.io/etcd/raft/v3: v3.5.13 → v3.5.16
- go.etcd.io/etcd/server/v3: v3.5.13 → v3.5.16
- go.uber.org/zap: v1.26.0 → v1.27.0
- golang.org/x/crypto: v0.24.0 → v0.28.0
- golang.org/x/exp: f3d0a9c → 8a7402a
- golang.org/x/mod: v0.17.0 → v0.21.0
- golang.org/x/net: v0.26.0 → v0.30.0
- golang.org/x/oauth2: v0.21.0 → v0.23.0
- golang.org/x/sync: v0.7.0 → v0.8.0
- golang.org/x/sys: v0.21.0 → v0.26.0
- golang.org/x/telemetry: f48c80b → bda5523
- golang.org/x/term: v0.21.0 → v0.25.0
- golang.org/x/text: v0.16.0 → v0.19.0
- golang.org/x/time: v0.3.0 → v0.7.0
- golang.org/x/tools: e35e4cc → v0.26.0
- golang.org/x/xerrors: 04be3eb → 5ec99f8
- google.golang.org/genproto/googleapis/api: 5315273 → f6391c0
- google.golang.org/genproto/googleapis/rpc: f6361c8 → f6391c0
- google.golang.org/genproto: b8732ec → ef43131
- google.golang.org/protobuf: v1.34.2 → v1.35.1
- k8s.io/api: v0.31.0 → v0.32.0
- k8s.io/apiextensions-apiserver: v0.31.0 → v0.32.0
- k8s.io/apimachinery: v0.31.0 → v0.32.0
- k8s.io/apiserver: v0.31.0 → v0.32.0
- k8s.io/client-go: v0.31.0 → v0.32.0
- k8s.io/code-generator: v0.31.0 → v0.32.0
- k8s.io/component-base: v0.31.0 → v0.32.0
- k8s.io/gengo/v2: 51d4e06 → 2b36238
- k8s.io/kms: v0.31.0 → v0.32.0
- k8s.io/kube-openapi: 70dd376 → 32ad38e
- k8s.io/utils: 18e509b → 3ea5e8c
- sigs.k8s.io/apiserver-network-proxy/konnectivity-client: v0.30.3 → v0.31.0
- sigs.k8s.io/json: bc3834c → 9aa6b5e
- sigs.k8s.io/structured-merge-diff/v4: v4.4.1 → v4.4.2
Removed
- github.com/golang/groupcache: 41bb18b
- github.com/imdario/mergo: v0.3.6
Thanks to all our contributors! 😊
v0.19.4
What's Changed
- 🌱 Add fsnotify watcher+polling by @sbueringer in #3052
Full Changelog: v0.19.3...v0.19.4