[1.17] Ensure endpoints for upstreams are listed within watchNamespaces #9881
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Backport of #9872
Description
When following the production recommendations, the following error is seen in the gloo pod
This is caused by the combination of the following settings :
In this scenario, when the Kubernetes upstream plugin tries to watch upstreams and no upstream exists, the list of namespaces to watch that contain upstreams is empty. An empty namespace list by convention means to watch all namespaces. However the roles are only namespace scoped and not cluster wide. This leads to the watcher trying to list all upstreams in all namespaces that leads to the following error and the gloo pod unable to come up.
This PR fixess it by ensuring that if no upstreams exist, that we fallback to only watching upstreams within the watchNamespaces
Steps to reproduce :
With this fix, the gloo pod comes up without any issues
Context
#5885
#8801
Testing steps
Checklist: