Add support to watchNamespace and namespace-scoped rbac for Temporal controller#205
Open
R1-lav wants to merge 1 commit intotemporalio:mainfrom
Open
Add support to watchNamespace and namespace-scoped rbac for Temporal controller#205R1-lav wants to merge 1 commit intotemporalio:mainfrom
R1-lav wants to merge 1 commit intotemporalio:mainfrom
Conversation
carlydf
reviewed
Mar 8, 2026
Collaborator
carlydf
left a comment
There was a problem hiding this comment.
Thanks for this, I think namespace-scoped operation is a useful feature. Before we discuss implementation details, it would help to know which use case you're actually targeting:
- Release namespace only: the controller always watches the same namespace it's deployed in (rbac.ownNamespace + watchNamespace both implicitly
refer to the release namespace) - Single arbitrary namespace: the controller is deployed in namespace A but watches namespace B
- Multiple arbitrary namespaces: watchNamespace: "ns1,ns2" with the controller in a third namespace
The reason this matters is that rbac.ownNamespace and watchNamespace are currently independent knobs, but their interaction has sharp edges depending on the answer:
- If the watched namespace(s) differ from the release namespace and
rbac.ownNamespace: true, the controller SA has no RBAC in the namespaces it's actually watching. It will silently fail to act there. - If
watchNamespace: "ns1,ns2"withrbac.ownNamespace: true, a single Role in the release namespace can't cover ns1 or ns2 — you'd need a ClusterRole or separate Roles per namespace.
If the scenario you're trying to support is (1), the implementation could be simplified significantly and the two flags could be collapsed into one. If the answer is (2) or (3), the RBAC side needs more thought before we add tests or docs.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Add support to watchNamespace
Summary
Adds the support to namespace-scoped deployment for the controller manager for environments where cluster wide permissions are not allowed.## Summary
This PR adds support for watching multiple namespaces in the controller via the
--watch-namespaceflag (orWATCH_NAMESPACEenvironment variable).The flag now accepts a comma-separated list of namespaces, allowing the controller to operate in multi-namespace scoped mode.
How it works
--watch-namespace(orWATCH_NAMESPACE) is empty, the controller watches all namespaces (default behavior).Example:
Other changes
Support of ownNamespace in helm values to support creating roles and rolebinding instead of clusterrole and clusterrolebinding for namespace-scoped deployments