第 8 章 服务发现
借助 3scale 提供的服务发现功能,您可以从 OpenShift 导入服务。
8.1. 关于服务发现
通过使用服务发现,您可以扫描以查找在同一 OpenShift 集群中运行的可发现 API 服务,并将关联的 API 定义自动导入到 3scale 中。
您还可以随时更新 API 集成和 Open API 规格,以便稍后与集群重新同步它们。
服务发现提供以下功能:
- 使用集群 API 查询已正确注解用于发现的服务。
- 配置 3scale 以使用集群内部端点访问服务。
- 导入,作为 3scale ActiveDocs,与该服务关联的 OpenAPI 规格。
- 支持 OpenShift 和红帽单点登录(RH SSO)授权流。
- 使用红帽 Fuse,从 Fuse 版本 7.2 开始.
当您导入可发现的服务时,它会将其命名空间保存在它所属的项目内。导入的服务成为面向客户的新 API、产品及其相应的内部 API 后端。
- 对于内部 3scale,3scale API 提供商可能拥有自己的命名空间和服务。发现的服务可以与 3scale 现有和本地服务共存。
- Fuse 可发现服务部署到 Fuse 产品命名空间中。
8.1.1. 可发现服务的标准
如果要 3scale 在 OpenShift 集群中查找 API,则 API 必须满足以下条件:
Content-Type
标头
API 规格的 Content-Type
标头必须是以下值之一:
-
application/swagger+json
-
application/vnd.oai.openapi+json
-
application/json
OpenShift Service Object YAML 定义
OpenShift Service Object YAML 定义必须包含以下元数据:
-
discovery.3scale.net
标签:(必需)设置为 "true"。3scale 执行选择器定义以查找需要发现的所有服务时,它会使用此标签。 以下注解:
discovery.3scale.net/discovery-version
:(可选)3scale 发现过程的版本。discovery.3scale.net/scheme
:(必需)托管该服务的 URL 的 scheme 部分。可能的值有 "http" 或 "https"。discovery.3scale.net/port
:(必需)集群中服务的端口号。discovery.3scale.net/path
:(可选)托管服务的 URL 的相对基本路径。当路径位于 root("/")时,您可以省略此注解。discovery.3scale.net/description-path
:服务的 OpenAPI 服务描述文档的路径。例如:
metadata: annotations: discovery.3scale.net/scheme: "https" discovery.3scale.net/port: '8081' discovery.3scale.net/path: "/api" discovery.3scale.net/description-path: "/api/openapi/json" labels: discovery.3scale.net: "true" name: i-task-api namespace: fuse
如果您是一个具有管理特权的 OpenShift 用户,您可以在 OpenShift 控制台中查看 API 服务的 YAML 文件:
- 选择 Applications> Services。
-
选择服务,如
i-task-api
,以打开其 Details 页面。 - 选择 Actions> Edit YAML 以打开 YAML 文件。
- 查看完后,选择 Cancel。
-
使用 ovs-networkpolicy
插件的集群
-
要允许 OpenShift 和 3scale 项目之间的流量,带有
ovs-networkpolicy
插件的集群需要在其应用程序项目中创建 NetworkPolicy 对象。 - 有关配置 NetworkPolicy 对象的更多信息,请参阅 关于网络策略