API7 Enterprise를 사용하여 gRPC 서비스를 프록시하는 방법은?
January 2, 2024
오늘날 빠르게 진화하는 기술 환경에서 gRPC(Google Remote Procedure Call)는 많은 애플리케이션에서 필수적인 구성 요소가 되었습니다. 그러나 gRPC의 잠재력을 최대한 활용하기 위해서는 강력한 API 게이트웨이가 필요하며, 이를 통해 gRPC 서비스를 효과적으로 관리하고 프로토콜 변환, 로드 밸런싱, 인증 및 권한 부여와 같은 중요한 기능을 제공할 수 있습니다.
gRPC에 익숙하든 아니든, 이 글을 5분만 읽으면 API7 Enterprise를 사용하여 gRPC 서비스를 프록시하는 방법을 알 수 있습니다.
사전 요구 사항
-
API7 Enterprise를 설치하세요.
-
grpcurl
을 설치하여 gRPC 서버와의 상호 작용을 시뮬레이트하세요. -
테스트를 위한 gRPC 서비스를 시작하세요:
- API7.ai는 테스트를 위한 gRPC 서비스 예제를 제공합니다. 또는 다음 docker 명령어를 사용하여 실행할 수 있습니다:
docker run -d --name grpc-service -p 50051:50051 --restart always api7/grpc-server-example:1.0.0
- 시작한 후,
grpcurl
을 사용하여 사용 가능한 gRPC 서비스 목록과 메서드를 확인하세요:
$ 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
API7 Enterprise를 사용하여 gRPC 서비스 프록시하기
게이트웨이 인스턴스 구성 업데이트
기본적으로 API7 Enterprise 인스턴스는 9443 포트에서만 TLS 암호화된 HTTP/2를 지원합니다. 테스트의 편의를 위해 node_listen
섹션에서 게이트웨이 인스턴스 구성 파일을 수정하여 9081 포트를 추가하고 암호화되지 않은 HTTP/2를 지원하도록 설정하세요.
apisix:
node_listen:
- port: 9080
enable_http2: false
- port: 9081
enable_http2: true
변경 후, API7 Enterprise가 설치된 api7-ee
디렉토리에서 docker-compose up -d
를 다시 실행하세요.
서비스 및 라우트 구성
다음으로, API7 Enterprise의 대시보드에서 준비된 gRPC 서비스를 프록시하기 위해 해당 리소스를 구성하세요.
grpc-example
이라는 이름의 서비스를 추가하고 업스트림 스키마로gRPC
를 선택하세요.
-
grpc-example 서비스 내에 라우트를 추가하세요
- 라우트 경로 형식:
/{service}/{method}
- 예를 들어, 이전에 조회한 gRPC 서비스 목록과 메서드를 기반으로 경로를
/helloworld.Greeter/SayHello
로 구성하세요.
- 라우트 경로 형식:
테스트를 위해 서비스 게시
서비스와 라우트를 생성한 후, 서비스를 게이트웨이 그룹에 게시하여 적용하세요.
-
"Publish Service"를 클릭하고 지정된 게이트웨이 그룹을 선택한 후 게시할 서비스를 선택하세요.
-
gRPC 서비스 노드(IP + 포트)를 추가한 후 "Publish"를 클릭하세요.
-
grpcurl
을 사용하여 gRPC 서비스를 테스트하세요:helloworld.proto
파일을 사용하여 grpcurl이 gRPC 서비스 정의와 요청 및 응답 형식을 일치시키도록 하세요. 이 예제의 .proto 파일은 여기에서 찾을 수 있습니다.- 다음 명령어를 실행하여 API7 Enterprise를 사용하여 gRPC 서비스가 성공적으로 프록시되었는지 확인하세요.
$ grpcurl -plaintext -proto helloworld.proto -d '{"name":"apisix"}' 127.0.0.1:9081 helloworld.Greeter.SayHello { "message": "Hello apisix" }
결론
API7 Enterprise는 100개 이상의 내장 플러그인을 자랑하며, 인증, 권한 부여, 속도 제한, 로깅 및 모니터링과 같은 다양한 기능을 제공합니다. API7 Enterprise를 사용하여 gRPC 서비스를 프록시하면 시스템의 유연성, 보안, 성능 및 관리 용이성이 크게 향상되며, 개발자와 운영 팀에게 강력한 도구와 제어 메커니즘을 제공합니다. API7 Enterprise를 시도해보고 gRPC 애플리케이션의 잠재력을 극대화하세요!