gRPC 服务 (proto)

config.core.v3.GrpcService

[config.core.v3.GrpcService proto]

gRPC 服务配置。这被 ApiConfigSource 和过滤器配置使用。

{
  "envoy_grpc": {...},
  "google_grpc": {...},
  "timeout": {...},
  "initial_metadata": [],
  "retry_policy": {...}
}
envoy_grpc

(config.core.v3.GrpcService.EnvoyGrpc) Envoy 的内置 gRPC 客户端。有关 gRPC 客户端选择的讨论,请参阅 gRPC 服务概述 文档。

必须设置 envoy_grpcgoogle_grpc 中的一个。

google_grpc

(config.core.v3.GrpcService.GoogleGrpc) Google C++ gRPC 客户端 有关 gRPC 客户端选择的讨论,请参阅 gRPC 服务概述 文档。

必须设置 envoy_grpcgoogle_grpc 中的一个。

timeout

(Duration) gRPC 请求的超时时间。这是特定请求的超时时间。

initial_metadata

(repeated config.core.v3.HeaderValue) 要包含在向 GrpcService 发起的流中的附加元数据。这可用于需要注入其他临时授权标头(例如 x-foo-bar: baz-key)的场景。有关更多信息,包括标头值语法的详细信息,请参阅有关 自定义请求标头 的文档。

retry_policy

(config.core.v3.RetryPolicy) 面向服务的流的可选默认重试策略。如果异步流未在其流选项中配置重试策略,则使用此重试策略。

config.core.v3.GrpcService.EnvoyGrpc

[config.core.v3.GrpcService.EnvoyGrpc proto]

{
  "cluster_name": ...,
  "authority": ...,
  "retry_policy": {...},
  "max_receive_message_length": {...},
  "skip_envoy_headers": ...
}
cluster_name

(string, REQUIRED) 上游 gRPC 集群的名称。SSL 凭据将在 Clustertransport_socket 中提供。

authority

(string) gRPC 请求中的 :authority 标头。如果此字段未设置,则授权标头值将为 cluster_name。请注意,此授权不会覆盖 SNI。SNI 由集群的传输套接字提供。

retry_policy

(config.core.v3.RetryPolicy) 指示重新建立 gRPC 流的重试策略。此字段是可选的。如果没有提供最大间隔,则将其设置为提供的基本间隔的十倍。目前仅支持 xDS gRPC 流。如果未设置,xDS gRPC 流默认基本间隔:500 毫秒,最大间隔:30 秒将被应用。

max_receive_message_length

(UInt32Value) 允许接收的最大 gRPC 消息大小。如果收到超过此限制的消息,则 gRPC 流将以 RESOURCE_EXHAUSTED 错误终止。此限制应用于流响应中的单个消息,而不是流响应的总大小。默认为 0,表示无限制。

skip_envoy_headers

(bool) 这提供了 gRPC 客户端级对 envoy 生成的标头的控制。如果为 false,则将发送标头,但它可以被每个流选项覆盖。如果为 true,则将删除标头,并且不能被每个流选项覆盖。默认为 false。

config.core.v3.GrpcService.GoogleGrpc

[config.core.v3.GrpcService.GoogleGrpc proto]

{
  "target_uri": ...,
  "channel_credentials": {...},
  "call_credentials": [],
  "stat_prefix": ...,
  "credentials_factory_name": ...,
  "config": {...},
  "per_stream_buffer_limit_bytes": {...},
  "channel_args": {...}
}
target_uri

(string, REQUIRED) 使用 Google C++ gRPC 客户端 时的目标 URI。SSL 凭据将在 channel_credentials 中提供。

channel_credentials

(config.core.v3.GrpcService.GoogleGrpc.ChannelCredentials)

call_credentials

(repeated config.core.v3.GrpcService.GoogleGrpc.CallCredentials) 一组可以与 通道凭据 组合的调用凭据。

stat_prefix

(string, REQUIRED) 为 gRPC 服务发出统计信息时要使用的可读性强的前缀。

名称

类型

描述

streams_total

计数器

打开的流的总数

streams_closed_<gRPC 状态代码>

计数器

使用 <gRPC 状态代码> 关闭的流的总数

credentials_factory_name

(string) 要使用的 Google gRPC 凭据工厂的名称。这必须已在 Envoy 中注册。如果为空,则将使用默认凭据工厂,该工厂根据其他配置参数设置通道凭据。

config

(Struct) Google gRPC 库的特定于站点自定义的额外配置。

per_stream_buffer_limit_bytes

