Como Usar o API7 Enterprise para Proxy de Serviços gRPC?
January 2, 2024
No cenário tecnológico em rápida evolução de hoje, o gRPC (Google Remote Procedure Call) tornou-se um componente indispensável em muitas aplicações. No entanto, para aproveitar todo o potencial do gRPC, um gateway de API robusto é essencial para o gerenciamento eficaz dos serviços gRPC, fornecendo funcionalidades cruciais como conversão de protocolo, balanceamento de carga, autenticação e autorização.
Se você está familiarizado com o gRPC ou não, uma leitura rápida de 5 minutos deste artigo irá equipá-lo com o conhecimento de como usar o API7 Enterprise para fazer o proxy de serviços gRPC.
Pré-requisitos
-
Instale o API7 Enterprise.
-
Instale o
grpcurl
para simular interações de cliente gRPC com o seu servidor gRPC. -
Inicie um serviço gRPC para teste:
- A API7.ai fornece um exemplo de serviço gRPC para testes. Alternativamente, você pode executá-lo usando o seguinte comando docker:
docker run -d --name grpc-service -p 50051:50051 --restart always api7/grpc-server-example:1.0.0
- Uma vez iniciado, use o
grpcurl
para visualizar a lista de serviços gRPC disponíveis e os métodos:
$ grpcurl -plaintext 127.0.0.1:50051 list grpc.reflection.v1alpha.ServerReflection helloworld.Greeter helloworld.TestImport $ grpcurl -plaintext 127.0.0.1:50051 list helloworld.Greeter helloworld.Greeter.GetErrResp helloworld.Greeter.Plus helloworld.Greeter.SayHello helloworld.Greeter.SayHelloAfterDelay helloworld.Greeter.SayHelloBidirectionalStream helloworld.Greeter.SayHelloClientStream helloworld.Greeter.SayHelloServerStream
Usando o API7 Enterprise para Fazer Proxy de Serviços gRPC
Atualize a Configuração da Instância do Gateway
Por padrão, as instâncias do API7 Enterprise suportam apenas HTTP/2 criptografado com TLS na porta 9443. Para conveniência de teste, modifique o arquivo de configuração da instância do gateway na seção node_listen
, adicionando uma porta 9081 para suportar HTTP/2 não criptografado.
apisix:
node_listen:
- port: 9080
enable_http2: false
- port: 9081
enable_http2: true
Após fazer as alterações, execute novamente docker-compose up -d
no diretório api7-ee
onde o API7 Enterprise está instalado.
Configure Serviços e Rotas
Em seguida, no painel do API7 Enterprise, configure os recursos correspondentes para fazer o proxy do serviço gRPC preparado.
- Adicione um serviço chamado
grpc-example
e selecionegRPC
como o esquema do upstream.
-
Adicione uma rota dentro do serviço grpc-example
- Formato do caminho da rota:
/{service}/{method}
- Por exemplo, com base na lista de serviços gRPC e métodos consultados anteriormente, configure o caminho como
/helloworld.Greeter/SayHello
.
- Formato do caminho da rota:
Publique Serviços para Teste
Após criar o serviço e a rota, publique o serviço no grupo de gateway para torná-lo efetivo.
-
Clique em "Publicar Serviço", selecione o grupo de gateway especificado e escolha o serviço para publicar.
-
Adicione um nó de serviço gRPC (IP + porta), então clique em "Publicar".
-
Teste o serviço gRPC usando
grpcurl
:- Use o arquivo
helloworld.proto
para garantir que o grpcurl alinhe o formato de solicitação e resposta com a definição do serviço gRPC. O arquivo .proto para este exemplo pode ser encontrado aqui. - Execute o seguinte comando para ver o proxy bem-sucedido do serviço gRPC usando o API7 Enterprise.
$ grpcurl -plaintext -proto helloworld.proto -d '{"name":"apisix"}' 127.0.0.1:9081 helloworld.Greeter.SayHello { "message": "Hello apisix" }
- Use o arquivo
Conclusão
O API7 Enterprise possui mais de 100 plugins integrados, cobrindo uma ampla gama de funcionalidades como autenticação, autorização, limitação de taxa, registro e monitoramento. Utilizar o API7 Enterprise para fazer o proxy de serviços gRPC aumenta significativamente a flexibilidade, segurança, desempenho e capacidade de gerenciamento do sistema, fornecendo aos desenvolvedores e equipes de operações ferramentas poderosas e mecanismos de controle. Dê o passo para experimentar o API7 Enterprise e potencialize sua aplicação gRPC!