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.12. 将服务导入到联邦网格中
导入服务可让您明确指定从另一个网格导出的服务应在服务网格内访问。
您可以使用 ImportedServiceSet 资源来选择导入的服务。网格只可使用由网格 peer 导出并明确导入的服务。您没有显式导入的服务不会在网格中提供。
- 您可以根据命名空间或名称选择服务。
- 您可以使用通配符来选择服务,例如,将导出的所有服务导入到命名空间。
- 您可以使用标签选择器(可以是全局到网格)或作用于特定成员命名空间来选择用于导出的服务。
-
您可以使用别名导入服务。例如,您可以将
custom-ns/bar服务导入为other-mesh/bar。 -
您可以指定一个自定义域后缀,该后缀将附加到所导入服务的
name.namespace的完全限定域名中;例如bar.other-mesh.imported.local。
以下示例是 green-mesh 导入 通过 red-mesh 导出的服务。
ImportedServiceSet 示例
| 参数 | 描述 | 值 |
|---|---|---|
metadata: name:
| 将服务导出到联邦网格的 ServiceMeshPeer 的名称。 | |
metadata: namespace:
| 包含 ServiceMeshPeer 资源(网格系统命名空间)的命名空间名称。 | |
spec: importRules: - type:
| 监管该服务导入的规则类型。为服务找到的第一个匹配规则将用于导入。 |
|
|
|
要创建 | |
spec:
importRules:
- type: NameSelector
importAsLocal:
|
设置为 |
|
|
|
要在为服务创建使用别名的 |
将"bookinfo/ratings"服务从红色导入到 blue-mesh
将 red-mesh 的 west-data-center 命名空间中的所有服务导入到 green-mesh 命名空间中。这些服务可作为 <name>.west-data-center.svc.red-mesh-imports.local 访问
1.18.12.1. 创建 ImportedServiceSet 复制链接链接已复制到粘贴板!
您可以创建一个 ImportedServiceSet 资源来显式声明您要导入到网格中的服务。
服务使用名称 <exported-name>.<exported-namespace>.svc.<ServiceMeshPeer.name>.remote 导入,它是一个"hidden"服务,仅在出口网关命名空间中可见,并与导出的服务主机名相关联。默认情况下,该服务将本地作为 <export-name>.<export-namespace>.<domainSuffix> 提供,其中 domainSuffix 是 svc.<ServiceMeshPeshPeer.name>-imports.local, 除非 importAsLocal 设置为 true,否则 domainSuffix 为 svc.cluster.local。如果 importAsLocal 设为 false,则会应用导入规则中的域后缀。您可以像网格中的任何其他服务一样对待本地导入。它通过出口网关自动路由,它将重定向到导出服务的远程名称。
先决条件
-
为网格联邦配置了集群和
ServiceMeshControlPlane。 -
具有
cluster-admin角色的帐户。
您可以配置用于导入的服务,即使它们尚未导出。当部署并导出与 ImportedServiceSet 中指定的值匹配的服务时,它会被自动导入。
通过 CLI 操作的步骤
按照以下步骤,通过命令行创建 ImportedServiceSet。
以具有
cluster-admin角色的用户身份登录 OpenShift Container Platform CLI。输入以下命令。然后在提示时输入您的用户名和密码。oc login --username=<NAMEOFUSER> <API token> https://<HOSTNAME>:6443
$ oc login --username=<NAMEOFUSER> <API token> https://<HOSTNAME>:6443Copy to Clipboard Copied! Toggle word wrap Toggle overflow 切换到安装 Service Mesh control plane 的项目,如
green-mesh-system。oc project green-mesh-system
$ oc project green-mesh-systemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 根据以下示例创建一个
ImportedServiceSet文件,其中green-mesh导入之前通过red-mesh导出的服务。从 red-mesh 到 green-mesh 的 ImportedServiceSet 资源示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令在 green-mesh-system 命名空间中上传并创建
ImportedServiceSet资源。oc create -n <ControlPlaneNamespace> -f <ImportedServiceSet.yaml>
$ oc create -n <ControlPlaneNamespace> -f <ImportedServiceSet.yaml>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
oc create -n green-mesh-system -f import-from-red-mesh.yaml
$ oc create -n green-mesh-system -f import-from-red-mesh.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
根据需要为联邦网格中的每个网格对等创建额外的
ImportedServiceSet资源。 要验证已导入到
green-mesh中的服务,请运行以下命令:oc get importedserviceset <PeerMeshImportedInto> -o yaml
$ oc get importedserviceset <PeerMeshImportedInto> -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
oc get importedserviceset green-mesh -o yaml
$ oc get importedserviceset green-mesh -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令以验证导入到网格中的服务。
oc get importedserviceset <PeerMeshImportedInto> -o yaml
$ oc get importedserviceset <PeerMeshImportedInto> -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
importedserviceset/red-mesh' object in the 'green-mesh-system命名空间中的 status 部分验证从红色网格导出的服务是否已导入到绿色网格中 :oc -n green-mesh-system get importedserviceset/red-mesh -o yaml
$ oc -n green-mesh-system get importedserviceset/red-mesh -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在上例中,仅导入 ratings 服务,如
localService下的填充字段所示。reviews 服务可用于导入,但目前并不导入,因为它与ImportedServiceSet对象中的任何importRules不匹配。