Limitaciones de gRPC sin proxy

En este documento se describen las limitaciones que se aplican a Cloud Service Mesh con aplicaciones gRPC sin proxy. Para obtener información sobre los límites, consulta Cuotas y límites.

Las limitaciones de las reglas de reenvío, los mapas de URLs y los proxies de destino solo se aplican a Cloud Service Mesh con las Google Cloud APIs de balanceo de carga.

Limitaciones generales

Estas son las limitaciones de Cloud Service Mesh con aplicaciones gRPC sin proxy:

  • No puedes configurar servicios de backend ni mapas de reglas de enrutamiento con el protocolo gRPC en la consola de Google Cloud . En estos recursos, la consolaGoogle Cloud es de solo lectura.

  • gRPC sin proxy admite el descubrimiento de endpoints, el enrutamiento, el balanceo de carga, los informes de carga y muchas funciones avanzadas de gestión del tráfico.

    • Para consultar la versión mínima de gRPC necesaria para admitir algunas funciones de gestión avanzada del tráfico, consulta Versiones e idiomas de gRPC admitidos.

    • En el caso de las aplicaciones gRPC que necesiten funciones avanzadas de gestión del tráfico no admitidas, usa el resolvedor de nombres DNS en lugar del resolvedor xDS e implementa proxies sidecar compatibles con Cloud Service Mesh. En el proxy gRPC de destino, asigna el valor FALSE al campo validateForProxyless para poder configurar funciones que aún no son compatibles con gRPC, pero que están disponibles en Cloud Service Mesh con el uso de proxies sidecar.

  • gRPC sin proxy solo admite las políticas de balanceo de carga de tipo round-robin y hash de anillo. No se admiten otras políticas de balanceo de carga.

    • Cloud Service Mesh proporciona al cliente de gRPC una lista ponderada y priorizada de localidades (un grupo de instancias o un grupo de puntos finales de red [NEG]). Malla de servicios de Cloud calcula esta lista en función de la zona disponible más cercana, su capacidad y el modo de balanceo del servicio de backend.
    • En una solicitud concreta, el cliente de gRPC elige una o varias localidades en función de la prioridad y el peso, y realiza un balanceo de carga basado en round-robin o en hash de anillo a los back-ends de esas localidades.
  • La conmutación por error de una zona (localidad) a otra se inicia cuando la capacidad de la zona actual es inferior al 50%. No puedes configurar este umbral.

  • En algunos casos, los comandos de configuración relacionados con un proxy gRPC de destino y una regla de reenvío que haga referencia a un proxy gRPC de destino pueden tardar hasta un minuto.

  • Los NEGs de conectividad híbrida (NON_GCP_PRIVATE_IP_PORT NEGs) no se admiten con clientes gRPC sin proxy.

Limitaciones de los mapas de URLs

Las siguientes funciones de gestión del tráfico de mapas de URLs se admiten con los servicios de gRPC sin proxy.

Funciones admitidas en la pathMatcher de hostRules:

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

Cuando usas servicios gRPC sin proxy, se aplican las siguientes limitaciones de mapas de URLs:

  • No se admiten caracteres comodín en las reglas de host ni en las reglas predeterminadas de un mapa de URLs, incluida la regla de host * creada implícitamente de un mapa de URLs. Estas entradas se omiten cuando se realiza la coincidencia de host.

  • Las siguientes funciones no se admiten:

    • queryParameterMatches en routeRules
    • headerAction, urlRewrite, requestMirrorPolicy, corsPolicy y urlRedirect acciones de ruta
    • Acción de ruta timeout; usa maxStreamDuration en lugar de timeout
    • perTryTimeout en retryPolicy
    • retryConditions en retryPolicy, excepto una o varias condiciones de cancelled, deadline-exceeded, internal, resource-exhausted y unavailable
    • Los campos defaultService, defaultRouteAction, defaultUrlRedirect y headerAction del mapa de URLs no se usan en los servicios de gRPC sin proxy. Si no se encuentra ninguna regla de host coincidente cuando un cliente gRPC sin proxy busca un nombre de servicio, Cloud Service Mesh devuelve un error de búsqueda de nombre en lugar de usar el servicio o la acción predeterminados del mapa de URLs.
    • headerAction en weightedBackendServices
  • En las reglas de coincidencia de encabezado de los mapas de URLs, solo se admiten los metadatos personalizados especificados por el usuario que no sean binarios y el encabezado content-type. Los siguientes encabezados de nivel de transporte no se pueden usar en reglas de coincidencia de encabezados: :authority, :method, :path, :scheme, user-agent, accept-encoding, content-encoding, grpc-accept-encoding, grpc-encoding, grpc-previous-rpc-attempts, grpc-tags-bin, grpc-timeout y grpc-trace-bin.

  • Cuando actualizas una regla de host de un mapa de URLs para cambiar de un servicio de backend a otro, es posible que el tráfico se pierda momentáneamente mientras se envía la nueva configuración a los clientes. Para evitar esta limitación, configure la división del tráfico con servicios de backend ponderados. Después de configurar la división del tráfico, transfiere lentamente el tráfico del servicio de backend antiguo al nuevo.

