-
Notifications
You must be signed in to change notification settings - Fork 16
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: proposal to add multi-tenancy to Jenkins X
Signed-off-by: ankitm123 <[email protected]>
- Loading branch information
Showing
1 changed file
with
54 additions
and
0 deletions.
There are no files selected for viewing
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
--- | ||
title: Multi-tenant Jenkins X | ||
linktitle: Multi-tenant Jenkins X | ||
description: Multi-tenant Jenkins X | ||
type: docs | ||
weight: 50 | ||
--- | ||
|
||
## Overview | ||
|
||
This document is a proposal to add multi-tenancy support to Jenkins X. | ||
|
||
## Motivation | ||
|
||
Jenkins X lacks multi-tenancy support at the moment. | ||
This makes it hard to scale for bigger companies. | ||
Supporting multi-tenancy opens up Jenkins X to be offered as a managed CI/CD service by any vendor in the future. | ||
Argo and flux support it, so it makes sense for us to support it as well. | ||
|
||
## Pre-requisite | ||
|
||
Some portion of the codebase is hardcoded to use jx as the default install. | ||
Also other namespaces are hardcoded, so that needs to be fixed before we can achieve true multitenancy | ||
|
||
## Current state | ||
|
||
Jenkins X supports silo'ed multi-tenany at this point, which means every team needs to have their own kubernetes cluster and install Jenkins X there. | ||
This does not scale, and becomes expensive very soon! | ||
|
||
What I would ideally want is a way to do multi-tenant install inside a single cluster | ||
|
||
## Proposal | ||
|
||
An installation of Jenkins X needs the following namespaces at a minimum | ||
|
||
- jx | ||
- jx-git-operator | ||
- tekton-pipelines | ||
- secret-infra | ||
|
||
There can be 2 ways to achieve multi-tenancy in a single cluster running Jenkins X | ||
|
||
### Separate namespaces for each team (separate lighthouse installation for each team) | ||
|
||
In this method, each developer team picks their own namespaces for installating Jenkins X. | ||
All jx installations will have their own lighthouse installation. | ||
So team A installs jx in jx-A namespace and team B installs jx in jx-B namespace and so on. | ||
|
||
### Separate namespaces for each team (one lighthouse installation for all teams) | ||
|
||
In this method, each developer team picks their own namespaces for installating Jenkins X. | ||
There is a separate lighthouse installation in a separate namespace. | ||
Also the UI will be in a separate namespace. | ||
So team A installs jx in jx-A namespace and team B installs jx in jx-B namespace and so on. |