Apigee Adapter for Envoy 版本说明

您正在查看的是 Apigee Edge 文档。
转到 Apigee X 文档
信息

v2.1.1

2023 年 6 月 7 日,我们发布了 Apigee Adapter for Envoy 的 2.1.1 版。

已解决的问题

  • 修复了以下问题:配额之间不会重复,而不是在产品一级共享。

v2.1.0

2023 年 6 月 5 日,我们发布了 2.1.0 版 Apigee Adapter for Envoy。

已解决的问题

  • application_id 声明已添加到 /verifyApiKey 响应中。

v2.0.7

2023 年 3 月 9 日,我们发布了 2.0.7 版 Apigee Adapter for Envoy。

功能和改进

  • JWT 现在可以添加一个名为 customattributes 的声明,该声明会将值传递给名为 x-apigee-customattributes 的标头中的目标(如果 append_metadata_headers 配置为 true)。

已解决的问题

  • 修复了无效 API 密钥可能会创建虚假日志条目和分析记录的问题。
  • 代理中移除了已弃用的版本检查,导致较新版本的 Apigee 出现了问题。

v2.0.6

2022 年 10 月 18 日,我们发布了 2.0.6 版 Apigee Adapter for Envoy。

已解决的问题

  • 发布了安全版本,解决了依赖项库中的拒绝服务攻击 (DoS) 漏洞。 请参阅 CVE-2022-28948

v2.0.5

2022 年 3 月 3 日,我们发布了 2.0.5 版 Apigee Adapter for Envoy。

已解决的问题

  • 安全版本发布,解决了 Prometheus 库中拒绝服务攻击 (DoS) 的风险。请参阅 CVE-2022-21698

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.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 代理。

数据捕获支持

仅适用于 Apigee X 和 Apigee Hybrid。

适配器现在支持将 Envoy 元数据传递给 Apigee 的数据捕获功能,该功能可将在您指定的变量中捕获的数据发送到 Apigee Analytics,以便在自定义报告中使用。

不需要 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。这是完全可选的配置,只有在需要将标头转发到上游目标服务时才应使用此配置。

将请求与远程服务目标自定义匹配

api_header 配置属性的语义与之前的 target_header 属性相同(默认值仍为目标主机名),并且指定标头的内容仍将与 API 产品操作中的 API 产品 Remote service target 属性或 apiSource 字段匹配(仅限 Apigee Hybrid 和 Apigee X)。

如需使用 Envoy 元数据替换此标头值,您可以将 apigee_api 元数据元素从 Envoy 传递给适配器,以直接指定 API 产品的 Remote Service Target 或 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 X 中 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 的二进制文件。

我们使用 Boring Crypto 从 Google 的无发行版、Ubuntu 和 Ubuntu 发布 Docker 映像。

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

  • Apigee Hybrid 1.3.x、1.4.x 版(发布日期待定)、Apigee Edge for Public Cloud、Apigee Edge 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

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

支持的平台

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

我们使用 Boring Crypto 从 Google 的无发行版、Ubuntu 和 Ubuntu 发布 Docker 映像。

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

  • Apigee Hybrid 1.3.x、1.4.x 版(发布日期待定)、Apigee Edge for Public Cloud、Apigee Edge 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 方法在代理或远程服务中绑定资源和关联的配额强制执行。
(仅适用于 Google Cloud 上的 Apigee 和 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 命令已被弃用。我们建议您改用 Edge 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

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

支持的平台

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

我们使用 Boring Crypto 从 Google 的无发行版、Ubuntu 和 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

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

支持的平台

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

我们使用 Boring Crypto 从 Google 的无发行版、Ubuntu 和 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 Edge 启用多重身份验证 (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

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

支持的平台

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

我们使用 Boring Crypto 从零发布 Ubuntu 和 Ubuntu 映像。

在版本 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 Edge Cloud,请设置此标志。
    --opdk 如果您使用的是 Apigee Edge for Private Cloud,请设置此标志。