ExtensionChain

一个扩展程序链封装容器,其中包含要执行的匹配条件和扩展程序。

JSON 表示法
{
  "name": string,
  "matchCondition": {
    object (MatchCondition)
  },
  "extensions": [
    {
      object (Extension)
    }
  ]
}
字段
name

string

必需。此扩展程序链的名称。该名称会记录在 HTTP 请求日志中。该名称必须符合 RFC-1034 标准,只能包含小写字母、数字和连字符,且长度上限为 63 个字符。此外,第一个字符必须是字母,最后一个字符必须是字母或数字。

matchCondition

object (MatchCondition)

必需。为请求调用此链的条件。

extensions[]

object (Extension)

必需。要为匹配请求执行的一组扩展程序。必须至少提供一个扩展程序。您最多可以为 LbTrafficExtension 资源的每个扩展链定义 3 个扩展程序。对于 LbRouteExtension 条扩展程序链,每个扩展程序链最多只能包含 1 条扩展程序。

MatchCondition

为请求调用此链的条件。

JSON 表示法
{
  "celExpression": string
}
字段
celExpression

string

必需。一个通用表达式语言 (CEL) 表达式,用于匹配要执行扩展链的请求。

如需了解详情,请参阅 CEL 匹配器语言参考文档

扩展程序

链中用于针对匹配请求执行的单个扩展程序。

JSON 表示法
{
  "name": string,
  "authority": string,
  "service": string,
  "supportedEvents": [
    enum (EventType)
  ],
  "timeout": string,
  "failOpen": boolean,
  "forwardHeaders": [
    string
  ]
}
字段
name

string

必需。此扩展程序的名称。该名称会记录在 HTTP 请求日志中。该名称必须符合 RFC-1034 标准,只能包含小写字母、数字和连字符,且长度上限为 63 个字符。此外,第一个字符必须是字母,最后一个字符必须是字母或数字。

authority

string

可选。从 Envoy 发送到扩展程序服务的 gRPC 请求中的 :authority 标头。附加宣传信息必须包含此属性。

service

string

必需。对运行扩展程序的服务的引用。

此处目前仅支持附加宣传信息。

如需配置宣传信息扩展程序,service 必须是后端服务的完全限定引用,格式为 https://www.googleapis.com/compute/v1/projects/{project}/regions/{region}/backendServices/{backendService}https://www.googleapis.com/compute/v1/projects/{project}/global/backendServices/{backendService}

supportedEvents[]

enum (EventType)

可选。在请求或响应处理期间会调用此扩展程序的一组事件。LbTrafficExtension 资源需要此字段。不得为 LbRouteExtension 资源设置此属性。

timeout

string (Duration format)

可选。指定数据流中每一条消息的超时时间。超时时间必须介于 10-1000 毫秒之间。对于附加宣传信息,必填。

该时长以秒为单位,最多包含九个小数位,以“s”结尾。示例:"3.5s"

failOpen

boolean

可选。确定在调用扩展程序失败或超时时代理的行为方式。

如果设置为 TRUE,请求或响应处理会继续而不会出现错误。扩展链中的任何后续扩展程序也会被执行。设置为 FALSE 或使用 FALSE 的默认设置时,会发生以下情况之一:

  • 如果响应标头尚未传送到下游客户端,系统会向客户端返回通用 500 错误。您可以在负载均衡器中配置自定义错误响应,以量身定制错误响应。

  • 如果已传送响应标头,则系统会重置流向下游客户端的 HTTP 流。

forwardHeaders[]

string

可选。要从客户端或后端转发到扩展程序的 HTTP 标头的列表。如果省略,则发送所有标头。每个元素都是一个指示标头名称的字符串。

事件类型

为请求或响应调用扩展的部分。

枚举
EVENT_TYPE_UNSPECIFIED 未指定值。请勿使用。
REQUEST_HEADERS 如果扩展程序包含在 supportedEvents 中,则当 HTTP 请求标头到达时,系统会调用该扩展程序。
REQUEST_BODY 如果包含在 supportedEvents 中,系统会在收到 HTTP 请求正文时调用该扩展程序。
RESPONSE_HEADERS 如果扩展程序包含在 supportedEvents 中,系统会在 HTTP 响应标头到达时调用该扩展程序。
RESPONSE_BODY 如果扩展程序包含在 supportedEvents 中,系统会在 HTTP 响应正文到达时调用该扩展程序。
REQUEST_TRAILERS 如果包含在 supportedEvents 中,系统会在 HTTP 请求尾部到达时调用该扩展程序。
RESPONSE_TRAILERS 如果包含在 supportedEvents 中,系统会在 HTTP 响应后续部分到达时调用该扩展程序。