無 Proxy gRPC 的限制

本文件說明 Cloud Service Mesh 在無 Proxy gRPC 應用程式中適用的限制。如要瞭解限制,請參閱「配額與限制」一文。

轉送規則、網址對應和目標 Proxy 的限制僅適用於搭配 Google Cloud 負載平衡 API 的 Cloud Service Mesh。

一般限制

搭配無 Proxy gRPC 應用程式的 Cloud Service Mesh 有以下限制:

  • 您無法在 Google Cloud 控制台中使用 gRPC 通訊協定設定後端服務和轉送規則對應關係。對於這些資源,Google Cloud 控制台為唯讀。

  • Proxyless gRPC 支援端點探索、路由、負載平衡、負載回報,以及許多進階流量管理功能。

    • 如要瞭解支援部分進階流量管理功能所需的最低 gRPC 版本,請參閱「支援的 gRPC 版本和語言」。

    • 如果 gRPC 應用程式需要未支援的進階流量管理功能,請改用 DNS 名稱解析器,而非 xDS 解析器,並搭配 Cloud Service Mesh 支援的補充 Proxy 部署。在目標 gRPC Proxy 中,將 validateForProxyless 欄位設為 FALSE,這樣您就能設定 gRPC 尚未支援,但可透過使用附屬 Proxy 在 Cloud Service Mesh 中使用的功能。

  • 無 Proxy gRPC 僅支援輪替和環狀雜湊負載平衡政策。系統不支援其他負載平衡政策

    • Cloud Service Mesh 會為 gRPC 用戶端提供優先權重量化的地區清單,其中包含一個執行個體群組或一個網路端點群組 (NEG)。Cloud Service Mesh 會根據最近的可用區域、其容量和後端服務的平衡模式,計算這份清單。
    • 針對特定要求,gRPC 用戶端會根據優先順序和權重挑選一或多個地區,並針對這些地區內的後端執行輪替或環形雜湊負載平衡。
  • 當目前可用區的容量低於 50% 時,系統就會開始從一個可用區 (區域) 移轉至另一個可用區。您無法設定這個門檻。

  • 在某些情況下,與目標 gRPC Proxy 相關的設定指令,以及參照目標 gRPC Proxy 的轉送規則,可能需要一分鐘的時間才能完成。

  • 混合式連線 NEG (NON_GCP_PRIVATE_IP_PORT NEG) 不支援無 Proxy gRPC 用戶端。

網址對應限制

無 Proxy gRPC 服務支援下列 網址對應流量管理功能。

hostRulespathMatcher 支援以下功能:

pathMatcher
  name
  description
  defaultService
  defaultRouteAction
     weightedBackendServices
       backendService
       weight
    retryPolicy
       retryConditions
       numRetries
    faultInjectionPolicy
    maxStreamDuration
  pathRules
    service
    routeAction
      weightedBackendServices
         backendService
         weight
      retryPolicy
         retryConditions
         numRetries
      faultInjectionPolicy
      maxStreamDuration
    paths
  routeRules
    priority
    description
    matchRules
        prefixMatch
        fullPathMatch
        headerMatches
        metadataFilters
    service
    routeAction
      weightedBackendServices
         backendService
         weight
      retryPolicy
         retryConditions
         numRetries
      faultInjectionPolicy
      maxStreamDuration

