Я работаю над небольшим API gRCP и столкнулся с небольшой проблемой.Я хочу, чтобы служба gRPC была доступна из внешнего интерфейса React, а это значит, что мне нужен прокси-посредник, который переводит gRPC -> HTTP1 и наоборот.
TL; DR Я думаю, что могу связаться с прокси-посланником, но прокси-сервер неправильно маршрутизирует мою службу.
Я опубликую информацию об услугах здесь и объясню, что происходит ниже.
Файлы yaml K8s (развертывание и обслуживание) для каждого из моих сервисов:
Развертывание моделирования
Файл конфигурации посланника и образ докера
ПосланникКонфиг
Envoy Dockerfile
Вот быстрая проверка работоспособности, чтобы убедиться, что мой сервис работает, без учета прокси посланника:
> kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 37d
sim-dep NodePort 10.105.65.65 <none> 9090:30780/TCP 3s
sim-dep-http1 NodePort 10.111.190.170 <none> 8080:30948/TCP 3s
sim-envoy-proxy NodePort 10.110.178.132 <none> 9091:32068/TCP 17h
> curl <minikube ip>:30948/v1/todo/all
{"api":"v1","toDos":[{}]}
> ./client-grpc -server=192.168.99.100:30780
<success from server, too much to put here but it works>
ИтакНасколько я понимаю, этот прокси-сервер-посланник должен принимать подключения через порт 9091, а затем перенаправлять их на адрес sim-dep (DNS-сервер K8s работает) на порт 9090.
Вот мой код и ошибка при запуске этого наРеагировать приложение на моей машине (не в Minikube).
var todoService = new ToDoServiceClient(
"http://192.168.99.100:32068/",
null,
null
);
var todo = new ToDo();
todo.setTitle("JS Created ToDo");
todo.setDescription("This todo was created with JS client");
var createRequest = new CreateRequest();
createRequest.setApi("v1");
createRequest.setTodo(todo);
var response = await todoService.create(createRequest, {}, <callback>);
Журналы:
upstream connect error or disconnect/reset before headers
Я предполагаю, что это означает, что он не может подключиться на каком-то уровне, но эта ошибка не очень наглядна.Я также не могу прокрутить прокси посланника, но я попытался отправить запрос с PostMan и получил это:
Я не слишкомконечно, что с этим делать, но похоже, что он достигает посланника, но не достигает службы.Буду признателен за любую помощь в этом!:) И дай мне знать, если я пропустил какую-либо информацию здесь.Спасибо!