Limites de gRPC sans proxy

Ce document décrit les limites applicables à Cloud Service Mesh avec des applications gRPC sans proxy. Pour en savoir plus sur les limites, consultez la page Quotas et limites.

Les limites concernant les règles de transfert, les mappages d'URL et les proxys cibles ne s'appliquent qu'à Cloud Service Mesh avec les API d'équilibrage de charge Google Cloud.

Limites générales

Les limites de Cloud Service Mesh avec des applications gRPC sans proxy incluent les suivantes:

  • Vous ne pouvez pas configurer les services de backend ni les cartes des règles de routage avec le protocole gRPC dans Google Cloud Console. Pour ces ressources, la console Google Cloud est en lecture seule.

  • Le protocole gRPC sans proxy est compatible avec la découverte de points de terminaison, le routage, l'équilibrage de charge, la création de rapports sur la charge et de nombreuses fonctionnalités avancées de gestion du trafic.

    • Pour connaître la version gRPC minimale requise pour prendre en charge certaines fonctionnalités de gestion avancée du trafic, consultez la section Versions et langages gRPC compatibles.

    • Pour vos applications gRPC nécessitant des fonctionnalités avancées de gestion du trafic, utilisez le résolveur de noms DNS au lieu du résolveur xDS et déployez-le avec des proxys side-car compatibles avec Cloud Service Mesh. Dans votre proxy gRPC cible, définissez le champ validateForProxyless sur FALSE afin de configurer les fonctionnalités qui ne sont pas encore compatibles avec gRPC, mais qui sont disponibles dans Cloud Service Mesh à l'aide de proxys side-car.

  • Le protocole gRPC sans proxy n'est compatible qu'avec les règles d'équilibrage de charge "round robin" (à tour de rôle) et de hachage en anneau. Les autres algorithmes d'équilibrage de charge ne sont pas compatibles.

    • Cloud Service Mesh fournit au client gRPC une liste prioritaire pondérée des localités, à savoir un groupe d'instances ou un groupe de points de terminaison de réseau (NEG). Cloud Service Mesh calcule cette liste en fonction de la zone disponible la plus proche, de sa capacité et du mode d'équilibrage du service de backend.
    • Pour une requête donnée, le client gRPC choisit une ou plusieurs localités en fonction de la priorité et de la pondération, et effectue un équilibrage de charge round-robin ou basé sur le hachage en anneau pour les backends de ces localités.
  • Le basculement d'une zone (localité) à une autre commence lorsque la capacité de la zone actuelle est inférieure à 50%. Vous ne pouvez pas configurer ce seuil.

  • Dans certains cas, le traitement des commandes de configuration associées à un proxy gRPC cible et à une règle de transfert faisant référence à un proxy gRPC cible peut prendre jusqu'à une minute.

  • Les NEG de connectivité hybride (NEG NON_GCP_PRIVATE_IP_PORT) ne sont pas compatibles avec les clients gRPC sans proxy.

Limites du mappage d'URL

Les fonctionnalités de gestion du trafic de mappage d'URL suivantes sont compatibles avec les services gRPC sans proxy.

Fonctionnalités compatibles avec 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

Les limites de mappage d'URL suivantes s'appliquent lorsque vous utilisez des services gRPC sans proxy :

  • Les caractères génériques dans les règles d'hôte et les règles par défaut d'un mappage d'URL, y compris la règle d'hôte * créée implicitement d'un mappage d'URL, ne sont pas acceptés. Ces entrées sont ignorées lors de la mise en correspondance des hôtes.

  • Les fonctionnalités suivantes ne sont pas compatibles :

    • queryParameterMatches dans routeRules
    • Actions de routage headerAction, urlRewrite, requestMirrorPolicy, corsPolicy et urlRedirect
    • Action de routage timeout ; utilisez maxStreamDuration au lieu de timeout
    • perTryTimeout dans retryPolicy
    • retryConditions dans retryPolicy, à l'exception d'une ou plusieurs conditions cancelled, deadline-exceeded, internal, resource-exhausted et unavailable
    • Les éléments defaultService, defaultRouteAction, defaultUrlRedirect et headerAction du mappage d'URL ne sont pas utilisés par les services gRPC sans proxy. Si une règle hostRule correspondante est introuvable lorsqu'un client gRPC sans proxy recherche un nom de service, Cloud Service Mesh renvoie une erreur de recherche de nom au lieu d'utiliser le service ou l'action par défaut du mappage d'URL.
    • headerAction dans weightedBackendServices
  • Dans les règles de correspondance des en-têtes de mappage d'URL, seules les métadonnées personnalisées non binaires spécifiées par l'utilisateur et l'en-tête content-type sont acceptées. Les en-têtes au niveau du transport suivants ne peuvent pas être utilisés dans les règles de correspondance des en-têtes : :authority, :method, :path, :scheme, user-agent, accept-encoding, content-encoding, grpc-accept-encoding, grpc-encoding, grpc-previous-rpc-attempts, grpc-tags-bin, grpc-timeout et grpc-trace-bin.

  • Lorsque vous mettez à jour une règle d'hôte de mappage d'URL pour passer d'un service de backend à un autre, le trafic peut être supprimé momentanément lors de la transmission de la nouvelle configuration aux clients. Pour éviter cette situation, configurez la répartition du trafic avec des services de backend pondérés. Après avoir configuré la répartition du trafic, déplacez lentement le trafic de l'ancien service de backend vers le nouveau service de backend.

