728x90
TL; DR;
. grpc는 nlb + ingress-nginx-controller 설정으로 에러가 발생하여 alb + aws load balancer controller로 해결하였다.
. ingress로 설정한 alb는 특이하게 path를 '/'가 아닌 '/*'로 지정해야 한다.
작업 내역
기존 REST 방식이 아닌 gprc는 nlb + ingress-nginx-controller로 설정하면 에러가 발생하였다.
### SERVER SIDE
ingress-nginx-controller-6997b74f67-fgbb7 controller 10.0.197.170 - - [15/Jun/2023:05:11:33 +0000] "PRI * HTTP/2.0" 400 150 "-" "-" 0 0.003 [] [] - - - - fb937710bdfb64a083bebede4a659236
ingress-nginx-controller-6997b74f67-fgbb7 controller 10.0.221.191 - - [15/Jun/2023:05:11:34 +0000] "PRI * HTTP/2.0" 400 150 "-" "-" 0 0.001 [] [] - - - - 5495aa89ea4aa25297cdf4f253c06a1b
### CLIENT SIDE
❯ GODEBUG=http2debug=2 grpcurl xxx.xxxx.com:443 list
2023/06/15 14:11:33 http2: Framer 0x140004dc380: wrote SETTINGS len=0
2023/06/15 14:11:34 http2: Framer 0x14000328fc0: wrote SETTINGS len=0
2023/06/15 14:11:35 http2: Framer 0x1400079c620: wrote SETTINGS len=0
2023/06/15 14:11:38 http2: Framer 0x1400079ce00: wrote SETTINGS len=0
Failed to dial target host "xxxx.xxxx.ai:443": context deadline exceeded
그래서 이전부터 변경하려고 한 alb + aws load balancer controller 환경으로 grpc 테스트를 하고 잘되었다. (aws load balancer controller 설치 블로그 글 참조)
테스트에 사용한 demo grpc 예제는 공식 AWS Load Balancer Controller 홈페이지에서 참조하였다.
https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.5/examples/grpc_server/
정상적으로 설정이 완료되면 아래와 같이 grpcurl로 확인이 가능하다.
$ (⎈ |sent-seoul-stage:grpc-test) grpcurl xxx.xxx.com:443 helloworld.Greeter/SayHello
{
"message": "Hello "
}
grpc 서버 설정에서 특이한 건 ingress 설정을 '/' 가 아닌 '/*'로 해야하는 거였다.
'/'로 지정하면 경로를 못찾아 404 에러 발생한다.
grpclib.exceptions.GRPCError: (<Status.UNIMPLEMENTED: 12>, "Received :status = '404'", None)
alb path 설정을 '/*'로 변경하면 잘된다. aws alb 콘솔 화면이다.
패스가 '/*'를 확인할 수 있다.
이상 간단한 설정 경험을 공유하였다.
반응형
'쿠버네티스 일반 > Network' 카테고리의 다른 글
Karpenter CoreDNS on Spot Instance 장애 (1) | 2024.06.04 |
---|---|
EKS External DNS - Terraform IRSA + Helm (0) | 2023.06.23 |
AWS NLB EKS 환경에서 사용자 IP 파드로 전달 (0) | 2022.09.30 |
Tailscale VPN for 쿠버네티스 & VPC (2) | 2022.09.26 |
Kubernetes Ingress-NGINX on EKS (0) | 2022.02.25 |