Pular para o conteúdo principal

Rede entre projetos

Dentro da organização, um projeto não alcança outro pela rede interna. A rede junta projetos que podem ser autorizados a se chamar, e a permissão — dada por quem recebe a chamada — abre um serviço para um projeto. O que ninguém autorizou continua bloqueado, inclusive entre projetos da mesma rede.

Como funciona​

  • A rede é da organização. Um projeto entra nela com um dos seus ambientes. Para separar produção de staging, use uma rede para cada: o staging de um projeto nunca chega ao serviço de produção de outro só porque os dois projetos estão na mesma rede.
  • Estar na rede não libera nada. Estar nela torna a permissão possível e faz o nome interno dos serviços resolver.
  • A permissão vale para um serviço, de aplicação web ou de serviço interno, pela porta que ele anuncia, e só por TCP. Ela é dada no projeto de destino, e não é transitiva: se o projeto A chama B e B chama C, A não chama C.
  • O próprio ambiente não muda. Os serviços de um mesmo ambiente continuam se chamando como antes.
  • O endereço público continua público. Um serviço publicado na internet continua alcançável pelo endereço público dele, para qualquer um. Para que um projeto só seja alcançável pela rede, torne-o interno.
  • Ambiente de pré-visualização não entra em rede.

Quem pode o quê​

AçãoQuem
Criar ou excluir uma redeadmin ou operator da organização
Pôr um ambiente numa redeadmin ou operator da organização
Tirar o ambiente de um projeto da redeQuem pode alterar o projeto
Autorizar um projeto a chamar um serviçoQuem pode alterar o projeto do serviço chamado
Revogar uma permissãoQuem pode alterar o projeto chamado, ou o que chama
Ver as redes e quem está nelasQualquer pessoa da organização

Quais projetos estão em cada rede é visível para toda a organização, para que se saiba a quem pedir. As permissões e os endereços internos aparecem só para os projetos que você enxerga.

Os estados de uma permissão​

EstadoO que significa
Ainda não liberadoA permissão existe; a plataforma ainda não a aplicou
LiberadoO projeto de origem alcança o serviço
Revogação em andamento — o acesso ainda está abertoA permissão foi revogada; até a plataforma aplicar, o acesso continua
Revogado — novas conexões bloqueadasAplicada. Conexão nova é recusada
Revogar vale para conexão nova

Uma conexão aberta antes da revogação — o pool de um banco, um canal gRPC, um WebSocket — pode continuar viva até o serviço de destino reiniciar. Para encerrar também essas, publique o serviço de destino de novo depois que a permissão chegar a Revogado.

Passo a passo​

No console​

  1. Em Redes, na organização, clique em Nova rede. O nome tem de 3 a 40 caracteres — letras minúsculas, números e hífen, começando por letra e sem hífen no fim —, e a descrição é opcional.
  2. Em cada projeto, na tela Rede do projeto, use Pôr na rede e escolha o ambiente.
  3. No projeto que vai ser chamado, use Autorizar projeto: escolha o serviço e o Projeto que passa a chamar. A porta é a do serviço, e a permissão acompanha se ela mudar.
  4. Acompanhe a permissão até Liberado.

Pela CLI​

zero networks create pagamentos
zero networks attach <ambiente-do-checkout> --network pagamentos
zero networks attach <ambiente-da-api> --network pagamentos
zero services internal-name <serviço-da-api> api # api.zero.internal
zero networks grant pagamentos --from <projeto-checkout> --to <serviço-da-api> --wait
zero networks grants pagamentos

--wait espera a regra ser aplicada e sai com código 1 se o prazo vencer (--timeout, padrão 5 minutos). Os comandos completos estão em CLI.

Chamar o serviço​

Pelo nome interno e pela porta do serviço — por exemplo, http://api.zero.internal:8080. O nome resolve para qualquer projeto da rede, mas só chega ao serviço quem tem permissão: resolver não é alcançar.

Para dar à rede caminhos por prefixo, como /v1 e /v2 levando a serviços diferentes, use uma entrada interna do Gateway.

Tirar um ambiente da rede, e excluir a rede​

  • Tirar um ambiente da rede é recusado enquanto outros projetos chamam serviços dele — por permissão ou por um caminho de entrada interna. Revogue e remova esses caminhos antes.
  • Uma rede só é excluída vazia: sem ambientes associados e sem entradas internas.

Erros comuns​

SintomaCausaO que fazer
"O projeto de origem não está nesta rede"O projeto que vai chamar não tem ambiente na redePonha um ambiente dele na rede e autorize de novo
"O serviço de destino não está nesta rede"O ambiente do serviço está em outra rede, ou em nenhumaPonha o ambiente do serviço nesta rede, ou use a rede em que ele está
"Essa porta não é a do serviço"A porta informada não é a que o serviço anunciaOmita a porta: a permissão usa a do serviço
"Este serviço não recebe conexões"O destino é um processo contínuo ou uma tarefa agendadaEscolha uma aplicação web ou um serviço interno
"Este projeto já está nesta rede com outro ambiente"Um projeto entra numa rede com um ambiente sóTire o outro ambiente, ou use uma rede para cada ambiente
"Ambiente de pré-visualização não entra em rede"O ambiente escolhido é de pull requestUse um ambiente de desenvolvimento, staging ou produção
"Outros projetos ainda chamam serviços deste ambiente"Há permissões ou caminhos de entrada interna com destino neleRevogue as permissões e remova os caminhos antes de desassociar
"Esta rede ainda está em uso"A rede tem ambientes ou entradas internasDesassocie os projetos e remova as entradas antes de excluir
"As regras de rede estão atrasadas"A plataforma ainda não aplicou uma mudançaEla tenta de novo sozinha; se persistir, repita a operação em alguns minutos

Próximos passos​