Feature Description
v1 supported multiple consumers sharing one provider namespace-space via the isolation strategies (Prefixed, Namespaced) and APIServiceNamespace mapping. The v2 slim core drops this by design: sync is scope/namespace/name-preserving, and in-core multi-consumer isolation is an explicit non-goal of v2-slim-core.md (tenancy becomes a deployment concern or an extension).
Today the answers for a shared provider are:
- Per-consumer credentials via
iam.kbind.io Grants — isolation is exactly as strong as the issued RBAC; ownership markers (core.kbind.io/managed) detect conflicts but do not protect against overprivileged credentials.
- Unique namespaces per consumer (e.g.
tenant-<id>), since sync is namespace-preserving.
- Dedicated cluster/vcluster/kcp workspace per consumer.
- A compile-time
Mapper implementation in an out-of-tree konnector build (v1 Prefixed is implementable; scope conversion intentionally is not).
None of these gives an out-of-the-box story for "many consumers, one provider, identical namespace names". This issue tracks deciding and documenting how far v2 should go.
Proposed Solution
Alternative Solutions
Reintroduce isolation strategies into the core API. Rejected by the v2 proposal: the core CRDs should never promise renaming, and scope conversion stays out.
Additional Context
Feature Description
v1 supported multiple consumers sharing one provider namespace-space via the isolation strategies (
Prefixed,Namespaced) andAPIServiceNamespacemapping. The v2 slim core drops this by design: sync is scope/namespace/name-preserving, and in-core multi-consumer isolation is an explicit non-goal of v2-slim-core.md (tenancy becomes a deployment concern or an extension).Today the answers for a shared provider are:
iam.kbind.ioGrants — isolation is exactly as strong as the issued RBAC; ownership markers (core.kbind.io/managed) detect conflicts but do not protect against overprivileged credentials.tenant-<id>), since sync is namespace-preserving.Mapperimplementation in an out-of-tree konnector build (v1Prefixedis implementable; scope conversion intentionally is not).None of these gives an out-of-the-box story for "many consumers, one provider, identical namespace names". This issue tracks deciding and documenting how far v2 should go.
Proposed Solution
Mapperimplementation (v1-stylePrefixedkey mapping) as an example out-of-tree konnector build, proving the extension seam worksTransformerextension point (payload mutation: label injection, field stripping) is needed for tenancy labeling — currently deferred in the proposalAlternative Solutions
Reintroduce isolation strategies into the core API. Rejected by the v2 proposal: the core CRDs should never promise renaming, and scope conversion stays out.
Additional Context
docs/proposals/v2-slim-core.md(Non-Goals, "Extension point 1: Mapper")docs/content/usage/synchronization.md("Cluster Isolation")