命名空间标签
Red Hat OpenShift Service Mesh 与 Istio 安装不同,它提供了附加功能或处理在 AWS 上部署 Red Hat OpenShift Service 时遇到的差异。
以下功能在 Service Mesh 和 Istio 中有所不同。
上游 Istio 社区安装会自动将 sidecar 注入到已标记项目的 Pod 中。
Red Hat OpenShift Service Mesh 不会自动将 sidecar 注入任何 Pod,但您必须使用注释选择加入注入,而无需标记项目。此方法需要的权限较少,并且不会与其他 Red Hat OpenShift Service on AWS 功能(如构建器 Pod)冲突。要启用自动注入,请指定sidecar.istio.io/inject
标签或注释,如“自动 sidecar 注入”部分所述。
上游 Istio | Red Hat OpenShift Service Mesh | |
---|---|---|
命名空间标签 |
支持“enabled”和“disabled” |
支持“disabled” |
Pod 标签 |
支持“true”和“false” |
支持“true”和“false” |
Pod 注释 |
仅支持“false” |
支持“true”和“false” |
Istio 基于角色的访问控制 (RBAC) 提供了一种机制,可用于控制对服务的访问。您可以通过用户名或指定一组属性来识别主体,并相应地应用访问控制。
上游 Istio 社区安装包括执行精确标题匹配、匹配标题中的通配符或检查包含特定前缀或后缀的标题的选项。
Red Hat OpenShift Service Mesh 通过使用正则表达式扩展了匹配请求标题的能力。使用正则表达式指定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 Service Mesh 使用 OpenSSL 替换 BoringSSL。OpenSSL 是一个软件库,包含安全套接字层 (SSL) 和传输层安全 (TLS) 协议的开源实现。Red Hat OpenShift Service Mesh 代理二进制文件从底层 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 会在所有 Red Hat OpenShift Service on AWS 节点上创建。要排除在特定节点上创建 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
如何自定义它的更多信息,请参阅 Red Hat OpenShift Service on AWS 文档。如果您使用 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 默认安装多租户控制平面。您可以指定可以访问 Service Mesh 的项目,并将 Service Mesh 与其他控制平面实例隔离。
多租户安装和集群范围安装之间的主要区别是 istod 使用的权限范围。这些组件不再使用集群范围的基于角色的访问控制 (RBAC) 资源ClusterRoleBinding
。
ServiceMeshMemberRoll
members
列表中的每个项目都将具有与控制平面部署关联的每个服务帐户的RoleBinding
,并且每个控制平面部署将仅监视这些成员项目。每个成员项目都添加了一个maistra.io/member-of
标签,其中member-of
值是包含控制平面安装的项目。
Red Hat OpenShift Service Mesh 会配置每个成员项目,以确保其自身、控制平面和其他成员项目之间的网络访问,方法是在每个成员项目中创建一个NetworkPolicy
资源,允许来自其他成员和控制平面的所有 Pod 的入口流量。如果您从 Service Mesh 中删除成员,则此NetworkPolicy
资源将从项目中删除。
这也将入口流量限制为仅成员项目。如果您需要来自非成员项目的入口流量,则需要创建一个 |
在 AWS 上的 Red Hat OpenShift Service 中通过服务网格安装 Kiali 与社区版 Kiali 安装方式存在多处差异。这些修改有时是为了解决问题、提供额外功能或处理在 AWS 上的 Red Hat OpenShift Service 部署中的差异。
Kiali 已默认启用。
Ingress 已默认启用。
Kiali ConfigMap 已更新。
Kiali 的 ClusterRole 设置已更新。
请勿编辑 ConfigMap,因为您的更改可能会被服务网格或 Kiali 运算符覆盖。Kiali 运算符管理的文件带有kiali.io/
标签或注释。更新运算符文件应仅限于拥有cluster-admin
权限的用户。如果您使用 Red Hat OpenShift Dedicated,则更新运算符文件应仅限于拥有dedicated-admin
权限的用户。
在 AWS 上的 Red Hat OpenShift Service 中通过服务网格安装分布式追踪平台 (Jaeger) 与社区版 Jaeger 安装方式存在多处差异。这些修改有时是为了解决问题、提供额外功能或处理在 AWS 上的 Red Hat OpenShift Service 部署中的差异。
服务网格已默认启用分布式追踪。
服务网格已默认启用 Ingress。
Zipkin 端口名称已更改为jaeger-collector-zipkin
(从http
更改)。
当您选择production
或streaming
部署选项时,Jaeger 默认使用 Elasticsearch 进行存储。
社区版 Istio 提供通用的“tracing”路由。Red Hat OpenShift Service Mesh 使用由 Red Hat OpenShift 分布式追踪平台 (Jaeger) 运算符安装的“jaeger”路由,并且该路由已受到 OAuth 保护。
Red Hat OpenShift Service Mesh 使用 Envoy 代理的 sidecar,Jaeger 也使用 Jaeger agent 的 sidecar。这两个 sidecar 是分别配置的,不应混淆。代理 sidecar 创建与 pod 的入口和出口流量相关的跨度。agent sidecar 接收应用程序发出的跨度并将其发送到 Jaeger Collector。