2.3. Service Mesh 和 Istio 的不同
查看不再支持的 Red Hat OpenShift Service Mesh 发行版本的文档。
Service Mesh 版本 1.0 和 1.1 control plane 不再被支持。有关升级服务网格 control plane 的详情,请参阅 升级 Service Mesh。
有关特定 Red Hat OpenShift Service Mesh 发行版本的支持状态的信息,请参阅产品生命周期页面。
Red Hat OpenShift Service Mesh 安装与上游 Istio 社区安装有许多不同。当在 OpenShift Container Platform 上进行部署时,为了解决问题、提供额外功能或处理不同之处,对 Red Hat OpenShift Service Mesh 的修改有时是必须的。
Red Hat OpenShift Service Mesh 的当前发行版本与当前上游 Istio 社区发行版本的不同:
2.3.1. 多租户安装
上游 Istio 采用单一租户方法,Red Hat OpenShift Service Mesh 支持集群中的多个独立的 control plane。Red Hat OpenShift Service Mesh 使用多租户 Operator 来管理 control plane 生命周期。
Red Hat OpenShift Service Mesh 默认安装多租户 control plane。您可以指定可以访问 Service Mesh 的项目,并将 Service Mesh 与其他 control plane 实例隔离。
2.3.1.1. 多租户和集群范围的安装
多租户安装和集群范围安装之间的主要区别在于使用的权限范围。组件不再使用集群范围的 Role Based Access Control(RBAC)资源 ClusterRoleBinding
。
ServiceMeshMemberRoll
members
列表中的每个项目都将为每个与 control plane 部署关联的服务帐户都有一个 RoleBinding
,每个 control plane 部署只会监视这些成员项目。每个成员项目都有一个 maistra.io/member-of
标签,其中 member-of
值是包含 control plane 安装的项目。
Red Hat OpenShift Service Mesh 配置每个成员项目以确保自身、control plane 和其它成员项目间的网络连接。具体的配置根据 OpenShift Container Platform 软件定义网络 (SDN) 的配置而有所不同。更多详情请参阅“关于 OpenShift SDN”。
如果 OpenShift Container Platform 集群被配置为使用 SDN 插件:
NetworkPolicy
: Red Hat OpenShift Service Mesh 在每个成员项目中创建一个NetworkPolicy
资源,允许从其它成员和 control plane 到 pod 的入站网络数据。如果从 Service Mesh 中删除了一个成员,则这个NetworkPolicy
资源会从项目中删除。注意这也限制了到成员项目的入站网络数据。如果需要来自非成员项目的入站网络数据,则需要创建一个
NetworkPolicy
来允许这些流量通过。-
Multitenant: Red Hat OpenShift Service Mesh 将每个成员项目的
NetNamespace
加入到 control plane 项目的NetNamespace
(相当于运行oc adm pod-network join-projects --to control-plane-project member-project
)。如果您从 Service Mesh 中删除一个成员,它的NetNamespace
与 control plane 分离(相当于运行oc adm pod-network is isolatedate-projects member-project
)。 - Subnet:没有执行其他配置。
2.3.1.2. 集群范围内的资源
上游 Istio 会依赖于两个集群范围的资源。MeshPolicy
和 ClusterRbacConfig
。它们与多租户集群不兼容并已被替换,如下所述。
- ServiceMeshPolicy 替换了用于配置 control-plane-wide 验证策略的 MeshPolicy。这必须与 control plane 在同一个项目中创建。
- ServicemeshRbacConfig 替换 ClusterRbacConfig 以配置基于 control-plane 范围角色的访问控制。这必须与 control plane 在同一个项目中创建。