Trafik with gRPC和Let's Encrypt?

时间:2017-11-10 06:46:20

标签: docker grpc lets-encrypt traefik

我按照Traefik指南设置Let's Encrypt and Docker,现在my-domain.com正确接受HTTPS,后面有静态网站。接下来我想在my-grpc-server.my-domain.com处找到一个在Traefik后面运行的gRPC服务器。查看使用gRPC with Traefik的Traefik文档,我看到说明是使用自签名证书。我如何利用我已经拥有Let's Encrypt的有效证书这一事实?

在我的grpc-server Docker容器中尝试解决方案...我可以挂载Traefik写的acme.json文件,从该文件中读取密钥,并使用它们来初始化gRPC服务器。这需要一些笨拙的工作,这很好,但即使这样,我似乎仍然需要一个不同的traefik.toml配置来解释Traefik和我的grpc-server Docker之间的流量这一事实容器需要SSL。

更新:到目前为止,我一直试着尝试一下但没有成功。为了简单起见,我手动导出了极限键进行测试,以便将Let的加密内容从图片中删除。

这是gRPC客户端错误: grpc._channel._Rendezvous: <_Rendezvous of RPC that terminated with (StatusCode.CANCELLED, Received http2 header with status: 500)>

Traefik错误: level=warning msg="Error forwarding to https://172.18.0.2:443, err: stream error: stream ID 1; INTERNAL_ERROR"

奇怪的是,当我连接gRPC客户端时,gRPC服务器上没有消息。但是,当我在 Web浏览器中点击my-grpc-server.my-server.com时,我在Traefik中遇到相同的错误,并在gRPC服务器上出现其他错误: E1112 21:06:37.480636928 8 http_server_filter.c:236] GET request without QUERY 我现在想知道为什么流量会在Web浏览器案例中转发,而不是gRPC客户端案例。

1 个答案:

答案 0 :(得分:0)

要在您的traefik和容器之间以https进行通信,您需要在容器上添加标签traefik.protocol = https(https://docs.traefik.io/configuration/backends/docker/#on-containers

此外,当traefik将联系您的后端服务器时,使用docker后端,它将使用容器的IP(并且它与您的域证书不匹配)。因此,您可以在traefik配置中激活InsecureSkipVerifyhttps://docs.traefik.io/configuration/commons/#main-section)。