Apigee Adapter for Envoy 版本说明

本页面适用于 ApigeeApigee Hybrid

查看 Apigee Edge 文档。

本页面记录了 2021 年及之前所有 Apigee Adapter for Envoy 软件的版本说明。

请参阅 Adapter for Envoy 以了解当前版本说明(2022 年及之后)。

v2.0.4

2021 年 12 月 3 日,我们发布了 Apigee Adapter for Envoy 2.0.4 版。

功能和改进

  • CLI samples 命令支持的 Envoy 和 Istio 版本列表已更新。示例现在支持以下版本:
    • Envoy 1.18 至 1.20 版本
    • Istio 1.10 至 1.12 版本

已解决的问题

  • 为 PEM 块私钥加载添加了 nil-check,以避免差错。(问题 #360
  • 远程服务授权错误现在会在调试级别记录。此分类不适用于 API 密钥的令牌提取错误。在这种情况下,系统会在错误级别记录错误,因此即使停用 apigee-remote-service-envoy 的调试日志级别,错误也是可见的。请参阅设置远程服务日志级别。(问题 #104)

v2.0.3

2021 年 9 月 21 日,我们发布了 Apigee Adapter for Envoy 2.0.3 版。

已解决的问题

  • 修复了直接响应的分析日志记录问题。只有在某些情况下才会出现此问题。例如:
    • 对于不需要 authn/z 检查的请求,系统未生成 authContext,并且动态元数据为 nil,导致访问日志条目被忽略。
    • 被拒响应使用 RPC 代码而不是 HTTP 代码,导致记录在 Apigee 界面中显示为成功。

v2.0.2

我们已在 2021 年 6 月 7 日发布了 Apigee Adapter for Envoy 2.0.2 版。

已解决的问题

  • 解决了一个竞争条件,其可能会导致 JWT 声明范围为 nil 时出现 403 错误和紧急状况。

v2.0.1

我们已在 2021 年 4 月 29 日(星期二)发布了 Apigee Adapter for Envoy 2.0.1 版。

已解决的问题

功能 说明
Bug

修复了导致 v2.0.0 在与 Apigee Hybrid v1.5.0 或 Apigee 搭配使用时出现故障的问题。如果要将 Apigee Hybrid 安装升级到 v1.5.x,建议适配器的升级路径为:

  1. 将 Apigee Adapter for Envoy 升级到 v2.0.1。
  2. 将 Apigee Hybrid 升级到 v1.5.1。

如果您使用的是 Apigee,只需将适配器升级到 v2.0.1 即可。

v2.0.0

我们已在 2021 年 4 月 6 日(星期二)发布了 Apigee Adapter for Envoy 2.0.0 版。

功能和改进

功能 说明
多租户环境支持

现在,您可以让适配器处理 Apigee 组织内的多个环境。通过此功能,您可以使用与 Apigee 组织关联的一个 Apigee Adapter for Envoy 来处理多个环境。在进行此项更改之前,一个适配器始终与一个 Apigee 环境相关联。 如需详细了解此功能,请参阅多租户环境支持

Envoy v3 API 支持
Envoy 元数据支持

Envoy 1.16 及更高版本允许发送 ext_authz 元数据,而无需使用标头。通过使用此更改和相关更改,我们现在可为被拒请求提供更好的 HTTP 响应代码,并且我们不再需要在 Envoy 中安装 RBAC 过滤器。请参阅

仅 Envoy 1.16 及更高版本和 Istio 1.9 及更高版本支持此功能。

进行此更改后,以下配置将不再添加到 Envoy 配置文件 (envoy-config.yaml) 中:

additional_request_headers_to_log:
    - x-apigee-accesstoken
    - x-apigee-api
    - x-apigee-apiproducts
    - x-apigee-application
    - x-apigee-clientid
    - x-apigee-developeremail
    - x-apigee-environment

如果在某种特殊情况下要将标头附加到请求,只需在适配器的 config.yaml 文件中设置 append_metadata_headers:true 属性即可。

remote-token 代理与 remote-service 代理拆分

remote-service 代理已重构为两个单独的代理。在预配 v2.0.x 的过程中将安装两个 API 代理:remote-serviceremote-token/token/certs 端点已从 remote-service 代理移至 remote-token

这项更改有助于实现功能分离。现在,remote-service 代理仅用于内部适配器通信,而 remote-token 代理提供了一个可供您自定义的示例 OAuth 工作流。即使使用了 provision --force-proxy-install 命令,我们也绝不会覆盖您的自定义 remote-token 代理。

数据捕获支持

该适配器现在支持将 Envoy 元数据传递给 Apigee 的数据捕获功能,该功能可以将您指定的变量中所捕获的数据发送到 Apigee 分析,以便在自定义报告中使用。此功能可提供类似于 Apigee 数据捕获政策的功能。如需详细了解此功能,请参阅获取自定义报告的数据

不需要 RBAC

正如之前在 Envoy 元数据支持下所述,现在,我们会立即拒绝未经授权的请求,而不需要单独的 RBAC 过滤器。由于未使用 RBAC,因此客户端现在将视情况接收来自适配器的以下 HTTP 状态代码:

  • 401 未经授权
  • 403 已禁止
  • 429 请求过多
  • 500 内部服务器错误

如果您想要允许未经授权的请求继续,您可以在适配器的 config.yaml 文件中设置 auth:allow_unauthorized:true

默认情况下不再附加 x-apigee-* 标头

如之前在 Envoy 元数据支持部分所述,默认情况下不再附加 x-apigee-* 标头。如果要添加这些标头,请在 config.yaml 文件中设置 append_metadata_headers:true。这是完全可选的配置,只有在需要将标头转发到上游目标服务时才应使用此配置。

自定义将请求与 Apigee API 产品相匹配的操作

api_header 配置属性的语义仍与以前的 target_header 属性相同(默认值仍是目标主机名),并且指定标头的内容仍与 API 产品的远程服务目标属性匹配,或与 API 产品操作配置中的来源字段匹配。

要使用 Envoy 元数据替换此标头值,您可以将 apigee_api 元数据元素从 Envoy 传递到适配器,以直接指定 API 产品的远程服务目标或 API 产品操作 API 来源。要进行配置,请将如下所示的代码添加到 Envoy 配置文件(您可以使用适配器的 CLI 生成此文件):

typed_per_filter_config:
  envoy.filters.http.ext_authz:
    "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute
    check_settings:
      context_extensions:
        apigee_api: httpbin.org
系统会立即记录被拒请求的分析

现在,Envoy 适配器会立即记录被拒绝的请求以根据需要进行分析中,而不是等待请求在访问日志中返回。这种方式更加高效,并且不需要将任何元数据附加到请求中。

不再支持 UDCA

不再需要流式传输到 Apigee Hybrid 与 Apigee 中 Apigee 的“通用数据收集代理 (UDCA)”即可进行分析,因为它已被替换为直接上传。此更改只会移除此选项的旧版支持。

在预配/绑定 CLI 命令中添加了对 Edge for Private Cloud 的 mTLS 支持

在使用 CLI 预配或列出产品绑定时,Apigee Edge for Private Cloud 用户可分别通过 ‑‑tls‑cert‑‑tls‑key‑‑tls‑ca 提供客户端 TLS 证书和根证书。

在适配器与 Apigee 运行时之间配置 mTLS 支持

您可以在适配器 config.yaml 文件的 tenant 部分提供客户端 TLS 证书,在适配器和 Apigee 运行时之间使用 mTLS。此更改应用到所有受支持的 Apigee 平台。它还为允许将 mTLS 用于 Apigee Edge for Private Cloud 平台的分析。如需了解详情,请参阅在适配器和 Apigee 运行时之间配置 mTLS

其他问题和修复

  • 修复了 API 来源相同的多项操作配置共享同一配额存储分区标识符并导致配额计算发生冲突的问题。(问题 #34
  • 修复了未指定动词的操作导致请求遭拒的问题(预期行为是:如果未指定任何动词,则允许使用所有动词)。(问题 #39

v1.4.0

我们在 2020 年 12 月 16 日星期三发布了 Apigee Adapter for Envoy 1.4.0 版。

支持的平台

我们发布了适用于 MacOS、Linux 和 Windows 的二进制文件。

我们将 Google 的 Distroless、Ubuntu 以及从使用 Boring Crypto 的 Ubuntu 发布 Docker 映像。

在此版本中,我们支持以下平台:

  • Apigee Hybrid 版本 1.3.x、1.4.x(发布日期待定)、Apigee for Public Cloud、Apigee for Private Cloud 和 Apigee on Google Cloud
  • Istio 1.5、1.6、1.7、1.8 版
  • Envoy 1.14、1.15、1.16 版

功能和改进

功能 说明
remote-service 代理不再需要与使用远程服务目标的 API 产品关联。

由于不再需要此关联,因此请注意以下变化:

  • 在预配期间,系统不再创建 remote-service API 产品。
  • bindings verify CLI 命令不再有用并且已弃用。
预配操作不再需要 Apigee Organization Admin 角色。

您现在可以改用 IAM 角色 API Creator 和 Deployer,而无需使用组织管理员权限来执行预配操作。您必须同时授予这两个角色才能成功执行预配操作。
(仅适用于 Apigee on Google Cloud 和 Apigee Hybrid)

其他问题和修复

  • 修复了以下问题:如果在没有 --rotate 选项的情况下重新预配 Apigee,则系统会出现错误并退出。
  • 预配 CLI 现在可以从给定的 config.yaml 文件读取并重复使用分析服务账号凭据(问题 #133)。

v1.3.0

我们在 2020 年 11 月 23 日星期一发布了 Apigee Adapter for Envoy 1.3.0 版。

支持的平台

我们发布了适用于 MacOS、Linux 和 Windows 的二进制文件。

我们将 Google 的 Distroless、Ubuntu 以及从使用 Boring Crypto 的 Ubuntu 发布 Docker 映像。

在此版本中,我们支持以下平台:

  • Apigee Hybrid 版本 1.3.x、1.4.x(发布日期待定)、Apigee for Public Cloud、Apigee for Private Cloud 和 Apigee on Google Cloud
  • Istio 1.5、1.6、1.7、1.8 版
  • Envoy 1.14、1.15、1.16 版

功能和改进

功能 说明
支持 API 产品 OperationGroups。 OperationGroups 通过 HTTP 方法约束代理或远程服务中的资源及关联的配额强制执行。如需了解详情,请参阅 OperationGroup
(仅适用于 Apigee on Google Cloud 和 Apigee Hybrid)
从生成样本中移除对动态转发代理的支持。 由于此变化,如果主机名与在 API 产品中设置的远程服务目标主机不同,则客户端必须包含 HOST 标头。例如:
curl -i http://localhost:8080/httpbin/headers -H "HOST:httpbin.org"

请参阅创建 API 产品

支持服务账号和 Workload Identity。 如需在 Apigee Hybrid 集群外部运行适配器时将分析数据上传到 Apigee,必须将 analytics-sa 参数与 apigee-remote-service-cli provision 命令结合使用。此外,该适配器现在支持 Google Kubernetes Engine (GKE) 上的 Workload Identity。请参阅预配命令
(仅适用于 Apigee on Google Cloud 和 Apigee Hybrid)
新的 jwt_provider_key 配置属性。 此键已添加到配置文件。它代表 Envoy 配置中的 JWT 提供商的 payload_in_metadata 键,或 Istio 配置中的 RequestAuthentication JWT 颁发者。
KeepAliveMaxConnectionAge 配置属性现在默认为 1 分钟。 之前的默认值为 10 分钟。此更改可实现更顺畅的扩缩。此值也用于访问日志流生命周期。请参阅配置文件
移除了 CLI 命令。 以下 CLI 命令已被弃用。我们建议您使用 Apigee API 来更新 API 产品的远程服务目标:
  • apigee-remote-service-cli bindings add
  • apigee-remote-service-cli bindings remove
添加了新的 CLI 命令 命令:
apigee-remote-service-cli samples templates

列出可与 samples create 命令中的 --template 标志搭配使用的可用选项。请参阅 CLI 参考文档

更改了现有 CLI 命令 更改了 apigee-remote-service-cli samples create 命令。系统会严格检查特定于 Envoy 或 Istio 模板的标志,并针对使用不当的标记返回错误。native 模板选项已被弃用。如需获取可用模板的列表,请使用 apigee-remote-service-cli samples templates 命令。另请参阅 CLI 参考文档
/token 端点响应现在遵循 OAuth2 规范 已将 access_token 参数添加到响应中,token 参数已被弃用。

v1.2.0

我们在 2020 年 9 月 30 日星期三发布了 Apigee Adapter for Envoy 1.2.0 版。

支持的平台

我们发布了适用于 MacOS、Linux 和 Windows 的二进制文件。

我们将 Google 的 Distroless、Ubuntu 以及从使用 Boring Crypto 的 Ubuntu 发布 Docker 映像。

在此版本中,我们支持以下平台:

  • Apigee Hybrid 1.3.x 版
  • Istio 1.5、1.6、1.7 版
  • Envoy 1.14 和 1.15 t版

功能和改进

功能 说明
Google Cloud 上的 Apigee 支持 您现在可以将 Apigee Adapter for Envoy 与 Google Cloud 上的 Apigee 搭配使用。您可以在适配器自己的集群中运行适配器,也可以将 Remote Service for Envoy 作为原生二进制文件运行或在容器中运行。使用预配命令在 Apigee 上预配适配器。
直接上传分析数据 现在,您可以配置 Apigee Adapter,将分析数据直接上传到 Apigee。如果您使用的是 Apigee Hybrid,那么这项新功能允许您将适配器部署到其自己的 Hybrid 集群,该集群不同于安装 Apigee Hybrid 的集群。要启用直接上传,请使用新的 --analytics-sa 标志和 provision 命令。请参阅预配命令
从 Apigee 加载 API 商品数据后,健康检查返回“就绪” 从 Apigee 加载 API 商品数据之前,Kubernetes 健康检查不会返回“就绪”。此项变更有助于进行扩缩和升级,因为在新的实例化适配器就绪之前不会向其发送流量。

其他问题和修复

  • 修复了潜在的配额同步死锁问题(问题 17)。
  • Prometheus 注释已移至 pod 规范(问题 69)。
  • 修复了不当发送验证的错误(问题 62)。

v1.1.0

我们在 2020 年 8 月 26 日星期三发布了 Apigee Adapter for Envoy 1.1.0 版。

支持的平台

我们发布了适用于 MacOS、Linux 和 Windows 的二进制文件。

我们将 Google 的 Distroless、Ubuntu 以及从使用 Boring Crypto 的 Ubuntu 发布 Docker 映像。

在 1.1.0 版本中,我们支持以下平台:

  • Apigee Hybrid 1.3 版
  • Istio 1.5、1.6、1.7 版
  • Envoy 1.14 和 1.15 t版

功能和改进

功能 说明
验证绑定 CLI 中新增了 apigee-remote-service-cli bindings verify 命令。此命令用于验证指定的绑定 API 产品及其关联的开发者应用也具有与之相关的远程服务产品。请参阅验证绑定
生成样本 CLI 中新增了 apigee-remote-service-cli samples create 命令。此命令会为原生 Envoy 或 Istio 部署创建示例配置文件。使用此命令生成的配置文件将取代先前版本中通过 Adapter for Envoy 安装的示例文件。请参阅示例命令
OAuth2 身份验证 在为 Apigee 启用多重身份验证 (MFA) 后,Adapter 现在使用 OAuth2 身份验证。每当使用 --legacy 标志时,请使用 --mfa 标志。
Distroless 容器 现在,Adapter 使用 Google 的 Distroless (gcr.io/distroless/base) 映像(而不是 scratch)作为默认 Docker 映像基础。

其他问题和修复

  • 修复了 OPDK 中一个关于绑定命令的 CLI 问题。(#29)
  • 连接断开时,配额可能会卡住 (apigee/apigee-remote-service-envoy)。(#31)
  • Docker 映像现在使用非根用户 (999) 构建。
  • Kubernetes 示例强制用户不得是根用户。
  • 对代理端点执行 curl 命令时不再需要 --http1.1。该标志已从示例中移除。

v1.0.0

我们在 2020 年 7 月 31 日星期五发布了 Apigee Adapter for Envoy 的正式版。

支持的平台

我们发布了适用于 MacOS、Linux 和 Windows 的二进制文件。

我们将从头开始、从 Ubuntu 以及从使用 Boring Crypto 的 Ubuntu 发布 Docker 映像。

在 1.0.0 版本中,我们支持以下平台:

  • Apigee Hybrid 1.3 版
  • Istio 1.5 和 1.6 版
  • Envoy 1.14 和 1.15 t版

添加操作和更改操作

在 v1.0-beta4 版本和正式版之间,对适配器进行了以下添加操作和更改操作:

  • Go Boring 构建

    新的构建现已发布,该构建可使用符合 FIPS 标准的 Go BoringSSL 库

  • 日志级别标志更改

    更改了 apigee-remote-service-envoy 服务的日志记录级别标志以确保一致性:

    旧标志 新标志
    log_level log-level
    json_log json-log
  • 新的 CLI 标志

    CLI token 命令中添加了新标志:

    标志 说明
    --legacy 如果您使用的是 Apigee Cloud,请设置此标志。
    --opdk 如果您使用的是 Apigee for Private Cloud,请设置此标志。