Endelig fikk vi gRPC til å jobbe i #dstack etter å ha tilbrakt en hel dag! Siden dstack-gatewayen kan pakke inn vilkårlig TCP i TLS, antok jeg at det bare ville fungere. Det gjorde det ikke.
Nøkkeldetaljen: gRPC kjører på HTTP/2. HTTP/2 er vanligvis avhengig av ALPN (Application-Layer Protocol Negotiation) under TLS-håndtrykket.
Tenk på ALPN som øyeblikket begge sider blir enige om hvilken protokoll de skal snakke (h2 for HTTP/2) før de utveksler faktiske data. Hvis dette trinnet mislykkes, faller tilkoblingen tilbake til HTTP/1.1 – som gRPC ikke kan bruke.
For at en gateway skal håndtere gRPC på riktig måte, må den: 1️⃣ Støtte HTTP/2 ende-til-ende 2️⃣ Forhandle h2 med ALPN under TLS-håndtrykket 3️⃣ Bevar gRPCs binære innramming og trailere Hvis du går glipp av noen av disse, vil du se merkelige heng, manglende feil eller ødelagte bekker.
769