вход не работает со шлюзом GRPC. HTTP-запросы не пересылаются на шлюз GRPC, как ожидалось на входе.

Я установил шлюз GRPC со всеми методами, соответствующими URL-адресам HTTP. например v1/my-service. Эти пути, похоже, не работают для настроенного мной входа. Я могу отправить запрос косвенно, используя другой модуль для маршрутизации запросов на этот URL-адрес, используя внутренний IP-адрес кластера, однако, когда я пытаюсь перейти напрямую my-ip / v1 / myservice, я получаю сообщение об ошибке сервера с небольшим описанием:

Error: Server Error</h1>
<h2>The server encountered a temporary error and could not complete your request.<p>Please try again in 30 seconds.

Есть ли причина, по которой это происходит? Я не понимаю, почему я получаю ошибки сервера таким образом, когда знаю, что формат входящего URL-адреса соответствует методу, определенному в шлюзе. Я хотел бы отметить, что мой вход определенно работает, поскольку я просто использую этот промежуточный модуль для маршрутизации успешных запросов, но я все еще отправляю их через вход.


person user10486019    schedule 13.07.2020    source источник
comment
Не могли бы вы поделиться своими входными спецификациями? Вы используете GKE ingress или nginx?   -  person Mr.KoopaKiller    schedule 14.07.2020


Ответы (1)


Возможно, вам понадобится аннотация на вашем ресурсе Ingress (?):

nginx.ingress.kubernetes.io/backend-protocol: "GRPC"

и параметр для контроллера входящего трафика HTTP / 2 (?):

use-http2="true"

Также проверьте nginx.conf в модуле контроллера входящего трафика Nginx:

kubectl exec -it <nginx-ingress-pod> sh
# cat nginx.conf

Вы хотите проверить, настроено ли что-то подобное на уровне сервера:

    server {
        listen 80 http2;
 
        access_log logs/access.log main;
 
        location / {
            # Replace localhost:50051 with the address and port of your gRPC server
            # The 'grpc://' prefix is optional; unencrypted gRPC is the default
            grpc_pass grpc://localhost:50051;
        }
    }
person Rico    schedule 13.07.2020