Como Usar o API7 Enterprise para Proxy de Serviços gRPC?

January 2, 2024

Products

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.

API7 Enterprise e gRPC

Pré-requisitos

  1. Instale o API7 Enterprise.

  2. Instale o grpcurl para simular interações de cliente gRPC com o seu servidor gRPC.

  3. 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.

  1. Adicione um serviço chamado grpc-example e selecione gRPC como o esquema do upstream.

Use API7 para fazer proxy de gRPC-1

  1. 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.

Use API7 para fazer proxy de gRPC-2

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.

  1. Clique em "Publicar Serviço", selecione o grupo de gateway especificado e escolha o serviço para publicar.

  2. Adicione um nó de serviço gRPC (IP + porta), então clique em "Publicar".

  3. 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"
    }
    

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!

Tags: