вход не работает со шлюзом GRP C. Запросы HTTP не пересылаются на шлюз GRP C, как ожидалось на входе - PullRequest
1 голос
/ 13 июля 2020

Я установил шлюз GRP C со всеми методами, соответствующими URL-адресам HTTP. например, v1/my-service. Эти пути, похоже, не работают для настроенного мной входа. Я могу отправить запрос косвенно, используя другой модуль для маршрутизации запросов на этот URL-адрес, используя внутренний IP-адрес кластера, однако, когда я пытаюсь go напрямую 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-адреса соответствует методу, определенному в шлюзе. Я хотел бы отметить, что мой вход определенно работает, поскольку я просто использую этот промежуточный модуль для маршрутизации успешных запросов, но я все еще отправляю их через вход.

1 Ответ

0 голосов
/ 13 июля 2020

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

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

и параметр ConfigMap контроллера входящего трафика 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;
        }
    }
...