Limitaciones de los proxies gRPC de destino

Cuando un proxy gRPC de destino hace referencia a un mapa de URLs, no puedes configurar las siguientes funciones del mapa de URLs. Esto se aplica tanto si usas un proxy sidecar como un servicio de gRPC sin proxy, ya que estas funciones específicas del protocolo HTTP no se aplican al protocolo gRPC:

  • Regla de coincidencia de queryParameterMatches
  • urlRewrite acción de ruta
  • urlRedirect acción de ruta
  • corsPolicy acción

Limitaciones de los servicios de backend

Las siguientes funciones de servicio backend no se admiten en los servicios de gRPC sin proxy con un proxy sidecar:

  • localityLbPolicy, excepto LEAST_REQUEST (solo con clientes de Java), ROUND_ROBIN y RING_HASH
  • sessionAffinity, excepto HEADER_FIELD y NONE
  • consistentHash, excepto los campos httpHeaderName y minimumRingSize
  • affinityCookieTtlSec
  • timeoutSec; usa maxStreamDuration en su lugar
  • circuitBreakers, excepto el campo maxRequests

Ten en cuenta que un cliente gRPC enviará un NACK a la configuración de Cloud Service Mesh cuando se configuren valores no admitidos. Esto hará que el cliente rechace la configuración de todos los servicios backend, ya que el protocolo xDS requiere que se rechacen todos los recursos de una respuesta determinada, en lugar de poder rechazar solo un recurso concreto de la respuesta. Esto hará que el canal del cliente pase a un estado de error transitorio hasta que se corrija la configuración. Debido a esta limitación, debes asegurarte de que todos los clientes admitan el valor necesario antes de configurar una función para un servicio. Por ejemplo, si cambias la política ROUND_ROBIN a RING_HASH, debes asegurarte de que todos los clientes se actualicen a una versión que admita RING_HASH.

Limitaciones de la gestión avanzada del tráfico

No puedes configurar algunas funciones avanzadas de gestión del tráfico para servicios de gRPC sin proxy con Cloud Service Mesh. Para ver las funciones compatibles, consulta lo siguiente:

Limitaciones de Directorio de servicios

  • Service Directory y Cloud Service Mesh no garantizan la accesibilidad de la red para los clientes.
  • Un servicio de backend solo puede hacer referencia a uno de los siguientes elementos:

    • Grupo de instancias gestionado o sin gestionar
    • Grupo de puntos finales de red
    • Enlaces a servicios
  • Los servicios de Service Directory solo se pueden usar con servicios de backend globales con load-balancing-scheme=INTERNAL_SELF_MANAGED.

  • Se puede eliminar un servicio de Directorio de servicios al que haga referencia un enlace de servicio. Si se elimina el servicio de Service Directory subyacente al que está asociado el servicio de backend, las aplicaciones que usen Cloud Service Mesh no podrán enviar tráfico a este servicio y, por lo tanto, las solicitudes fallarán. Consulta las prácticas recomendadas para la observabilidad y la depuración.

  • Cuando vinculas un servicio de Service Directory a un servicio de backend, no puedes configurar una comprobación de estado en ese servicio de backend.

Siguientes pasos