gRPC 서비스 퍼블리싱 4탄 – gRPC 메타데이터를 이용한 클라이언트 인증과 헬스체크 구현

애플리케이션 운영을 보다 빠르고, 스마트하며, 안전하게 운영할 수 있도록 지원하는 글로벌 No.1 브랜드​ <F5 네트웍스 코리아> 공식 블로그를 방문해주신 여러분, 반갑습니다! 메타데이터를 위한 많은 활용 사례 중에서 클라이언트 인증은 gRPC API 게이트웨이의 가장 일반적인 사례입니다. 이번 시리즈에서는 gRPC 메타데이터를 이용한 클라이언트 인증과 헬스체크 구현 등 유용한 팁을 소개해 드리겠습니다. ​

메터데이터는 NGINX Plus에 더욱 쉽게 접근할 수 있습니다. gRPC 메타데이터는 클라이언트가 RPC 메소드 호출과 함께 추가 정보를 전송할 수 있도록 하며, 해당 데이터를 프로토콜 버퍼 스펙(.proto 파일)에 포함시키도록 요구하지 않기 때문입니다. 또한, 메타데이터는 단순한 key‑value 쌍 리스트이며, 각 쌍은 별도의 HTTP/2 헤더로서 전송됩니다.

앞서 클라이언트 인증은 메타데이터를 위한 많은 활용 사례 중 gRPC API 게이트웨이의 가장 일반적인 사례라고 알려드렸는데요. NGINX Plus가 어떻게 gRPC 메타데이터를 이용해 JWT 인증을 실행하는지 아래 구성 스니펫을 통해 확인하실 수 있습니다. (JWT 인증은 NGINX Plus에서만 제공됩니다.) 이 예제에서는 JWT가 auth-token 메타데이터로 보내집니다.

모든 각 HTTP 요청 헤더는 NGINX Plus에서 $http_header로 불리는 변수로 이용할 수 있습니다. 헤더 이름 내 하이폰(-)은 변수 이름에서 밑줄( _ )로 변환됩니다. 따라서 JWT는 $http_auth_token(라인 2)으로 나옵니다. 아마도 기존 HTTP/REST API와 함께, API key들이 인증에 이용되는 경우, 이들은 gRPC 메타데이터에 의해 포함되고 NGINX Plus에 의해 검증될 수 있습니다.

헬스체크 구현

이번에는 상태 검사인 ‘헬스체크 구현’에 대해 알아보겠습니다. 트래픽을 다수의 백엔드로 로드 밸런싱하는 경우, 다운되었거나, 여타 다른 이유로 사용 불가능한 백엔드로 요청을 전송하지 않도록 하는 것이 중요합니다. NGINX Plus에서는 능동형 헬스체크 기능을 이용해 사전에 대역외(out‑of‑band) 요청을 백엔드로 전송하고 헬스체크에 제대로 응답하지 않는 경우, 로드 밸런싱 회전에서 제외시킬 수 있습니다. 단, 이러한 방식으로 클라이언트 요청이 장애가 발생한 백엔드에 전달되지 않도록 합니다. gRPC는 HTTP/2 위에서 실행되는 애플리케이션 프로토콜이기 때문에 NGINX Plus가 gRPC 클라이언트를 시뮬레이션하는 것은 쉽지 않습니다. 백엔드 gRPC 서비스가 HTTP GET 요청을 수용한다면 – Go로 작성된 서비스처럼 – 백엔드 gRPC 서비스가 작동 중인지 여부를 테스트하도록 NGINX Plus를 구성할 수 있습니다.

위의 구성 스니펫으로 helloworld gRPC 서비스(Go로 작성된)에 대한 능동형 헬스체크를 실행할 수 있습니다. 관련 구성을 하이라이트하기 위해 이전 섹션에서 사용되었던 grpc_gateway.conf 파일에 포함된 일부 지시문은 생략했습니다.

다음 라우팅 섹션(라인 4–7)에서는 명명된 위치, @helloworld_health에 헬스체크를 정의합니다. 이를 통해 요청 라우팅에 사용된 location 블록에 과부하를 발생시키지 않으면서 헬스체크 요청을 커스터마이즈할 수 있습니다. health_check 지시문(라인 11)은 유효하지 않은 것으로 알려진 URI, /nginx.health/check를 명시하고 있으며, 이 백엔드는 알 수 없는 것(unknown)으로 보고할 것입니다. 활성 상태(active)인 gRPC 서비스와 통신하고 있음을 나타내는 HTTP 헤더를 사용해 예상 응답이 match 블록(라인 20)에 정의됩니다.

이 구성을 적용하면, gRPC 클라이언트에서 지연이나 타임아웃 오류를 발생시키지 않으면서, helloworld 컨테이너 중 하나의 작동을 중단시킬 수 있습니다. 능동형(active) 헬스체크는 NGINX Plus에서만 제공됩니다.

F5 네트웍스 코리아 블로그에서 준비한 gRPC 정의부터 샘플 서비스 실행, 에러에 응답하는 법과 이번에 소개한 gRPC 메타데이터를 이용한 클라이언트 인증과 헬스체크 구현 꿀팁까지~ 차근차근 보신 분들은 이제 gRPC 퍼블리싱이 쉽게 느껴질 것 같은데요. 보다 디테일한 정보를 드리기 위해 다음 시리즈에서는 기타 게이트웨이 제어 적용법과 속도 제한 방법을 소개해 드릴 예정이니 많은 기대 부탁드립니다! 본 포스팅에 대해 궁금한 사항은 댓글 또는 Contact F5를 통해 문의 주세요. “Code Connects Us All!” F5 네트웍스 코리아는 귀사의 애플리케이션이 보다 빠르고 스마트하며 안전하게 운영될 수 있도록 항상 최선을 다하겠습니다.

출처 : F5코리아 공식블로그 https://blog.naver.com/f5networks_korea/221935115712

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>