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": []
}
scheme

(.xds.core.v3.ResourceLocator.Scheme) URI 協定。

id

(字串) 資源的不透明識別碼。任何「/」在 URI 編碼期間都不會被跳脫,並將構成 URI 路徑的一部分。這可能以「*」結尾,以表示 glob 集合參考。

authority

(字串) 資源的邏輯授權單位(不一定是傳輸網路位址)。授權單位在 xDS API 中是不透明的,資料平面負載平衡器會將它們對應到具體的網路傳輸,例如 xDS 管理伺服器,例如透過 envoy.config.core.v3.ConfigSource。

resource_type

(字串必要) 完整限定的資源類型(如同不含 types.googleapis.com/ 字首的類型 URL)。

exact_context

(.xds.core.v3.ContextParams) 可用於選取資源變體的額外參數。比對必須精確,也就是說,所有上下文參數都必須完全比對,而且在比對的資源上不得設定額外的上下文參數。

directives

(重複 .xds.core.v3.ResourceLocator.Directive) 出現在 xDS 資源定位器 #片段中的指令清單。

當編碼為 URI 形式時,指令會以逗號分隔並進行百分比編碼。

.xds.core.v3.ResourceLocator.Directive

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

指令會向資料平面負載平衡器提供資訊,說明如何解釋 xDS 資源名稱,並可能進一步解析。例如,它們可以在主要解析失敗時提供替代資源定位器。指令不是資源名稱的一部分,也不會出現在 xDS 傳輸探索請求中。

當編碼為 URI 時,指令採用以下形式

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

例如,我們可以有 alt=xdstp://foo/bar 或 entry=some%20thing。每個指令值類型可能都有自己的字串編碼,對於 ResourceLocator,則有遞迴 URI 編碼。

百分比編碼適用於指令值的 URI 編碼。多個指令以逗號分隔,因此在指令值中需要百分比編碼的保留字元為 [「,」、「#」、「[」、「]」、「%」]。這些是 RFC3986 片段保留字元,並加上 xDS 協定特定的「,」。請參閱 https://tools.ietf.org/html/rfc3986#page-49,以瞭解有關 URI ABNF 和保留字元的更多詳細資訊。

{
  "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

(字串) 清單集合支援透過 Resource 中的 entry 欄位內嵌資源。這些內嵌的 Resource 物件可以指定選用的 name 欄位。當指定時,entry 指令允許 ResourceLocator 直接參照這些內嵌的資源,例如 xdstp://…/foo#entry=bar。

必須設定 altentry 之一。

列舉 .xds.core.v3.ResourceLocator.Scheme

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

XDSTP

(預設)

HTTP

FILE