发布服务版本
当你的 API 设计、开发和部署完成后,如果有版本管理的场景和需求,可以使用 API7 网关将服务发布到不同的网关组,而非直接在网关组上对配置进行修改。 通常,API 会先发布到测试环 境,然后再发布到生产环境。API7 企业版通过网关组来隔离不同的环境,在各个环境中,API 从属于一个服务(Service),服务内所有 API 拥有共享的上游 (Upstream)。
本教程将指导你将 httpbin 服务发布到一个网关组。你将学习如何:
- 手动创建服务模板以及通过 OpenAPI 文件创建服务模板。
- 通过配置上游节点和使用服务发现机制来发布服务。
前提条件
- 安装 API7 企业版。
- 确保网关组中至少有一个网关实例。
新增服务模板并添加路由
手动新增
- 控制台
- ADC
- 在左侧导航栏中选择 服务中心, 然后点击 新增服务。
- 选择 手动新增。
- 在表单中执行以下操作:
- 名称 填写
httpbin API
。 - 服务类型 选择
HTTP (七层代理)
。 - 上游 Scheme 选择
HTTP
。 - 点击 新增。
- 进入服务内,点击 新增路由。
- 在表单中,执行以下操作:
- 名称 填写
getting-started-anything
. - 路径 填写
/anything/*
。 - HTTP 方法 选择
GET
。
- 点击 新增。
创建一个 ADC 配置文件,包含服务及其上游和路由:
adc.yaml
services:
- name: httpbin API
upstream:
name: httpbin upstream
scheme: http
nodes:
- host: httpbin.org
port: 80
weight: 100
routes:
- uris:
- /anything/*
name: getting-started-anything
methods:
- GET
导入 OpenAPI 文件
控制台和 ADC 都支持导入 OpenAPI v3.0 规范。
在 YAML/JSON 文件中定义你的 API,如下所示:
OpenAPI.yaml
openapi: 3.1.0
info:
title: httpbin API
description: "httpbin API for the API7 Enterprise Getting Started guides."
version: 1.0.0
paths:
"/anything/*":
get:
tags:
- Anything
summary: Returns anything that is passed into the request.
operationId: getting-started-anything
responses:
"200":
description: Successful Response
content:
application/json:
schema:
type: string
tags:
- name: Anything
description: Return anything that is passed in on the request.
然后在 API7 网关中使用:
- 控制台
- ADC
- 在左侧导航栏中选择 服务中心, 然后点击 新增服务。
- 选择 导入 OpenAPI。
- 在表单中执行以下操作:
- 上传你的 YAML/JSON 文件。
- 上游 Scheme 选择
HTTP
。 - 点击 下一步。
- 确认以下信息:
- 名称:来自 OpenAPI 文件的
title
。 - 标签:来自 OpenAPI 文件的
tag
。 - 描述:来自 OpenAPI 文件的
description
。 - 路由: 来自 OpenAPI 文件的
Paths
。
- 点击 新增。
使用 ADC 将 OpenAPI 文件转换成 ADC 配置文件:
adc convert openapi -f openapi.yaml -o adc.yaml
将服务版本发布到网关组
在 API7 网关中,你可以使用静态上游节点或动态服务发现来定义请求的目标。静态上游节点适用于地址固定的、定义明确的服务,而动态服务发现则更适合于服务实例可以动态添加或删除的微服务架构。
发布单个服务
- 控制台
- ADC
- 在左侧导航栏中选择 服务中心, 然后选择之前创建的
httpbin API
服务。 - 点击 发布新版本。
- 在对话框中选择目标网关组,例如
默认网关组
, 然后点击 下一步。