(UInt32Value) 每个流可以在内部缓冲的字节数。如果未设置,则应用实现定义的默认值(1MiB)。

channel_args

(config.core.v3.GrpcService.GoogleGrpc.ChannelArgs) 自定义通道参数。

config.core.v3.GrpcService.GoogleGrpc.SslCredentials

[config.core.v3.GrpcService.GoogleGrpc.SslCredentials proto]

参见 https://grpc.org.cn/grpc/cpp/structgrpc_1_1_ssl_credentials_options.html

{
  "root_certs": {...},
  "private_key": {...},
  "cert_chain": {...}
}
root_certs

(config.core.v3.DataSource) PEM 编码的服务器根证书。

private_key

(config.core.v3.DataSource) PEM 编码的客户端私钥。

cert_chain

(config.core.v3.DataSource) PEM 编码的客户端证书链。

config.core.v3.GrpcService.GoogleGrpc.GoogleLocalCredentials

[config.core.v3.GrpcService.GoogleGrpc.GoogleLocalCredentials proto]

本地通道凭据。目前只支持 UDS。参见 https://github.com/grpc/grpc/pull/15909

config.core.v3.GrpcService.GoogleGrpc.ChannelCredentials

[config.core.v3.GrpcService.GoogleGrpc.ChannelCredentials proto]

参见 https://grpc.org.cn/docs/guides/auth.html#credential-types 以了解通道和调用凭据类型。

{
  "ssl_credentials": {...},
  "google_default": {...},
  "local_credentials": {...}
}
ssl_credentials

(config.core.v3.GrpcService.GoogleGrpc.SslCredentials)

必须设置 ssl_credentialsgoogle_defaultlocal_credentials 中的一个。

google_default

(Empty) https://grpc.org.cn/grpc/cpp/namespacegrpc.html#a6beb3ac70ff94bd2ebbd89b8f21d1f61

必须设置 ssl_credentialsgoogle_defaultlocal_credentials 中的一个。

local_credentials

(config.core.v3.GrpcService.GoogleGrpc.GoogleLocalCredentials)

必须设置 ssl_credentialsgoogle_defaultlocal_credentials 中的一个。

config.core.v3.GrpcService.GoogleGrpc.CallCredentials

[config.core.v3.GrpcService.GoogleGrpc.CallCredentials proto]

{
  "access_token": ...,
  "google_compute_engine": {...},
  "google_refresh_token": ...,
  "service_account_jwt_access": {...},
  "google_iam": {...},
  "from_plugin": {...},
  "sts_service": {...}
}
access_token

(string) 访问令牌凭据。 https://grpc.org.cn/grpc/cpp/namespacegrpc.html#ad3a80da696ffdaea943f0f858d7a360d

必须设置以下选项之一:access_tokengoogle_compute_enginegoogle_refresh_tokenservice_account_jwt_accessgoogle_iamfrom_pluginsts_service

google_compute_engine

(Empty) Google Compute Engine 凭据。 https://grpc.org.cn/grpc/cpp/namespacegrpc.html#a6beb3ac70ff94bd2ebbd89b8f21d1f61

必须设置以下选项之一:access_tokengoogle_compute_enginegoogle_refresh_tokenservice_account_jwt_accessgoogle_iamfrom_pluginsts_service

google_refresh_token

(string) Google 刷新令牌凭据。 https://grpc.org.cn/grpc/cpp/namespacegrpc.html#a96901c997b91bc6513b08491e0dca37c.

必须设置以下选项之一:access_tokengoogle_compute_enginegoogle_refresh_tokenservice_account_jwt_accessgoogle_iamfrom_pluginsts_service

service_account_jwt_access

(config.core.v3.GrpcService.GoogleGrpc.CallCredentials.ServiceAccountJWTAccessCredentials) 服务帐户 JWT 访问凭据。 https://grpc.org.cn/grpc/cpp/namespacegrpc.html#a92a9f959d6102461f66ee973d8e9d3aa.

必须设置以下选项之一:access_tokengoogle_compute_enginegoogle_refresh_tokenservice_account_jwt_accessgoogle_iamfrom_pluginsts_service

google_iam

(config.core.v3.GrpcService.GoogleGrpc.CallCredentials.GoogleIAMCredentials) Google IAM 凭据。 https://grpc.org.cn/grpc/cpp/namespacegrpc.html#a9fc1fc101b41e680d47028166e76f9d0.

必须设置以下选项之一:access_tokengoogle_compute_enginegoogle_refresh_tokenservice_account_jwt_accessgoogle_iamfrom_pluginsts_service

from_plugin

