Finalmente conseguimos que o gRPC funcionasse em #dstack depois de passar um dia de buraco! Como o gateway dstack pode envolver TCP arbitrário em TLS, presumi que funcionaria. Isso não aconteceu.
O detalhe principal: o gRPC é executado em HTTP/2. O HTTP/2 normalmente depende do ALPN (Application-Layer Protocol Negotiation) durante o handshake TLS.
Pense no ALPN como o momento em que ambos os lados concordam com qual protocolo falar (h2 para HTTP/2) antes de trocarem quaisquer dados reais. Se essa etapa falhar, a conexão retornará ao HTTP/1.1 — que o gRPC não pode usar.
Para que um gateway lide com o gRPC corretamente, ele deve: 1️⃣ Suporte HTTP / 2 de ponta a ponta 2️⃣ Negocie h2 com ALPN durante o handshake TLS 3️⃣ Preserve o enquadramento binário e os trailers do gRPC Perca qualquer um deles e você verá travamentos estranhos, erros ausentes ou fluxos quebrados.
1,04K