命名空间标签
Red Hat OpenShift 服务网格与 Istio 安装有所不同,它提供了附加功能,或在 OpenShift Dedicated 上部署时处理差异。
以下功能在服务网格和 Istio 中有所不同。
上游 Istio 社区安装会自动将 sidecar 注入到您已标记的项目中的 Pod 中。
Red Hat OpenShift 服务网格不会自动将 sidecar 注入到任何 Pod 中,但您必须使用注释选择加入注入,而无需标记项目。此方法需要的权限较少,并且不会与其他 OpenShift Dedicated 功能(例如构建器 Pod)冲突。要启用自动注入,请指定sidecar.istio.io/inject
标签或注释,如“自动 sidecar 注入”部分所述。
上游 Istio | Red Hat OpenShift 服务网格 | |
---|---|---|
命名空间标签 |
支持“enabled”和“disabled” |
支持“disabled” |
Pod 标签 |
支持“true”和“false” |
支持“true”和“false” |
Pod 注释 |
仅支持“false” |
支持“true”和“false” |
Istio 基于角色的访问控制 (RBAC) 提供了一种机制,您可以使用它来控制对服务的访问。您可以通过用户名或指定一组属性来识别主体,并相应地应用访问控制。
上游 Istio 社区安装包括执行精确标头匹配、匹配标头中的通配符或检查包含特定前缀或后缀的标头的选项。
Red Hat OpenShift 服务网格通过使用正则表达式扩展了匹配请求标头功能。使用正则表达式指定属性键 request.regex.headers
。
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
name: httpbin-usernamepolicy
spec:
action: ALLOW
rules:
- when:
- key: 'request.regex.headers[username]'
values:
- "allowed.*"
selector:
matchLabels:
app: httpbin
Red Hat OpenShift 服务网格将 BoringSSL 替换为 OpenSSL。OpenSSL 是一个软件库,其中包含安全套接字层 (SSL) 和传输层安全 (TLS) 协议的开源实现。Red Hat OpenShift 服务网格代理二进制文件会从底层的 Red Hat Enterprise Linux 操作系统动态链接 OpenSSL 库(libssl 和 libcrypto)。
您可以使用 OpenShift Virtualization 将虚拟机部署到 OpenShift。然后,您可以像应用于网格中任何其他 Pod 一样,将网格策略(例如 mTLS 或 AuthorizationPolicy)应用于这些虚拟机。
已向所有资源添加了maistra-version标签。
所有 Ingress 资源已转换为 OpenShift Route 资源。
Grafana、分布式追踪 (Jaeger) 和 Kiali 默认启用,并通过 OpenShift 路由暴露。
已从所有模板中删除 Godebug。
已删除istio-multi
ServiceAccount 和 ClusterRoleBinding,以及istio-reader
ClusterRole。
Red Hat OpenShift Service Mesh 不支持EnvoyFilter
配置,除非在文档中明确说明。由于与底层 Envoy API 紧密耦合,因此无法保持向后兼容性。EnvoyFilter
补丁对 Istio 生成的 Envoy 配置的格式非常敏感。如果 Istio 生成的配置发生更改,则有可能破坏EnvoyFilter
的应用。
Red Hat OpenShift Service Mesh 包含 CNI 插件,它为您提供了一种替代方法来配置应用程序 Pod 网络。CNI 插件替换了init-container
网络配置,无需授予服务帐户和项目对具有提升权限的安全上下文约束 (SCC) 的访问权限。
默认情况下,Istio 容器网络接口 (CNI) Pod 会在所有 OpenShift Dedicated 节点上创建。要排除在特定节点上创建 CNI Pod,请将 |
Red Hat OpenShift Service Mesh 默认安装入口和出口网关。您可以使用以下设置在ServiceMeshControlPlane
(SMCP) 资源中禁用网关安装
spec.gateways.enabled=false
禁用入口和出口网关。
spec.gateways.ingress.enabled=false
禁用入口网关。
spec.gateways.egress.enabled=false
禁用出口网关。
操作员会为默认网关添加注释,以指示它们是由 Red Hat OpenShift Service Mesh 运算符生成和管理的。 |
Istio 网关的 OpenShift 路由在 Red Hat OpenShift Service Mesh 中自动管理。每次在服务网格内创建、更新或删除 Istio 网关时,都会创建、更新或删除 OpenShift 路由。
名为 Istio OpenShift Routing (IOR) 的 Red Hat OpenShift Service Mesh 控制平面组件会同步网关路由。有关更多信息,请参阅自动路由创建。
不支持通配符域名 ("*")。如果在网关定义中找到通配符域名,Red Hat OpenShift Service Mesh *将*创建路由,但将依赖 OpenShift 创建默认主机名。这意味着新创建的路由*不会*是通配符 ("*") 路由,而是将具有<route-name>[-<project>].<suffix>
形式的主机名。有关默认主机名的工作方式以及cluster-admin
如何自定义它的更多信息,请参阅 OpenShift Dedicated 文档。如果您使用 Red Hat OpenShift Dedicated,请参考 Red Hat OpenShift Dedicated 的dedicated-admin
角色。
虽然上游 Istio 采用单租户方法,但 Red Hat OpenShift Service Mesh 支持集群内多个独立的控制平面。Red Hat OpenShift Service Mesh 使用多租户运算符来管理控制平面的生命周期。
Red Hat OpenShift Service Mesh 默认安装多租户控制平面。您可以指定可以访问服务网格的项目,并将服务网格与其他控制平面实例隔离开。
多租户安装和集群范围安装之间的主要区别是 istod 使用的权限范围。组件不再使用集群范围的基于角色的访问控制 (RBAC) 资源ClusterRoleBinding
。
ServiceMeshMemberRoll
members
列表中的每个项目都将具有与控制平面部署关联的每个服务帐户的RoleBinding
,并且每个控制平面部署仅监视这些成员项目。每个成员项目都添加了maistra.io/member-of
标签,其中member-of
值是包含控制平面安装的项目。
Red Hat OpenShift Service Mesh 会配置每个成员项目,以确保其自身、控制平面和其他成员项目之间的网络访问,方法是在每个成员项目中创建一个NetworkPolicy
资源,允许来自其他成员和控制平面的所有 Pod 的入口流量。如果您从服务网格中删除成员,则此NetworkPolicy
资源将从项目中删除。
这也将入口流量限制为仅成员项目。如果您需要来自非成员项目的入口流量,则需要创建一个 |
在 OpenShift Dedicated 上通过服务网格安装 Kiali 与社区 Kiali 安装方式有多处不同。这些修改有时是必要的,用于解决问题、提供额外功能或处理在 OpenShift Dedicated 上部署时的差异。
Kiali 已默认启用。
Ingress 已默认启用。
Kiali ConfigMap 已更新。
Kiali 的 ClusterRole 设置已更新。
请勿编辑 ConfigMap,因为您的更改可能会被服务网格或 Kiali Operators 覆盖。Kiali Operator 管理的文件具有 kiali.io/
标签或注释。更新 Operator 文件应仅限于拥有 cluster-admin
权限的用户。如果您使用的是 Red Hat OpenShift Dedicated,则更新 Operator 文件应仅限于拥有 dedicated-admin
权限的用户。
在 OpenShift Dedicated 上使用服务网格安装分布式追踪平台 (Jaeger) 与社区 Jaeger 安装方式有多处不同。这些修改有时是必要的,用于解决问题、提供额外功能或处理在 OpenShift Dedicated 上部署时的差异。
服务网格已默认启用分布式追踪。
服务网格已默认启用 Ingress。
Zipkin 端口名称已从 http
更改为 jaeger-collector-zipkin
。
当您选择 production
或 streaming
部署选项时,Jaeger 默认使用 Elasticsearch 进行存储。
社区版本的 Istio 提供了一个通用的“tracing”路由。Red Hat OpenShift 服务网格使用由 Red Hat OpenShift 分布式追踪平台 (Jaeger) Operator 安装的“jaeger”路由,并且该路由已受 OAuth 保护。
Red Hat OpenShift 服务网格为 Envoy 代理使用 sidecar,Jaeger 也为 Jaeger 代理使用 sidecar。这两个 sidecar 是分别配置的,不应混淆。代理 sidecar 创建与 Pod 的入口和出口流量相关的跨度。代理 sidecar 创建与 Pod 的进出流量相关的 Span。Agent sidecar 接收应用程序发出的 Span 并将其发送到 Jaeger Collector。