carbon-multitenancy icon indicating copy to clipboard operation
carbon-multitenancy copied to clipboard

Carbon 5 Multitenancy

Open imesh opened this issue 7 years ago • 0 comments

High Level Architecture

The main goal of Carbon 5 (C5) is to make Carbon servers container native. More precisely, it will make servers lightweight, small in size, boot fast, and run on container platforms. As a part of this process in JVM multi-tenancy model found in C4 will be removed and tenancy will be handled by creating a dedicated set of containers for each tenant.

This can be achieved on Kubernetes by using its namespaces feature. Each tenant will have its own namespace on Kubernetes and it will provide a completely isolated environment for creating Carbon containers including network isolation. This approach was verified using a POC and it can be found here.

Moving forward Carbon Multi-tenancy framework will provide a container platform agnostic API for creating such isolated environments on the underlying container platform for managing tenancy. Initially it would support Kubernetes and later support for other container cluster managers will be added. In addition, it would also provide features for integrating tenant specific identity/user management systems using WSO2 Identity Server.

Multi-Tenancy API Design

Tenants API

POST /tenants GET /tenants/ GET /tenants/{name} DELETE /tenants/{name}

Tenant Model:

{
    name: String
}

Deployments API

POST /deployments GET /deployments/ GET /deployments/{id} DELETE /deployments/{id}

Deployment Model:

{
    id: String
    product: String
    version: String
    pattern: Integer
}

imesh avatar Mar 15 '17 05:03 imesh