#amazon-web-services #grpc
#amazon-web-services #grpc
Вопрос:
Как я могу получить код состояния от конечной точки gRPC без использования клиента gRPC?
Мне нужно протестировать некоторые конечные точки gRPC, которые находятся за AWS application load balancer ( target group
) с проверкой работоспособности, настроенной только на прием статуса 12
UNIMPLEMENTED 12 The operation is not implemented or is not supported/enabled in this service.
Я пытался grpcurl
, например:
grpcurl -plaintext 10.1.2.8:8443 AWS.ALB/healthcheck
:
Но во многих случаях я получаю:
Error invoking method "AWS.ALB/healthcheck": failed to query for service descriptor "AWS.ALB": server does not support the reflection API
Есть альтернативы или идеи? Меня просто интересует код состояния 12
или описание UNIMPLEMENTED
Комментарии:
1. У меня такая же проблема. В итоге вы нашли решение для этого?
2. не самый лучший, но я создал это crates.io/crates/grpc-status
3.
12
означает код ответа проверки работоспособности целевой группы. Мы устанавливаем для него значение 0 на нашем сервере
Ответ №1:
Код состояния 12
можно изменить с помощью
alb.ingress.kubernetes.io/success-codes: '0' // change success code to 0
spec:
rules:
- host: server.xxx.com
http:
paths:
- path: /* // set to * to match all grpc service paths
backend:
serviceName: server
servicePort: 9420
Также включите отражение сервера
@@ -40,6 40,7 @@ import (
"google.golang.org/grpc"
pb "google.golang.org/grpc/examples/helloworld/helloworld"
"google.golang.org/grpc/reflection"
)
const (
@@ -61,6 62,8 @@ func main() {
}
s := grpc.NewServer()
pb.RegisterGreeterService(s, amp;pb.GreeterService{SayHello: sayHello})
// Register reflection service on gRPC server.
reflection.Register(s)
if err := s.Serve(lis); err != nil {
log.Fatalf("failed to serve: %v", err)
}