Whereas upstream Istio takes a single tenant approach, Maistra Service Mesh supports multiple independent control planes within the cluster. Maistra Service Mesh uses a multitenant operator to manage the control plane lifecycle.
 
Maistra Service Mesh installs a multitenant control plane by default. You specify the projects that can access the Maistra, and isolate the Maistra from other control plane instances.
 
Multitenancy versus cluster-wide installations
The main difference between a multitenant installation and a cluster-wide installation is the scope of privileges used by the control plane deployments, for example, Galley and Pilot. The components no longer use cluster-scoped Role Based Access Control (RBAC) resource ClusterRoleBinding.
 
Every project in the ServiceMeshMemberRoll members list will have a RoleBinding for each service account associated with the control plane deployment and each control plane deployment will only watch those member projects. Each member project has a maistra.io/member-of label added to it, where the member-of value is the project containing the control plane installation.
 
Maistra Service Mesh configures each member project to ensure network access between itself, the control plane, and other member projects. The exact configuration differs depending on how OpenShift Container Platform software-defined networking (SDN) is configured. See About OpenShift SDN for additional details.
 
If the OpenShift Container Platform cluster is configured to use the SDN plug-in:
 
- 
NetworkPolicy: Maistra Service Mesh creates aNetworkPolicyresource in each member project allowing ingress to all pods from the other members and the control plane. If you remove a member from Maistra, thisNetworkPolicyresource is deleted from the project.
 
| Note | 
This also restricts ingress to only member projects. If you require ingress from non-member projects, you need to create a NetworkPolicyto allow that traffic through. |  
 
 
- 
Multitenant: Maistra Service Mesh joins the NetNamespacefor each member project to theNetNamespaceof the control plane project (the equivalent of runningoc adm pod-network join-projects --to control-plane-project member-project). If you remove a member from the Maistra, itsNetNamespaceis isolated from the control plane (the equivalent of runningoc adm pod-network isolate-projects member-project).
 
- 
Subnet: No additional configuration is performed. 
 
 
Cluster scoped resources
Upstream Istio has two cluster scoped resources that it relies on. The MeshPolicy and the ClusterRbacConfig. These are not compatible with a multitenant cluster and have been replaced as described below.
 
- 
ServiceMeshPolicy replaces MeshPolicy for configuration of control-plane-wide authentication policies. This must be created in the same project as the control plane. 
- 
ServicemeshRbacConfig replaces ClusterRbacConfig for configuration of control-plane-wide role based access control. This must be created in the same project as the control plane.