Restrict source namespaces in flagger-loadtester #1119
Merged
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.
In a multi-tenant cluster, isolating namespaces using network policies quickly becomes a requirement.
In this context, mutualizing a Flagger instance (in a dedicated namespace) is challenging, because flagger-loadtester generates cross-namespace traffic.
A simple approach is to let each tenant deploy its custom flagger-loadtester in the same namespace as its target canaries. This way, the only cross-namespace traffic is between flagger and flagger-loadtester and can be easily whitelisted by network policies.
However, nothing can prevent a
Canary
fromtenant2
namespace to declareflagger-loadtester.tenant1
as a webhook, and thus to execute arbitrary commands intenant1
namespace.This creates a serious isolation issue.
This PR allows flagger-loadtester to whitelist namespaces from which canaries are allowed.
The proposed
-namespace-regex
flag looks like a simple way to address the problem, but feel free to challenge it 😉.