Wie man API7 Enterprise zum Proxying von gRPC-Services verwendet?

January 2, 2024

Products

In der heutigen sich schnell entwickelnden technologischen Landschaft ist gRPC (Google Remote Procedure Call) zu einem unverzichtbaren Bestandteil vieler Anwendungen geworden. Um jedoch das volle Potenzial von gRPC auszuschöpfen, ist ein robustes API-Gateway unerlässlich, um gRPC-Dienste effektiv zu verwalten und wichtige Funktionen wie Protokollumwandlung, Lastenausgleich, Authentifizierung und Autorisierung bereitzustellen.

Egal, ob Sie mit gRPC vertraut sind oder nicht, ein schnelles 5-minütiges Lesen dieses Artikels wird Ihnen das Wissen vermitteln, wie Sie API7 Enterprise verwenden können, um gRPC-Dienste zu proxen.

API7 Enterprise und gRPC

Voraussetzungen

  1. Installieren Sie API7 Enterprise.

  2. Installieren Sie grpcurl, um gRPC-Client-Interaktionen mit Ihrem gRPC-Server zu simulieren.

  3. Starten Sie einen gRPC-Dienst für Tests:

    • API7.ai stellt ein gRPC-Dienstbeispiel für Tests bereit. Alternativ können Sie es mit dem folgenden Docker-Befehl ausführen:
    docker run -d --name grpc-service -p 50051:50051 --restart always api7/grpc-server-example:1.0.0
    
    • Sobald der Dienst gestartet ist, verwenden Sie grpcurl, um die verfügbaren gRPC-Dienste und Methoden anzuzeigen:
    $ 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
    

Verwendung von API7 Enterprise zum Proxen von gRPC-Diensten

Aktualisieren der Gateway-Instanz-Konfiguration

Standardmäßig unterstützen API7 Enterprise-Instanzen nur TLS-verschlüsseltes HTTP/2 auf Port 9443. Zur Vereinfachung der Tests ändern Sie die Konfigurationsdatei der Gateway-Instanz im Abschnitt node_listen, indem Sie einen Port 9081 hinzufügen, um unverschlüsseltes HTTP/2 zu unterstützen.

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

Nachdem Sie die Änderungen vorgenommen haben, führen Sie docker-compose up -d im Verzeichnis api7-ee, in dem API7 Enterprise installiert ist, erneut aus.

Konfigurieren von Diensten und Routen

Als Nächstes konfigurieren Sie auf dem Dashboard von API7 Enterprise entsprechende Ressourcen, um den vorbereiteten gRPC-Dienst zu proxen.

  1. Fügen Sie einen Dienst namens grpc-example hinzu und wählen Sie gRPC als Upstream-Schema aus.

Verwenden von API7 zum Proxen von gRPC-1

  1. Fügen Sie eine Route innerhalb des grpc-example-Dienstes hinzu

    • Das Format des Routenpfads: /{service}/{method}
    • Konfigurieren Sie beispielsweise basierend auf der zuvor abgefragten gRPC-Dienstliste und den Methoden den Pfad als /helloworld.Greeter/SayHello.

Verwenden von API7 zum Proxen von gRPC-2

Veröffentlichen von Diensten für Tests

Nachdem Sie den Dienst und die Route erstellt haben, veröffentlichen Sie den Dienst in der Gateway-Gruppe, um ihn wirksam zu machen.

  1. Klicken Sie auf "Dienst veröffentlichen", wählen Sie die angegebene Gateway-Gruppe aus und wählen Sie den zu veröffentlichenden Dienst aus.

  2. Fügen Sie einen gRPC-Dienstknoten (IP + Port) hinzu und klicken Sie dann auf "Veröffentlichen".

  3. Testen Sie den gRPC-Dienst mit grpcurl:

    • Verwenden Sie die Datei helloworld.proto, um sicherzustellen, dass grpcurl das Anforderungs- und Antwortformat mit der gRPC-Dienstdefinition abgleicht. Die .proto-Datei für dieses Beispiel finden Sie hier.
    • Führen Sie den folgenden Befehl aus, um zu sehen, dass der gRPC-Dienst erfolgreich mit API7 Enterprise geproxt wurde.
    $ grpcurl -plaintext -proto helloworld.proto -d '{"name":"apisix"}' 127.0.0.1:9081 helloworld.Greeter.SayHello
    
    {
      "message": "Hello apisix"
    }
    

Fazit

API7 Enterprise verfügt über 100+ integrierte Plugins, die eine breite Palette von Funktionen wie Authentifizierung, Autorisierung, Ratenbegrenzung, Protokollierung und Überwachung abdecken. Die Verwendung von API7 Enterprise zum Proxen von gRPC-Diensten verbessert die Flexibilität, Sicherheit, Leistung und Verwaltbarkeit des Systems erheblich und bietet Entwicklern und Betriebsteams leistungsstarke Tools und Kontrollmechanismen. Machen Sie den Schritt und probieren Sie API7 Enterprise aus, um Ihre gRPC-Anwendung zu stärken!

Tags: