Eindelijk hebben we gRPC aan de praat gekregen in #dstack na een hele dag werken! Aangezien de dstack-gateway willekeurige TCP in TLS kan wikkelen, ging ik ervan uit dat het gewoon zou werken. Dat deed het niet.
De belangrijkste detail: gRPC draait op HTTP/2. HTTP/2 vertrouwt doorgaans op ALPN (Application-Layer Protocol Negotiation) tijdens de TLS-handshake.
Beschouw ALPN als het moment waarop beide partijen overeenkomen welke protocol ze gaan gebruiken (h2 voor HTTP/2) voordat ze enige daadwerkelijke gegevens uitwisselen. Als deze stap mislukt, valt de verbinding terug op HTTP/1.1 — wat gRPC niet kan gebruiken.
Voor een gateway om gRPC correct te verwerken, moet het: 1️⃣ HTTP/2 end-to-end ondersteunen 2️⃣ h2 onderhandelen met ALPN tijdens de TLS-handshake 3️⃣ gRPC's binaire framing en trailers behouden Als je een van deze mist, zul je vreemde haperingen, ontbrekende fouten of gebroken streams zien.
686