Enfin, nous avons réussi à faire fonctionner gRPC dans #dstack après avoir passé une journée entière ! Puisque la passerelle dstack peut envelopper n'importe quel TCP en TLS, je pensais que cela fonctionnerait simplement. Ce n'était pas le cas.
Le détail clé : gRPC fonctionne sur HTTP/2. HTTP/2 s'appuie généralement sur ALPN (Négociation de protocole de couche application) lors de l'établissement de la connexion TLS.
Considérez ALPN comme le moment où les deux parties s'accordent sur le protocole à utiliser (h2 pour HTTP/2) avant d'échanger des données réelles. Si cette étape échoue, la connexion revient à HTTP/1.1 — que gRPC ne peut pas utiliser.
Pour qu'une passerelle gère correctement gRPC, elle doit : 1️⃣ Prendre en charge HTTP/2 de bout en bout 2️⃣ Négocier h2 avec ALPN lors de la poignée de main TLS 3️⃣ Préserver le formatage binaire et les bandes-annonces de gRPC Si l'un de ces éléments est manquant, vous verrez des blocages étranges, des erreurs manquantes ou des flux cassés.
678