Limites du proxy gRPC cible

Lorsqu'un proxy gRPC cible référence un mappage d'URL, vous ne pouvez pas configurer les fonctionnalités de mappage d'URL suivantes. Cela est valable que vous utilisiez un proxy side-car ou un service gRPC sans proxy, car ces fonctionnalités spécifiques au protocole HTTP ne s'appliquent pas au protocole gRPC:

  • queryParameterMatches règle de correspondance
  • Action de routage urlRewrite
  • Action de routage urlRedirect
  • Action corsPolicy

Limites du service de backend

Les fonctionnalités de service de backend suivantes ne sont pas disponibles avec les services gRPC sans proxy avec un proxy side-car:

  • localityLbPolicy, à l'exception de LEAST_REQUEST (avec les clients Java uniquement), ROUND_ROBIN et RING_HASH
  • sessionAffinity, à l'exception de HEADER_FIELD et NONE
  • consistentHash, à l'exception des champs httpHeaderName et minimumRingSize
  • affinityCookieTtlSec
  • timeoutSec ; utilisez plutôt maxStreamDuration
  • circuitBreakers, à l'exception du champ maxRequests

Notez qu'un client gRPC renvoie un accusé de réception négatif (NACK) sur la configuration de Cloud Service Mesh lorsque des valeurs non compatibles sont configurées. Cela va entraîner le rejet de la configuration par le client pour tous les services de backend, car le protocole xDS requiert actuellement de rejeter toutes les ressources d'une réponse donnée, plutôt que de ne pouvoir rejeter qu'une ressource individuelle. Cela entraîne le passage du canal client à un état d'erreur transitoire jusqu'à ce que la configuration soit corrigée. En raison de cette limitation, vous devez vous assurer que tous les clients acceptent la valeur requise avant de configurer une fonctionnalité pour un service. Par exemple, si vous remplacez la règle ROUND_ROBIN par RING_HASH, vous devez vous assurer que tous les clients sont mis à niveau vers une version compatible avec RING_HASH.

Limites de la gestion du trafic avancée

Vous ne pouvez pas configurer certaines fonctionnalités avancées de gestion du trafic pour les services gRPC sans proxy avec Cloud Service Mesh. Pour connaître les fonctionnalités compatibles, consultez les ressources suivantes:

Limites avec l'Annuaire des services

  • L'Annuaire des services et Cloud Service Mesh ne garantissent pas la joignabilité du réseau pour les clients.
  • Un service de backend ne peut faire référence qu'à l'un des éléments suivants :

    • Groupe d'instances géré ou groupe d'instances non géré
    • Groupe de points de terminaison du réseau
    • Liaisons de service
  • Les services de l'Annuaire des services ne peuvent être utilisés qu'avec des services de backend globaux avec load-balancing-scheme=INTERNAL_SELF_MANAGED.

  • Un service de l'Annuaire des services référencé par une liaison de service peut être supprimé. Si le service de l'Annuaire des services sous-jacent auquel le service de backend est associé est supprimé, les applications qui utilisent Cloud Service Mesh ne peuvent pas envoyer de trafic vers ce service. Par conséquent, les requêtes échouent. Consultez la page Observabilité et débogage pour connaître les bonnes pratiques.

  • Lorsque vous liez un service de l'Annuaire des services à un service de backend, vous ne pouvez pas configurer de vérification de l'état sur ce service de backend.

Étape suivante