Comment utiliser API7 Enterprise pour proxifier des services gRPC ?

January 2, 2024

Products

Dans le paysage technologique en évolution rapide d'aujourd'hui, gRPC (Google Remote Procedure Call) est devenu un composant indispensable dans de nombreuses applications. Cependant, pour exploiter pleinement le potentiel de gRPC, une passerelle API robuste est essentielle pour la gestion efficace des services gRPC, offrant des fonctionnalités cruciales telles que la conversion de protocole, l'équilibrage de charge, l'authentification et l'autorisation.

Que vous soyez familier avec gRPC ou non, une lecture rapide de 5 minutes de cet article vous permettra de comprendre comment utiliser API7 Enterprise pour proxifier les services gRPC.

API7 Enterprise et gRPC

Prérequis

  1. Installez API7 Enterprise.

  2. Installez grpcurl pour simuler les interactions client gRPC avec votre serveur gRPC.

  3. Démarrez un service gRPC pour les tests :

    • API7.ai fournit un exemple de service gRPC pour les tests. Vous pouvez également l'exécuter en utilisant la commande docker suivante :
    docker run -d --name grpc-service -p 50051:50051 --restart always api7/grpc-server-example:1.0.0
    
    • Une fois démarré, utilisez grpcurl pour afficher la liste des services gRPC disponibles et les méthodes :
    $ 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
    

Utilisation d'API7 Enterprise pour proxifier les services gRPC

Mise à jour de la configuration de l'instance de passerelle

Par défaut, les instances d'API7 Enterprise ne prennent en charge que HTTP/2 chiffré par TLS sur le port 9443. Pour faciliter les tests, modifiez le fichier de configuration de l'instance de passerelle dans la section node_listen, en ajoutant un port 9081 pour prendre en charge HTTP/2 non chiffré.

apisix:
  node_listen:
    - port: 9080
      enable_http2: false
    - port: 9081
      enable_http2: true

Après avoir effectué les modifications, relancez docker-compose up -d dans le répertoire api7-ee où API7 Enterprise est installé.

Configuration des services et des routes

Ensuite, sur le tableau de bord d'API7 Enterprise, configurez les ressources correspondantes pour proxifier le service gRPC préparé.

  1. Ajoutez un service nommé grpc-example et sélectionnez gRPC comme schéma d'amont.

Utilisation d'API7 pour proxifier gRPC-1

  1. Ajoutez une route dans le service grpc-example

    • Format du chemin de la route : /{service}/{method}
    • Par exemple, en vous basant sur la liste des services gRPC et des méthodes précédemment interrogées, configurez le chemin comme /helloworld.Greeter/SayHello.

Utilisation d'API7 pour proxifier gRPC-2

Publication des services pour les tests

Après avoir créé le service et la route, publiez le service dans le groupe de passerelles pour le rendre effectif.

  1. Cliquez sur "Publier le service", sélectionnez le groupe de passerelles spécifié, puis choisissez le service à publier.

  2. Ajoutez un nœud de service gRPC (IP + port), puis cliquez sur "Publier".

  3. Testez le service gRPC en utilisant grpcurl :

    • Utilisez le fichier helloworld.proto pour vous assurer que grpcurl aligne le format de la requête et de la réponse avec la définition du service gRPC. Le fichier .proto pour cet exemple est disponible ici.
    • Exécutez la commande suivante pour voir le proxification réussie du service gRPC en utilisant API7 Enterprise.
    $ grpcurl -plaintext -proto helloworld.proto -d '{"name":"apisix"}' 127.0.0.1:9081 helloworld.Greeter.SayHello
    
    {
      "message": "Hello apisix"
    }
    

Conclusion

API7 Enterprise propose plus de 100 plugins intégrés, couvrant un large éventail de fonctionnalités telles que l'authentification, l'autorisation, la limitation de débit, la journalisation et la surveillance. L'utilisation d'API7 Enterprise pour proxifier les services gRPC améliore considérablement la flexibilité, la sécurité, les performances et la gestion du système, offrant aux développeurs et aux équipes d'exploitation des outils puissants et des mécanismes de contrôle. Faites le pas pour essayer API7 Enterprise et renforcez votre application gRPC !

Tags: