#ssl #kubernetes #grpc #google-kubernetes-engine #envoyproxy
#ssl #kubernetes #grpc #google-kubernetes-engine #envoyproxy
Вопрос:
Я разработал службу gRPC, которая развернута в кластере Kubernetes, и для подключения к ней я использую grpc-web от клиентов nodejs. Это означает, что мне нужен прокси-сервер перед службой. Все отлично работает с этой конфигурацией envoy без SSL, но теперь мне нужно защитить соединения, чтобы подготовить его к работе.
Вот шаги, которые я прошел
1) Сгенерировал ключи, введя мой домен simulation.terrarium.ai
, когда его спросили, используя этот учебник
2) Отредактируйте файл Dockerfile, чтобы добавить ключи
FROM envoyproxy/envoy:latest
COPY envoy-proxy-tls.yaml /etc/envoy.yaml
EXPOSE 9091
ADD ./certs/simulation.terrarium.ai.crt /etc/simulation.terrarium.ai.crt
ADD ./certs/simulation.terrarium.ai.key /etc/simulation.terrarium.ai.key
ADD ./certs/rootCA.crt /etc/rootCA.crt
WORKDIR /etc/envoy
CMD /usr/local/bin/envoy -c /etc/envoy.yaml
3) Обновлена конфигурация envoy для использования tls на порту
Гораздо проще прочитать этот конфигурационный файл с подсветкой, поэтому вот его суть.
Что происходит
Я делаю вызовы в свою службу следующим образом
var simService = new SimulationServiceClient(ServerAddress, null, null);
var request = new CreateSpectatorRequest();
request.setApi(API_VERSION);
request.setId(this.clientId);
var metadata = {};
var stream = simService.createSpectator(request, metadata);
stream.on("data", this.onData);
stream.on("status", this.onStatus);
stream.on("end", this.onEnd);
На данный момент у меня есть служба grpc и прокси-сервер envoy, работающие в кластере kubernetes, так же, как я делал до добавления TLS. Когда я пытаюсь подключиться из своего браузера, я получаю эту ошибку:
https://simulation.terrarium.ai:9091/v1.SimulationService/SubscribeSpectatorToRegion net::ERR_CERT_AUTHORITY_INVALID
Мне очень сложно отлаживать это, поскольку я не уверен, где именно может возникнуть ошибка. Любая помощь будет оценена!
Ответ №1:
Я использую GKE и только что нашел эту ссылку, которая показывает, как использовать SSL-сертификат, управляемый Google.
Для меня это работает отлично! Извините, я не смог точно решить эту проблему, но это более простая альтернатива, поскольку они также обрабатывают автоматизацию для сертификатов.