Finalmente conseguimos fazer o gRPC funcionar no #dstack depois de passar um dia inteiro! Como o gateway dstack pode envolver qualquer TCP em TLS, assumi que funcionaria sem problemas. Não funcionou.
O detalhe chave: gRPC funciona sobre HTTP/2. HTTP/2 normalmente depende do ALPN (Negociação de Protocolo de Camada de Aplicação) durante o handshake TLS.
Pense no ALPN como o momento em que ambas as partes concordam qual protocolo usar (h2 para HTTP/2) antes de trocarem quaisquer dados reais. Se esta etapa falhar, a conexão reverte para HTTP/1.1 — que o gRPC não pode usar.
Para que um gateway trate o gRPC corretamente, ele deve: 1️⃣ Suportar HTTP/2 de ponta a ponta 2️⃣ Negociar h2 com ALPN durante o handshake TLS 3️⃣ Preservar a estrutura binária e os trailers do gRPC Se faltar algum desses, você verá travamentos estranhos, erros ausentes ou streams quebrados.
544