This document summarizes multitenancy in WSO2 C5. It discusses how multitenancy works in C4 with tenant isolation at the Carbon server level. In C5, tenant isolation occurs at the Kubernetes namespace level, with each tenant assigned their own namespace. This allows independent tenant instances to run in containers, with services and resources isolated by namespace. The document provides an overview of how tenant services and clusters are deployed and accessed in Kubernetes.
2. Agenda
● An Introduction to Multitenancy
● Multitenancy Architecture in C4
● A Multitenant Carbon Server Cluster in C4
● Multitenancy Architecture in C5
● Carbon Server Clusters in C5
● Kubernetes Namespaces
● Multitenancy in C5 with Kubernetes
● Accessing Carbon Clusters in Kubernetes
3. Multitenancy
Multitenancy is a reference to the mode of operation of
software where multiple independent instances of one
or multiple applications operate in a shared environment
- Gartner
http://www.gartner.com/it-glossary/multitenancy
4. Multitenancy Architecture in C4
https://hostname:port/t/foo.com/services/baz
https://hostname:port/t/bar.com/services/baz
Tenant 1
Users
Execution
Data
Users
Execution
Data
Tenant 2
Carbon Server JVM
https://docs.wso2.com/display/Carbon420/Multitenancy
5. A Multitenant Carbon Server Cluster in C4
Load Balancer
Carbon Server JVM 1 Carbon Server JVM 2 Carbon Server JVM n
6. Multitenancy Architecture in C5
https://hostname:port/services/baz https://hostname:port/services/baz
Tenant 1
Users
Execution
Data
Carbon Server JVM 1
Tenant 2
Users
Execution
Data
Carbon Server JVM 2
7. Carbon Server Clusters in C5
Load Balancer 1 Load Balancer 2
Tenant 1 Carbon Cluster Tenant 2 Carbon Cluster
9. Multitenancy in C5 with Kubernetes
Tenant 1 Namespace Tenant 2 Namespace
Service - BarService - Foo
RC
HPA
SLB SLB
RC
HPA
Kubernetes Cluster
10. Accessing Carbon Clusters in Kubernetes
● Using services via nodes
○ https://<node-ip>:<service-node-port>/
● Using ingress/service load balancers (slb)
○ Access via nodes
■ https://<node-ip>:<slb-port>/
○ K8S SDN connected to LAN/WAN
■ https://<slb-ip>:<slb-port>/
● Using kube-api server
○ https://<kubernetes-master>:<api-server-
port>/api/v1/proxy/namespaces/<namespace>/services/<service
-name>/http://kubernetes.io/docs/user-guide/services/