-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
⚠️ Add client.SubResourceWriter #2072
⚠️ Add client.SubResourceWriter #2072
Conversation
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: alvaroaleman The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
04f01e0
to
7620718
Compare
7620718
to
5f89d78
Compare
type StatusWriter interface { | ||
// SubResourceClient knows how to create a client which can update subresource | ||
// for kubernetes objects. | ||
type SubResourceClient interface { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we add a TODO comment for SubResourceReader and those non-CRUD subresources?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure, I think by then we would rename the SubResourceWriter
This change adds a SubResourceWriter to the client package that can be used to Create, Update or Patch arbitrary subresources. Co-authored-by: Sergey Zagursky <[email protected]>
5f89d78
to
d7724aa
Compare
/lgtm |
Whoops, didn't notice it is approved, maybe I should have added a /hold. Not sure if someone else has any comment. |
* Add additional SubResource* functions for FieldOwner This enhances #2072 to allow FieldOwner work with SubResources to set the FieldManager option. * Typos * Apply gofmt -s * Add tests for FieldOwner
- github.com/onsi/ginkgo/v2 v2.5.1 -> v2.7.0 - github.com/onsi/gomega v1.24.1 -> v1.26.0 - github.com/openshift/library-go v0.0.0-20221129182131-19da1bc0df5f -> v0.0.0-20221216200640-2a52b7ce52f9 - github.com/operator-framework/api v0.17.1 -> v0.17.3 - github.com/samber/lo v1.36.0 -> v1.37.0 - golang.org/x/tools v0.3.0 -> v0.4.0 - k8s.io/* v0.25.4 -> v0.26.1 - k8s.io/kube-openapi v0.0.0-20221123214604-86e75ddd809a -> v0.0.0-20221207184640-f3cff1453715 - sigs.k8s.io/controller-runtime v0.13.1 -> v0.14.1 - sigs.k8s.io/controller-tools v0.10.0 -> v0.11.1 Consume client.SubResourceWriter from sigs.k8s.io/controller-runtime, see: kubernetes-sigs/controller-runtime#2072 Signed-off-by: Simone Tiraboschi <[email protected]>
- github.com/onsi/ginkgo/v2 v2.5.1 -> v2.7.0 - github.com/onsi/gomega v1.24.1 -> v1.26.0 - github.com/openshift/library-go v0.0.0-20221129182131-19da1bc0df5f -> v0.0.0-20221216200640-2a52b7ce52f9 - github.com/operator-framework/api v0.17.1 -> v0.17.3 - github.com/samber/lo v1.36.0 -> v1.37.0 - golang.org/x/tools v0.3.0 -> v0.4.0 - k8s.io/* v0.25.4 -> v0.26.1 - k8s.io/kube-openapi v0.0.0-20221123214604-86e75ddd809a -> v0.0.0-20221207184640-f3cff1453715 - sigs.k8s.io/controller-runtime v0.13.1 -> v0.14.1 - sigs.k8s.io/controller-tools v0.10.0 -> v0.11.1 Consume client.SubResourceWriter from sigs.k8s.io/controller-runtime, see: kubernetes-sigs/controller-runtime#2072 Signed-off-by: Simone Tiraboschi <[email protected]>
This enhances kubernetes-sigs#2072 to allow FieldOwner work with SubResources to set the FieldManager option.
* Add additional SubResource* functions for FieldOwner This enhances #2072 to allow FieldOwner work with SubResources to set the FieldManager option. * Typos * Apply gofmt -s * Add tests for FieldOwner --------- Co-authored-by: David Schmitt <[email protected]>
…`v0.14.1` (#7248) * Update `k8s.io/*` to `v0.26.0` * Update `sigs.k8s.io/controller-runtime` to `v0.14.1` * Set `RecoverPanic` globally for the manager of `controller-manager` controllers * Set `RecoverPanic` globally for the manager of `gardenlet` controllers * Set `RecoverPanic` globally for the manager of `operator` controllers * Set `RecoverPanic` globally for the manager of `resource-manager` controllers * Set `RecoverPanic` globally for the manager of `scheduler` controllers * Set `RecoverPanic` globally in manager options for extension controllers * Change RecoverPanic bool to bool pointer for other controllers * Run `make generate` * Set `AllowInvalidLabelValueInSelector` to true in LabelSelectorValidationOptions for backwards compatibility See kubernetes/kubernetes#113699 for more details * Drop `Not` predicate util function in favor of controller-runtime `predicate.Not` * Drop `NewClientWithFieldSelectorSupport` function in favor of controller-runtime `WithIndex` function kubernetes-sigs/controller-runtime/pull/2025 * Use `Build()` function for all controllers * Use Subresource client for `shoots/binding` and drop generated clientset * Use Subresource client for `shoots/adminkubeconfig` and drop generated clientset * Use Status() client for Status Ref: kubernetes-sigs/controller-runtime#2072 * Adapt unit tests with mock StatusWriter * Add "ValidatingAdmissionPolicy" to default admission plugins * Adapt changes related to removed fields in kube-proxy config * Add unit test cases for "#IsAdmissionPluginSupported" function * Update envtest version * Return error from `informer.AddEventHandler` * Copy onsi/gomega/format package also to gomegacheck testdata * Address PR review feedback * Vendor current `etcd-druid` master * Use `builder.Watches()` wherever possible * Call `etcdOptions.Complete()` for gardener apiserver config etcd-encryption is supported out-of-the-box now. ref: kubernetes/kubernetes#112789 * Use Subresource client for `serviceaccounts/token` wherever possible * Update `ahmetb/gen-crd-api-reference-docs` to `0.3.0` * Update `sigs.k8s.io/controller-tools` to `v0.11.0` Update to `v0.11.1` once kubernetes/kubernetes/pull/114617 is released. In k8s v0.26.0 the CRD generation is broken. * Remove unneeded dependencies for `gardener-scheduler` from skaffold.yaml * Hardcode `RecoverPanic` to true for extensions controller * Use `k8s.io/apimachinery/pkg/util/sets` and drop copied packages * Drop ready check for garden informer sync for gardenlet Adding ready check to manager is not possible after it's started, since controller-runtime, `v0.11.0`. However the check was broken, and it is now fixed in kubernetes-sigs/controller-runtime#2090, so we have to drop this. * Adapt `provider-local` webhook * Address PR review feedback * Fix panic in ManagedSeed controller Contexts: from this PR, we're not setting RecoverPanic to true in tests * Vendor `etcd-druid` `v0.15.3` * Update `k8s.io/*` and `controller-runtime` k8s.io/* - 0.26.0=>0.26.1 controller-tools - 0.11.0=>0.11.1 * Run `make generate` * Rebase * Address PR review feedback * Fix failing test * Adapt `highavailabilityconfig` webhook integration test `autoscaling/v2beta2.HorizontalPodAutoscaler` is removed in v1.26. Ref: https://kubernetes.io/docs/reference/using-api/deprecation-guide/#v1-26 * Use `apiutil.NewDynamicRESTMapper` for Manager cache in tests Co-authored-by: Rafael Franzke <[email protected]> * Don't set `RecoverPanic` for os extensions in AddToManager This is not required since we call `mgrOpts.Options()` here : https://github.com/gardener/gardener/blob/c9cb564d1adad0a1ecf9d44f23fb249bcf946a79/extensions/pkg/controller/operatingsystemconfig/oscommon/app/app.go#L88 * Truncate time in test to microsecond precision Ref: kubernetes/kubernetes#111936 * Rebase --------- Co-authored-by: Rafael Franzke <[email protected]>
…`v0.14.1` (gardener#7248) * Update `k8s.io/*` to `v0.26.0` * Update `sigs.k8s.io/controller-runtime` to `v0.14.1` * Set `RecoverPanic` globally for the manager of `controller-manager` controllers * Set `RecoverPanic` globally for the manager of `gardenlet` controllers * Set `RecoverPanic` globally for the manager of `operator` controllers * Set `RecoverPanic` globally for the manager of `resource-manager` controllers * Set `RecoverPanic` globally for the manager of `scheduler` controllers * Set `RecoverPanic` globally in manager options for extension controllers * Change RecoverPanic bool to bool pointer for other controllers * Run `make generate` * Set `AllowInvalidLabelValueInSelector` to true in LabelSelectorValidationOptions for backwards compatibility See kubernetes/kubernetes#113699 for more details * Drop `Not` predicate util function in favor of controller-runtime `predicate.Not` * Drop `NewClientWithFieldSelectorSupport` function in favor of controller-runtime `WithIndex` function kubernetes-sigs/controller-runtime/pull/2025 * Use `Build()` function for all controllers * Use Subresource client for `shoots/binding` and drop generated clientset * Use Subresource client for `shoots/adminkubeconfig` and drop generated clientset * Use Status() client for Status Ref: kubernetes-sigs/controller-runtime#2072 * Adapt unit tests with mock StatusWriter * Add "ValidatingAdmissionPolicy" to default admission plugins * Adapt changes related to removed fields in kube-proxy config * Add unit test cases for "#IsAdmissionPluginSupported" function * Update envtest version * Return error from `informer.AddEventHandler` * Copy onsi/gomega/format package also to gomegacheck testdata * Address PR review feedback * Vendor current `etcd-druid` master * Use `builder.Watches()` wherever possible * Call `etcdOptions.Complete()` for gardener apiserver config etcd-encryption is supported out-of-the-box now. ref: kubernetes/kubernetes#112789 * Use Subresource client for `serviceaccounts/token` wherever possible * Update `ahmetb/gen-crd-api-reference-docs` to `0.3.0` * Update `sigs.k8s.io/controller-tools` to `v0.11.0` Update to `v0.11.1` once kubernetes/kubernetes/pull/114617 is released. In k8s v0.26.0 the CRD generation is broken. * Remove unneeded dependencies for `gardener-scheduler` from skaffold.yaml * Hardcode `RecoverPanic` to true for extensions controller * Use `k8s.io/apimachinery/pkg/util/sets` and drop copied packages * Drop ready check for garden informer sync for gardenlet Adding ready check to manager is not possible after it's started, since controller-runtime, `v0.11.0`. However the check was broken, and it is now fixed in kubernetes-sigs/controller-runtime#2090, so we have to drop this. * Adapt `provider-local` webhook * Address PR review feedback * Fix panic in ManagedSeed controller Contexts: from this PR, we're not setting RecoverPanic to true in tests * Vendor `etcd-druid` `v0.15.3` * Update `k8s.io/*` and `controller-runtime` k8s.io/* - 0.26.0=>0.26.1 controller-tools - 0.11.0=>0.11.1 * Run `make generate` * Rebase * Address PR review feedback * Fix failing test * Adapt `highavailabilityconfig` webhook integration test `autoscaling/v2beta2.HorizontalPodAutoscaler` is removed in v1.26. Ref: https://kubernetes.io/docs/reference/using-api/deprecation-guide/#v1-26 * Use `apiutil.NewDynamicRESTMapper` for Manager cache in tests Co-authored-by: Rafael Franzke <[email protected]> * Don't set `RecoverPanic` for os extensions in AddToManager This is not required since we call `mgrOpts.Options()` here : https://github.com/gardener/gardener/blob/c9cb564d1adad0a1ecf9d44f23fb249bcf946a79/extensions/pkg/controller/operatingsystemconfig/oscommon/app/app.go#L88 * Truncate time in test to microsecond precision Ref: kubernetes/kubernetes#111936 * Rebase --------- Co-authored-by: Rafael Franzke <[email protected]>
In the original PR #1922, there was a problem with updating the finalizer. Can someone please explain how to implement it with the new Thanks in advance, and sorry for commenting merged PR. |
I dont' know how to do it, but I would recommend opening a new issue. If that is already possible directly with client-go we might be able to infer from that how it could be done with the controller-runtime client. I think in any case it would be good to have an example / test covering that scenario |
This change adds a SubResourceWriter to the client package that can be used to Create, Update or Patch arbitrary subresources.
This fixes the majority of #172, the only thing missing for it to close would be to add subresource Get, as I think there is no existing usage of subresource Delete.
Relative to #1922 the main changes are:
Supersedes and thereby closes #1922
Supersedes and thereby closes #2015
/cc @FillZpp @joelanford @sbueringer