使用無 Proxy gRPC 服務時,請遵守下列網址對應限制:

  • 系統不支援主機規則和網址對應的預設規則中的萬用字元,包括網址對應的隱含建立 * 主機規則。主機比對完成後,系統會略過這類項目。

  • 不支援下列功能:

    • routeRules」設定了「queryParameterMatches」政策
    • headerActionurlRewriterequestMirrorPolicycorsPolicyurlRedirect 路徑動作
    • timeout 路由動作;請使用 maxStreamDuration 取代 timeout
    • retryPolicy」設定了「perTryTimeout」政策
    • retryPolicy 中的 retryConditions,但不包括 cancelleddeadline-exceededinternalresource-exhaustedunavailable 的一或多個條件
    • 無 Proxy gRPC 服務不會使用網址對應項目的 defaultServicedefaultRouteActiondefaultUrlRedirectheaderAction。如果無 Proxy gRPC 用戶端在查詢服務名稱時找不到相符的主機規則,Cloud Service Mesh 會傳回名稱查詢錯誤,而不會使用網址對應的預設服務或動作。
    • weightedBackendServices」設定了「headerAction」政策
  • 在網址對應標頭比對規則中,系統僅支援使用者指定的非二進位自訂中繼資料content-type 標頭。以下傳輸層標頭無法用於標頭比對規則::authority:method:path:schemeuser-agentaccept-encodingcontent-encodinggrpc-accept-encodinggrpc-encodinggrpc-previous-rpc-attemptsgrpc-tags-bingrpc-timeoutgrpc-trace-bin

  • 更新網址對應主機規則,從一個後端服務變更為另一個後端服務時,在將新設定推送至用戶端的過程中,流量可能會暫時中斷。如要避免這項限制,請設定使用加權後端服務的流量拆分。設定流量分割後,請從舊後端服務慢慢將流量轉移至新後端服務。

目標 gRPC Proxy 限制

當目標 gRPC Proxy 參照網址對應時,您無法設定下列網址對應功能。無論您使用的是附加 Proxy 還是無 Proxy gRPC 服務,這項說明都適用,因為這些 HTTP 專屬功能不適用於 gRPC 通訊協定:

  • queryParameterMatches 項比對規則
  • urlRewrite 路線動作
  • urlRedirect 路線動作
  • corsPolicy 動作

後端服務限制

以下後端服務功能不支援使用附加程式 Proxy 的無 Proxy gRPC 服務:

  • localityLbPolicy (LEAST_REQUEST 除外,且僅限 Java 用戶端)、ROUND_ROBINRING_HASH
  • sessionAffinity (HEADER_FIELDNONE 除外)
  • consistentHash (httpHeaderNameminimumRingSize 欄位除外)
  • affinityCookieTtlSec
  • timeoutSec;請改用 maxStreamDuration
  • circuitBreakers (maxRequests 欄位除外)

請注意,如果設定了系統不支援的值,gRPC 用戶端會拒絕 Cloud Service Mesh 的設定。這會導致用戶端拒絕所有後端服務的設定,因為 xDS 通訊協定要求拒絕特定回應中的所有資源,而非只拒絕回應中的個別資源。這會導致用戶端管道進入暫時性錯誤狀態,直到設定修正為止。由於此限制,您必須先確保所有用戶端都支援必要值,才能為服務設定功能。舉例來說,如果您將 ROUND_ROBIN 政策變更為 RING_HASH,就必須確保所有用戶端都已升級至支援 RING_HASH 的版本。

進階流量管理功能的限制

您無法為採用 Cloud Service Mesh 的無 Proxy gRPC 服務設定部分進階流量管理功能。如需支援的功能,請參閱下列內容:

Service Directory 的限制

  • Service Directory 和 Cloud Service Mesh 無法保證用戶端的網路可及性。
  • 後端服務只能參照下列其中一項:

    • 代管執行個體群組或非代管執行個體群組
    • 網路端點群組
    • 服務繫結
  • Service Directory 服務只能與 load-balancing-scheme=INTERNAL_SELF_MANAGED 的全球後端服務搭配使用。

  • 服務繫結參照的 Service Directory 服務可以刪除。如果刪除後端服務附加的基礎服務目錄服務,使用 Cloud Service Mesh 的應用程式就無法將流量傳送至這項服務,因此要求會失敗。如需最佳做法,請參閱可觀察性和偵錯

  • 將服務目錄服務繫結至後端服務時,您無法在該後端服務上設定健康狀態檢查。

後續步驟