跳到主要内容
版本:3.2.14.3

发布服务版本

当你的 API 设计、开发和部署完成后,如果有版本管理的场景和需求,可以使用 API7 网关将服务发布到不同的网关组,而非直接在网关组上对配置进行修改。 通常,API 会先发布到测试环境,然后再发布到生产环境。API7 通过网关组来隔离不同的环境,在各个环境中,API 从属于一个服务(Service),服务内所有 API 拥有共享的上游 (Upstream)。

本教程将指导你将 httpbin 服务发布到一个网关组。你将学习如何:

  1. 手动创建服务模板以及通过 OpenAPI 文件创建服务模板。
  2. 通过配置上游节点和使用服务发现机制来发布服务。

前提条件

  1. 安装 API7 企业版
  2. 确保网关组中至少有一个网关实例

新增服务模板并添加路由

  1. 在左侧导航栏中选择 服务中心, 然后点击 新增服务
  2. 选择 手动新增
  3. 在表单中执行以下操作:
  • 名称 填写 httpbin API
  • 服务类型 选择 HTTP (七层代理)
  • 上游 Scheme 选择 HTTP
  • 点击 新增
  1. 进入服务内,点击 新增路由
  2. 在表单中,执行以下操作:
  • 名称 填写 getting-started-anything.
  • 路径 填写 /anything/*
  • HTTP 方法 选择 GET
  1. 点击 新增

将服务版本发布到网关组

在 API7 网关中,你可以使用静态上游节点或动态服务发现来定义请求的目标。静态上游节点适用于地址固定的、定义明确的服务,而动态服务发现则更适合于服务实例可以动态添加或删除的微服务架构。

使用上游节点发布服务

  1. 在左侧导航栏中选择 服务中心, 然后选择之前创建的 httpbin API 服务。
  2. 点击 发布新版本
  3. 在对话框中选择目标网关组,例如 默认网关组, 然后点击 下一步
  4. 在表单中执行以下操作:
  • 新版本 填写 1.0.0
  • 如何找到上游 选择 使用节点
  • 点击 新增节点。在表单中执行以下操作:
    • 主机端口 填写 httpbin.org80
    • 权重 使用默认值 100
    • 点击 新增
  • 确认服务信息,然后点击 发布

如需同时批量发布多个服务,在左侧导航栏中选择 服务中心, 然后点击 批量发布服务

使用服务发现发布服务

Consul、Eureka、Nacos 或 Kubernetes Service Discovery 等服务发现机制可以动态检测后端节点。因此,用户无需手动输入多个上游节点。

信息

发布后,服务无法在使用定义的上游节点和使用服务发现之间直接切换。不过,可以通过流量灰度在上游节点和服务发现之间进行切换。

  1. 在左侧导航栏选择 网关组,然后选择你的目标网关组,例如 默认网关组
  2. 在左侧子菜单选择 服务注册中心,然后点击 新增服务注册中心连接
  3. 在表单中执行以下操作:
  • 名称 填写 测试用注册中心
  • 发现类型 选择 Kubernetes
  • 填写注册中心的 API 服务器地址令牌
  • 点击 新增
  1. 等待注册中心的状态变为 健康
  2. 在左侧导航栏选择 服务中心,然后点击 httpbin API 服务下面的 发布新版本
  3. 选择你的目标网关组,例如 默认网关组,然后点击 下一步
  4. 在表单中执行以下操作:
  • 新版本 填写 1.0.0
  • 如何找到上游 选择 使用服务发现
  • 服务注册中心 选择 测试用注册中心,然后选择对应的 命名空间服务名称
  • 确认服务信息,然后点击 发布

下面是一个互动演示,提供连接 Kubernetes 服务发现的实践入门。通过点击并按照步骤操作,你将更好地了解如何在 API7 网关中使用它:

使用 ADC 发布服务

你还可以使用 ADC 来声明式配置 API7 企业版。完整的配置如下:

adc.yaml
services:
- name: httpbin API
upstream:
name: default
scheme: http
nodes:
- host: httpbin.org
port: 80
weight: 100
routes:
- uris:
- /anything/*
name: getting-started-anything
description: Return anything that is passed in on the request.
methods:
- GET

将配置同步到 API7 企业版:

adc sync -f adc.yaml

验证 API

curl "http://127.0.0.1:9080/anything/publish"

你应该会看到以下输出:

{
"args": {},
"data": "",
"files": {},
"form": {},
"headers": {
"Accept": "*/*",
"Host": "localhost",
"User-Agent": "curl/7.88.1",
"X-Amzn-Trace-Id": "Root=1-664cc6d6-10fe9f740ab1629e19cf85a2",
"X-Forwarded-Host": "localhost"
},
"json": null,
"method": "GET",
"origin": "152.15.0.1, 116.212.249.196",
"url": "http://localhost/anything/publish"
}

相关阅读