Я тестирую как GRPC, который использует HTTP2, так и unikernel nanos. Я написал небольшой тестовый сервер на Golang, у которого есть внутренний сервер GRPC, на котором есть запросы, сделанные клиентским соединением в том же приложении. Я настроил TLS для сервера и клиента GRPC, и он отлично работает локально. Он также правильно работает локально как образ контейнера с использованием ops (который является инструментом управления для запуска контейнеров nanos или каким бы то ни было термином для этого. При локальном запуске тот же контейнер работает, как и в GCP, хотя я узнаю там должны быть отличия.
Когда я помещаю экземпляр в GPC, разрешая HTTP и HTTPS в брандмауэре для проекта, он не работает. Я считаю, что это связано с тем, что соединения HTTP2 не поддерживаются или, по крайней мере, не так, как я его настроил.
Я понимаю, что у меня есть ряд вещей, происходящих здесь. Однако, если я оставлю сервер GRPC в приложении в покое и в обработчике HTTP вызову функцию, которая получает полезную нагрузку, вместо вызова через клиент GRPC, все будет работать правильно. Я вижу довольно много документации по использованию HTTP2 с балансировщиками нагрузки GPC, и я могу попробовать это, но я пока ничего не вижу об использовании HTTP2 с работающим экземпляром. Кто-нибудь знает, есть ли способ разрешить HTTP2 на экземпляре GCP?