【发布时间】:2026-01-13 20:25:01
【问题描述】:
我已经开发了一个部署在 Kubernetes 集群上的 gRPC 服务,并且我正在使用来自 nodejs 客户端的 grpc-web 来连接它。这意味着我需要在服务前使用代理。在没有 SSL 的情况下,this envoy configuration 一切正常,但现在我需要保护连接以使其为生产做好准备。
这是我经历的步骤
1) 生成密钥,当使用this tutorial 询问时输入我的域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
It's much easier to read this config file with highlighting so here is a gist of it.
发生了什么
我这样调用我的服务
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
我很难调试这个,因为我不确定错误可能发生在哪里。任何帮助将不胜感激!
【问题讨论】:
标签: ssl kubernetes grpc google-kubernetes-engine envoyproxy