Skip to content
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

Use cached controller-runtime client #2414

Closed
16 tasks done
timebertt opened this issue Jun 3, 2020 · 9 comments
Closed
16 tasks done

Use cached controller-runtime client #2414

timebertt opened this issue Jun 3, 2020 · 9 comments
Assignees
Labels
area/cost Cost related area/networking Networking related area/quality Output qualification (tests, checks, scans, automation in general, etc.) related area/scalability Scalability related kind/enhancement Enhancement, improvement, extension priority/3 Priority (lower number equals higher priority)

Comments

@timebertt
Copy link
Member

timebertt commented Jun 3, 2020

How to categorize this issue?

/area quality networking cost
/kind enhancement

What would you like to be added:

In g/g we have an increasing number of API calls that are made via controller-runtime clients instead of using more efficient mechanisms like Informers or Listers.
In our current implementation, these clients — no matter if for garden, seed, plant or shoot cluster — are not backed by a cache, which means, that every call will result in a direct call to the respective API server. Because most of these calls go to API servers that are not running on the same cluster / in the same "network" (e.g. to the garden cluster or to the (shooted) seed's API server) like the caller (mainly gardenlet), they contribute to "external" traffic, which is (highly) priced by cloud providers.

Also, there are many different places and mechanisms in our code, where and how we construct such ClientSets, ChartRenderes, ChartAppliers, RESTMappers and so on, and they are very short-lived (e.g often constructed only for a single operation and discarded after the operation has completed).

As we will probably introduce more and more API calls via controller-runtime clients (because it is less complicated to use and allows more generic constructs), we should refactor how we construct/retrieve those clients and equip them with a cache, so we can save unnecessary network traffic (costs).

Related to/part of #1953

Steps

#2822 tracks all steps for graduating the CachedRuntimeClients feature gate, but they can also be considered a part of this issue.

These are steps/subtasks of this issue, that are not strictly required for or related to the graduation of the feature gate but rather general improvements regarding cached controller-runtime clients:

@timebertt timebertt added the kind/enhancement Enhancement, improvement, extension label Jun 3, 2020
@gardener-robot gardener-robot added area/cost Cost related area/networking Networking related area/quality Output qualification (tests, checks, scans, automation in general, etc.) related priority/normal labels Jun 3, 2020
@rfranzke rfranzke removed their assignment Jun 30, 2020
@gardener-robot gardener-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Sep 19, 2020
@gardener-robot gardener-robot added lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. and removed lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. labels Nov 18, 2020
@timebertt
Copy link
Member Author

/touch

@gardener-robot gardener-robot removed the lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. label Jan 12, 2021
@gardener-robot gardener-robot added priority/3 Priority (lower number equals higher priority) and removed priority/normal labels Mar 8, 2021
@rfranzke
Copy link
Member

rfranzke commented Apr 8, 2021

@timebertt Should this issue be closed in favor of #2822? Or do you want to track this separately?

@timebertt
Copy link
Member Author

We could keep this one open as it is also about refactoring the client usage in the extension library, which is not related to the feature gate.
But I don't have a strong opinion.

@rfranzke rfranzke added the roadmap/internal Roadmap for our team-internal goals, e.g. drive up seed utilization label Jun 11, 2021
@rfranzke rfranzke added this to the 2021-Q3 milestone Jun 11, 2021
@timebertt timebertt removed area/networking Networking related area/quality Output qualification (tests, checks, scans, automation in general, etc.) related labels Jul 8, 2021
@timebertt timebertt added the area/scalability Scalability related label Jul 8, 2021
@vlerenc vlerenc removed the roadmap/internal Roadmap for our team-internal goals, e.g. drive up seed utilization label Jul 13, 2021
@gardener-robot gardener-robot added area/networking Networking related area/quality Output qualification (tests, checks, scans, automation in general, etc.) related labels Aug 26, 2021
@gardener gardener deleted a comment from gardener-robot Aug 26, 2021
@rfranzke rfranzke removed this from the 2021-Q3 milestone Jan 14, 2022
@rfranzke
Copy link
Member

cc @acumino @shafeeqes @ary1992, it seems there is just a very small TODO left to get this issue closed. Maybe you can have a look when you are free :)

@acumino
Copy link
Member

acumino commented Mar 31, 2022

/assign

@shafeeqes
Copy link
Contributor

/assign

@acumino acumino removed their assignment Apr 4, 2022
@ary1992
Copy link
Contributor

ary1992 commented Apr 5, 2022

/assign

@acumino
Copy link
Member

acumino commented Apr 12, 2022

/close
All the tasks are completed.

@gardener-prow gardener-prow bot closed this as completed Apr 12, 2022
@gardener-prow
Copy link
Contributor

gardener-prow bot commented Apr 12, 2022

@acumino: Closing this issue.

In response to this:

/close
All the tasks are completed.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/cost Cost related area/networking Networking related area/quality Output qualification (tests, checks, scans, automation in general, etc.) related area/scalability Scalability related kind/enhancement Enhancement, improvement, extension priority/3 Priority (lower number equals higher priority)
Projects
None yet
Development

No branches or pull requests

7 participants