租户是指多组不同的应用或者用户同时运行在一个基础资源池之上,实现软件、硬件资源的共享,为了安全需求,平台需要提供资源隔离的能力。
在OCP中,project是一个进行租户隔离的概念,它来源于kubernetes的namespace,并对其进行了功能的扩展。利用Project,OCP平台从多个层面提供了多租户的支持。
- 权限控制。通过OCP平台细粒度的权限管理机制,管理员可以对不同的用户和组设置不同project的权限,不同用户登录以后只能操作和管理特定的project
- 网络隔离。OCP平台使用openvswitch来管理内部的容器网络,提供两种类型的网络模式,一种是集群范围内互通的平面网络,另一种是project级别隔离的网络。每个project都有一个虚拟网络ID(VNID),不同VNID的流量被openvswitch自动隔离。所以不同项目之间的服务在网络层不能互通。
- Router隔离。Router是OCP平台一个重要软件资源,它提供了外部请求导入OCP集群内部的能力。OCP提供了Router分组的功能,不同的project可以使用独立的Router,不互相干扰,这样就避免了由于某些应用流量过大时对其他应用造成干扰。
物理资源池隔离。在多租户的环境中,为了提高资源的利用率一般情况下物理资源池是共享的,但是有些用户也会提供独占资源池的需求。针对这种类型的需求,OCP平台利用nodeSelector的功能可以将基础设施资源池划分给特定的project独享,实现从物理层面的隔离。