3.4. 配置您的产品
您必须在 Private Base URL 字段中声明您的 API 后端,这是 API 后端的端点主机。在处理了所有身份验证、授权、速率限值和统计数据后,APIcast 将所有流量重定向到您的 API 后端。
本节将指导您配置产品:
3.4.1. 声明 API 后端
通常,您的 API 的私有基本 URL 将会像 https://api-backend.yourdomain.com:443
一样在您管理的域中(yourdomain.com
)。例如,如果您与 Twitter API 集成,则私有基本 URL 为 https://api.twitter.com/
。
在本例中,您将使用 3scale 托管的 Echo API,它是一个简单的 API,接受任何路径并返回有关请求的信息(路径、请求参数、标头等)。其专用基础 URL 是 https://echo-api.3scale.net:443
。
流程
测试您的私有(非受管)API 是否正常工作。例如,对于 Echo API,您可以使用
curl
命令进行以下调用:$ curl "https://echo-api.3scale.net:443"
您将获得以下响应:
{ "method": "GET", "path": "/", "args": "", "body": "", "headers": { "HTTP_VERSION": "HTTP/1.1", "HTTP_HOST": "echo-api.3scale.net", "HTTP_ACCEPT": "*/*", "HTTP_USER_AGENT": "curl/7.51.0", "HTTP_X_FORWARDED_FOR": "2.139.235.79, 10.0.103.58", "HTTP_X_FORWARDED_HOST": "echo-api.3scale.net", "HTTP_X_FORWARDED_PORT": "443", "HTTP_X_FORWARDED_PROTO": "https", "HTTP_FORWARDED": "for=10.0.103.58;host=echo-api.3scale.net;proto=https" }, "uuid": "ee626b70-e928-4cb1-a1a4-348b8e361733" }
3.4.2. 配置身份验证设置
您可以在 [Your_product_name] > Integration > Settings 的 AUTHENTICATION 部分中为 API 配置身份验证设置。
字段 | 描述 |
---|---|
Auth user key | 设置与凭据位置关联的用户密钥。 |
Credentials location | 定义凭据是作为 HTTP 标头、查询参数还是 HTTP 基本身份验证传递。 |
Host Header | 定义自定义主机请求标头。如果您的 API 后端仅接受来自特定主机的流量,则需要此设置。 |
Secret Token | 用于阻止开发人员向 API 后端发出请求。设置此处标头的值,并确保您的后端只允许使用此机密标头调用。 |
另外,您可以在 [Your_product_name] > Integration > Settings 下配置 GATEWAY RESPONSE 错误代码。为错误定义 Response Code、Content-type 和 Response Body :身份验证失败、身份验证缺失和不匹配。
响应代码 | 响应正文 |
---|---|
403 | 身份验证失败 |
403 | 缺少身份验证参数 |
404 | 没有匹配的映射规则 |
429 | 超过用量限制 |
3.4.3. 配置 API 测试调用
配置 API 涉及使用产品测试后端,并将 APIcast 配置提升到暂存和生产环境,以根据请求调用进行测试。
对于每个产品,请求会根据路径重定向到对应的后端。当您将后端添加到产品时会配置这个路径。例如,如果您在某个产品中添加了两个后端,每个后端都有自己的路径。
先决条件
- 添加到产品的一个或多个后端。
- 添加到产品的每个后端的映射规则。
- 应用计划定义访问策略。
- 订阅 应用程序 计划的应用程序。
流程
- 进入到 [Your_product_name] > Integration > Configuration,将 APIcast 配置提升到 Staging。
在 APIcast 配置 下,您将看到添加到产品的每个后端的映射规则。点 Promote v.[n] to Staging APIcast。
- v.[n] 表示要提升的版本号。
提升到暂存后,您可以将其提升为 Production。在 Staging APIcast 下,点 Promote v.[n] to Production APIcast。
- v.[n] 表示要提升的版本号。
要在命令行中测试对您的 API 的请求,请使用用于测试的curl 示例中提供的命令。
- curl 命令示例基于产品中的第一个映射规则。
在测试对 API 的请求时,您可以通过添加方法和指标来修改映射规则。
每次修改配置时,并在调用 API 之前,请确保提升到 Staging 和 Production 环境。当要提升到 Staging 环境的待处理更改时,您会在管理门户中看到一个声明标记,它位于 Integration 菜单项的旁边。
3scale Hosted APIcast 网关进行凭证验证,并应用您为 API 应用计划定义的速率限制。如果您在没有凭证的调用或具有无效凭证的调用,您会看到出错信息,Authentication failed
。
3.4.4. 在 Podman 上部署 APIcast
这是在 Pod Manager(Podman)容器环境中部署 APIcast 的逐步指南,用作红帽 3scale API 管理 API 网关。
在 Podman 容器环境中部署 APIcast 时,受支持的 Red Hat Enterprise Linux(RHEL)和 Podman 版本如下:
- RHEL 8.x/9.x
- Podman 4.2.0/4.1.1
先决条件
- 您必须根据 第 3 章 安装 APIcast 在 3scale 管理门户中配置 APIcast。
- 要创建 registry 服务帐户,请参阅 创建和修改 registry 服务帐户。
要在 Podman 容器环境中部署 APIcast,请执行以下部分中所述的步骤:
3.4.4.1. 安装 Podman 容器环境
本指南涵盖了在 RHEL 8.x 上设置 Podman 容器环境的步骤。RHEL 8.x 中不包括 Docker,因此请使用 Podman 来运行容器。
有关 RHEL 8.x 的 Podman 的详情,请参阅容器命令行参考。
流程
安装 Podman 容器环境软件包:
$ sudo dnf install podman
其他资源
对于其他操作系统,请参阅以下 Podman 文档:
- Podman 安装说明
3.4.4.2. 运行 Podman 环境
要运行 Podman 容器环境,请按照以下步骤操作。
流程
从 Red Hat registry 下载就绪的 Podman 容器镜像:
$ podman pull registry.redhat.io/3scale-amp2/apicast-gateway-rhel8:3scale2.13
在 Podman 中运行 APIcast:
$ podman run --name apicast --rm -p 8080:8080 -e THREESCALE_PORTAL_ENDPOINT=https://<access_token>@<domain>-admin.3scale.net registry.redhat.io/3scale-amp2/apicast-gateway-rhel8:3scale2.13
在这里,
<access_token>
是 3scale 帐户管理 API 的访问令牌。您可以使用 Provider Key 而不是访问令牌。<domain>-admin.3scale.net
是 3scale 管理门户的 URL。
此命令在端口 8080
上运行名为 "apicast" 的 Podman 容器引擎,并从 3scale 管理门户获取 JSON 配置文件。有关其他配置选项,请参阅 安装 APIcast。
3.4.4.2.1. 使用 Podman 测试 APIcast
上述步骤确保 Podman 容器引擎使用您自己的配置文件和 3scale registry 中的 Podman 容器镜像来运行。您可以通过 APIcast 在端口 8080
上测试调用,并提供正确的身份验证凭据,您可以从 3scale 帐户获得这些凭据。
测试调用不仅验证 APIcast 是否在正确运行,还验证身份验证和报告是否得到成功处理。
确保您用于调用的主机与 Integration 页面的 Public Base URL 字段中配置的主机相同。
3.4.4.3. podman
命令选项
您可以在 podman
命令中使用以下选项示例:
-
-d
:在分离模式中运行容器,并打印容器 ID。如果未指定,容器将以前台模式运行,您可以使用CTRL + c
来停止容器。以分离模式启动时,您可以使用podman attach
命令重新附加到容器,例如podman attach apicast
。 -
ps
和-a
:Podmanps
用于列出创建和运行容器。将-a
添加到ps
命令将显示所有运行和停止的容器,例如podman ps -a
。 -
inspect
和-l
:检查正在运行的容器。例如,使用inspect
查看分配给容器的 ID。使用-l
获取最新容器的详细信息,例如podman inspect -l | grep Id\":
。