This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.1.18.11. 从联邦网格导出服务
导出服务允许网格与联邦网格的另一个成员共享一个或多个服务。
您可以使用 ExportedServiceSet
资源,在一个网格中声明您要提供给联邦网格中的另一个对等点的服务。您必须明确声明每个服务要与同级服务器共享。
- 您可以根据命名空间或名称选择服务。
- 您可以使用通配符来选择服务;例如,导出命名空间中的所有服务。
-
您可以使用别名导出服务。例如,您可以将
foo/bar
服务导出为custom-ns/bar
。 -
您只能导出对网格系统命名空间可见的服务。例如:在另一个命名空间中,将
networking.istio.io/exportTo
标签设置为 '.' 的服务不会是导出的候选者。 - 对于导出的服务,它们的目标服务将只看到来自入口网关的流量,而不是原始请求者(即,它们不会看到来自其他网格的出口网关的客户端 ID 或源自请求的工作负载)
以下示例是 red-mesh
导出至 green-mesh
的服务。
ExportedServiceSet 资源示例
参数 | 描述 | 值 |
---|---|---|
metadata: name:
| 将此服务公开给的 ServiceMeshPeshPeer 的名称。 |
必须与 |
metadata: namespace:
| 包含此资源的项目/命名空间的名称(应该是网格的系统命名空间)。 | |
spec: exportRules: - type:
| 监管此服务的导出的规则类型。为服务找到的第一个匹配规则将用于导出。 |
|
|
要创建 | |
|
要在为服务创建使用别名的 | |
|
要创建 | |
|
要为服务创建使用别名的 |
使用名称"勘误"的服务从红色的所有命名空间导出到 blue-mesh。
将 west-data-center 命名空间中的所有服务导出到 green-mesh
1.18.11.1. 创建 ExportedServiceSet 复制链接链接已复制到粘贴板!
您可以创建一个 ExportedServiceSet
资源来显式声明您要提供给网格对等的服务。
服务导出为 <export-name>.<export-namespace>.svc.<ServiceMeshPeer.name>-exports.local
,它将自动路由到目标服务。这是导出的服务在导出网格中已知的名称。当入口网关收到用于此名称的请求时,它将被路由到要导出的实际服务。例如,如果名为 ratings.red-mesh-bookinfo
的服务导出至 green-mesh
作为 ratings.bookinfo
,则服务将导出为 ratings.bookinfo.svc.green-mesh-exports.local
,并且该主机名的 ingress 网关接收的流量将路由到 ratings.red-mesh-bookinfo
服务。
先决条件
-
为网格联邦配置了集群和
ServiceMeshControlPlane
。 -
具有
cluster-admin
角色的帐户。
您可以配置服务以进行导出,即使这些服务尚不存在。当部署与 ExportedServiceSet 中指定的值匹配的服务时,将自动导出该服务。
通过 CLI 操作的步骤
按照以下步骤,从命令行创建 ExportedServiceSet
。
以具有
cluster-admin
角色的用户身份登录 OpenShift Container Platform CLI。输入以下命令。然后在提示时输入您的用户名和密码。oc login --username=<NAMEOFUSER> <API token> https://<HOSTNAME>:6443
$ oc login --username=<NAMEOFUSER> <API token> https://<HOSTNAME>:6443
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 切换到安装 Service Mesh control plane 的项目,如
red-mesh-system
。oc project red-mesh-system
$ oc project red-mesh-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 根据以下示例创建
ExportedServiceSet
文件,其中red-mesh
将服务导出到green-mesh
。从 red-mesh 到 green-mesh 的 ExportedServiceSet 资源示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,在 red-mesh-system 命名空间中上传并创建
ExportedServiceSet
资源。oc create -n <ControlPlaneNamespace> -f <ExportedServiceSet.yaml>
$ oc create -n <ControlPlaneNamespace> -f <ExportedServiceSet.yaml>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
oc create -n red-mesh-system -f export-to-green-mesh.yaml
$ oc create -n red-mesh-system -f export-to-green-mesh.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
根据需要为联合网格中的每个网格对等创建额外的
ExportedServiceSets
。 要验证您从
red-mesh
导出的服务以使用green-mesh
共享的服务,请运行以下命令:oc get exportedserviceset <PeerMeshExportedTo> -o yaml
$ oc get exportedserviceset <PeerMeshExportedTo> -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
oc get exportedserviceset green-mesh -o yaml
$ oc get exportedserviceset green-mesh -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来验证红色导出与 green-mesh 共享的服务:
oc get exportedserviceset <PeerMeshExportedTo> -o yaml
$ oc get exportedserviceset <PeerMeshExportedTo> -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
oc -n red-mesh-system get exportedserviceset green-mesh -o yaml
$ oc -n red-mesh-system get exportedserviceset green-mesh -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从红色网格导出的服务验证与绿色网格共享的示例。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow status.exportedServices
数组列出了当前导出的服务(这些服务与ExportedServiceSet 对象中
的导出规则匹配)。数组中的每个条目都指明导出的服务的名称,以及所导出的本地服务的详细信息。如果缺少您要导出的服务,请确认 Service 对象存在,其名称或标签与
ExportedServiceSet
对象中定义的exportRules
匹配,并且 Service 对象的命名空间被配置为使用ServiceMeshMemberRoll
或ServiceMeshMember
对象作为服务网格的成员。