(config.core.v3.GrpcService.GoogleGrpc.CallCredentials.MetadataCredentialsFromPlugin) 自定义身份验证器凭据。 https://grpc.org.cn/grpc/cpp/namespacegrpc.html#a823c6a4b19ffc71fb33e90154ee2ad07. https://grpc.org.cn/docs/guides/auth.html#extending-grpc-to-support-other-authentication-mechanisms.

必须设置以下选项之一:access_tokengoogle_compute_enginegoogle_refresh_tokenservice_account_jwt_accessgoogle_iamfrom_pluginsts_service

sts_service

(config.core.v3.GrpcService.GoogleGrpc.CallCredentials.StsService) 自定义安全令牌服务,实现 OAuth 2.0 令牌交换。 https://tools.ietf.org/html/draft-ietf-oauth-token-exchange-16 参见 https://github.com/grpc/grpc/pull/19587.

必须设置以下选项之一:access_tokengoogle_compute_enginegoogle_refresh_tokenservice_account_jwt_accessgoogle_iamfrom_pluginsts_service

config.core.v3.GrpcService.GoogleGrpc.CallCredentials.ServiceAccountJWTAccessCredentials

[config.core.v3.GrpcService.GoogleGrpc.CallCredentials.ServiceAccountJWTAccessCredentials proto]

{
  "json_key": ...,
  "token_lifetime_seconds": ...
}
json_key

(string)

token_lifetime_seconds

(uint64)

config.core.v3.GrpcService.GoogleGrpc.CallCredentials.GoogleIAMCredentials

[config.core.v3.GrpcService.GoogleGrpc.CallCredentials.GoogleIAMCredentials proto]

{
  "authorization_token": ...,
  "authority_selector": ...
}
authorization_token

(string)

authority_selector

(string)

config.core.v3.GrpcService.GoogleGrpc.CallCredentials.MetadataCredentialsFromPlugin

[config.core.v3.GrpcService.GoogleGrpc.CallCredentials.MetadataCredentialsFromPlugin proto]

{
  "name": ...,
  "typed_config": {...}
}
name

(string)

typed_config

(Any)

提示

此扩展类别具有以下已知扩展

config.core.v3.GrpcService.GoogleGrpc.CallCredentials.StsService

[config.core.v3.GrpcService.GoogleGrpc.CallCredentials.StsService proto]

安全令牌服务配置,允许 Google gRPC 从 OAuth 2.0 授权服务器获取安全令牌。 参见 https://tools.ietf.org/html/draft-ietf-oauth-token-exchange-16https://github.com/grpc/grpc/pull/19587.

{
  "token_exchange_service_uri": ...,
  "resource": ...,
  "audience": ...,
  "scope": ...,
  "requested_token_type": ...,
  "subject_token_path": ...,
  "subject_token_type": ...,
  "actor_token_path": ...,
  "actor_token_type": ...
}
token_exchange_service_uri

(string) 处理令牌交换请求的令牌交换服务的 URI。

resource

(string) 客户端打算使用请求的安全令牌的目标服务或资源的位置。

audience

(string) 客户端打算使用请求的安全令牌的目标服务的逻辑名称。

scope

(string) 请求的安全令牌在将使用令牌的服务或资源的上下文中所需的范围。

requested_token_type

(string) 请求的安全令牌的类型。

subject_token_path

(string, REQUIRED) 主题令牌的路径,表示请求代表的当事人的身份的安全令牌。

subject_token_type

(string, REQUIRED) 主题令牌的类型。

actor_token_path

(string) 行为者令牌的路径,表示行为者身份的安全令牌。 行为者有权使用请求的安全令牌并代表主题进行操作。

actor_token_type

(string) 行为者令牌的类型。

config.core.v3.GrpcService.GoogleGrpc.ChannelArgs

[config.core.v3.GrpcService.GoogleGrpc.ChannelArgs proto]

通道参数。

{
  "args": {...}
}
args

(repeated map<string, config.core.v3.GrpcService.GoogleGrpc.ChannelArgs.Value>) 参见 grpc_types.h GRPC_ARG #defines 以了解此处有效的键。

config.core.v3.GrpcService.GoogleGrpc.ChannelArgs.Value

[config.core.v3.GrpcService.GoogleGrpc.ChannelArgs.Value proto]

{
  "string_value": ...,
  "int_value": ...
}
string_value

(string) 不支持指针值,因为它们在通过 API 传递时没有任何意义。

必须设置以下选项之一:string_valueint_value

int_value

(int64) 不支持指针值,因为它们在通过 API 传递时没有任何意义。

必须设置以下选项之一:string_valueint_value