xds/core/v3/resource_locator.proto (proto)

警告

此 API 功能目前正在开发中。标记为开发中的 API 功能不被认为是稳定的,不受 威胁模型 的保护,不受安全团队支持,并且可能会发生重大更改。在了解上述所有要点之前,请勿使用此功能。

.xds.core.v3.ResourceLocator

[.xds.core.v3.ResourceLocator proto]

XDS 资源定位器标识 XDS 资源名称,并指示数据平面负载均衡器如何定位该资源。

资源定位器具有规范的 xdstp:// URI 表示形式

xdstp://{authority}/{type_url}/{id}?{context_params}{#directive,*}

其中 context_params 采用 URI 查询参数的形式。

资源定位器具有类似的规范 http:// URI 表示形式

http://{authority}/{type_url}/{id}?{context_params}{#directive,*}

资源定位器还具有简化的 file:// URI 表示形式

file:///{id}{#directive,*}

{
  "scheme": ...,
  "id": ...,
  "authority": ...,
  "resource_type": ...,
  "exact_context": {...},
  "directives": []
}
方案

(.xds.core.v3.ResourceLocator.Scheme) URI 方案。

id

(string) 资源的唯一标识符。任何“/”都不会在 URI 编码期间转义,并将构成 URI 路径的一部分。这可能以“*”结尾,用于通配符集合引用。

权限

(string) 资源的逻辑权限(不一定是指传输网络地址)。权限在 XDS API 中是不透明的,数据平面负载均衡器将它们映射到具体的网络传输,例如 XDS 管理服务器,例如通过 envoy.config.core.v3.ConfigSource。

资源类型

(string, 必需) 完整限定的资源类型(如类型 URL,不带 types.googleapis.com/ 前缀)。

精确上下文

(.xds.core.v3.ContextParams) 可用于选择资源变体的其他参数。匹配必须是精确的,即所有上下文参数必须完全匹配,并且匹配的资源上不能设置任何其他上下文参数。

指令

(重复 .xds.core.v3.ResourceLocator.Directive) XDS 资源定位器 #fragment 中出现的一系列指令。

在编码为 URI 形式时,指令使用逗号分隔进行百分比编码。

.xds.core.v3.ResourceLocator.Directive

[.xds.core.v3.ResourceLocator.Directive proto]

指令向数据平面负载均衡器提供有关如何解释 XDS 资源名称以及如何可能进一步解析 XDS 资源名称的信息。例如,它们可能提供在主要解析失败时使用的备用资源定位器。指令不是资源名称的一部分,不会出现在 XDS 传输发现请求中。

在编码为 URI 时,指令采用以下形式

<指令名称>=<指令值的字符串表示形式>

例如,我们可以有 alt=xdstp://foo/bar 或 entry=some%20thing。每个指令值类型可能具有其自身的字符串编码,在 ResourceLocator 的情况下,有一个递归 URI 编码。

百分比编码适用于指令值的 URI 编码。多个指令用逗号分隔,因此需要在指令值中进行百分比编码的保留字符是 [‘,’、‘#’、‘[’、‘]’、‘%’]。这些是 RFC3986 片段保留字符,并添加了特定于 XDS 方案的“,”。有关 URI ABNF 和保留字符的更多详细信息,请参阅 https://tools.ietf.org/html/rfc3986#page-49

{
  "alt": {...},
  "entry": ...
}
alt

(.xds.core.v3.ResourceLocator) 如果资源不可用,则作为备用资源定位器。例如,假设资源定位器为

xdstp://foo/some-type/some-route-table#alt=xdstp://bar/some-type/another-route-table

如果数据平面负载均衡器无法访问 foo 来获取资源,它将回退到 bar。备用资源不需要具有等效的内容,但它们应该是功能上的替代品。

必须设置 altentry 中的其中一个。

entry

(string) 列表集合支持通过 Resource 中的 entry 字段内联资源。这些内联的 Resource 对象可能具有可选的名称字段。当指定时,entry 指令允许 ResourceLocator 直接引用这些内联资源,例如 xdstp://…/foo#entry=bar。

必须设置 altentry 中的其中一个。

枚举 .xds.core.v3.ResourceLocator.Scheme

[.xds.core.v3.ResourceLocator.Scheme proto]

XDSTP

(默认)

HTTP

FILE