linkerd / linkerd/linkerd2

RFC: multi-tenant control plane

Open
#1,095 10 comments 5 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

area/production area/security roadmap
Dominant language
Go
Stars
11.5k
Forks
1.4k
Avg merge
3d 22h
Merged PRs (30d)
53

Description

Many k8s clusters are multi-tenant (for some definition of multi-tenant, probably requires more definition).

The list of functionality that should be isolated:

- dashboard
- stat
- tap
- inject

A user should only be able to see and interact with things that their roles allow them to.

What's the best way for us to work in these environments?

## Restrict control plane credentials

Take advantage of (most) users isolating in kubernetes with namespaces. Install a control plane to a specific namespace and restrict its roles (maybe remove ClusterRoles?).

## Delegate credentials

This is very similar to how the latest kubernetes-dashboard is working. By default, there is a base set of permissions that anyone can use (mostly nothing). When passed a user's token, the dashboard passes their permissions through and controls visibility that way.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

This RFC names dashboard, stat, tap, and inject as control-plane functionality but does not identify files, tests, or entry points. Before implementation, define the tenant and role boundaries and decide between namespace-scoped credentials and delegated user credentials; done means users can only see and interact with resources their roles allow.

Written by the indexing model from the issue text.

Assessment

Tech stack
kubernetes
Domain
authorization, infrastructure
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.