Pular para o conteúdo

Rede privada

  • Serviços do mesmo projeto ficam numa rede própria e se resolvem pelo name do serviço (DNS interno). O serviço api é alcançável por api, na porta do serviço.
  • Serviços de projetos diferentes nunca se alcançam.
  • visibility: "private" = sem rota pública: o proxy não publica e o serviço não recebe slug. Só os outros serviços do projeto o alcançam.
  • Use as variáveis automáticas em vez de montar a URL: ${{api.PRIVATE_URL}} (http://api:8080) ou ${{api.PRIVATE_HOST}} + ${{api.PORT}}. Veja Variáveis e referências.
  • Bancos gerenciados não ficam na rede do projeto: moram num nó de banco e são acessados pela URL das variáveis (DATABASE_URL etc.), com TLS. Veja Conexão e referências.
  • Tráfego do serviço para a internet segue as regras de Isolamento.
Janela do terminal
SUF=$(date +%s)-$RANDOM
H="Authorization: Bearer $NEBULAR_TOKEN"
P=$(curl -sS -X POST "$NEBULAR_API/v1/projects" -H "$H" -H "Content-Type: application/json" \
-H "Idempotency-Key: rp-proj-$SUF" -d "{\"name\": \"rede-$SUF\"}" | jq -r .id)
curl -sS -X POST "$NEBULAR_API/v1/projects/$P/services" -H "$H" -H "Content-Type: application/json" \
-H "Idempotency-Key: rp-api-$SUF" \
-d '{"name": "api", "kind": "app", "visibility": "private", "port": 8080, "source": {"type": "image", "ref": "ghcr.io/org/api:1.0"}}'
{"id": "01j9zkjxrzywfreswk9kf9r1z7", "name": "api", "kind": "app", "visibility": "private", "port": 8080}

No outro serviço do projeto, defina API_URL como ${{api.PRIVATE_URL}} e chame $API_URL/... do código. Receita completa: Front, back e banco.

Sintoma O que fazer
O front não alcança o back Confira o port do back (precisa bater com a porta em que o processo escuta), o name usado no hostname e se ambos estão no mesmo projeto.
422 unresolved_reference no deploy O serviço referenciado não existe no projeto ou o nome está errado.
Quer acessar o serviço privado de fora Não é possível; torne-o public (com slug) via PATCH, ou exponha só o front.