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 响应尾部到达时调用该扩展。