Tetrate - 使用Istio进行gRPC转码

栏目: 后端 · 发布时间: 7年前

内容简介:在构建新的API(如HTTP/2,流,跨语言支持,服务器推送等)时使用gRPC而不是HTTP/JSON有很多优点。最难的部分往往是如何处理HTTP/ JSON的遗留服务。这就是为什么gRPC-JSON转码非常有吸引力的原因:我们可以实现基于gRPC的服务器,但是使用HTTP/JSON接口暴露给其他传统服务。因此通常,我们会使用gRPC网关或Google Cloud Endpoints等产品 来为我们处理gRPC-JSON转码,但Envoy也实现了转码!Envoy将gRPC转码作为过滤器实现。在Tetrat

在构建新的API(如HTTP/2,流,跨语言支持,服务器推送等)时使用gRPC而不是HTTP/JSON有很多优点。最难的部分往往是如何处理HTTP/ JSON的遗留服务。这就是为什么gRPC-JSON转码非常有吸引力的原因:我们可以实现基于gRPC的服务器,但是使用HTTP/JSON接口暴露给其他传统服务。因此通常,我们会使用gRPC网关或Google Cloud Endpoints等产品 来为我们处理gRPC-JSON转码,但Envoy也实现了转码!

Envoy将gRPC转码作为过滤器实现。在Tetrate,我们使用Istio作为我们的Envoy边车的控制平面,Istio允许通过其EnvoyFilterCRD 进行自定义Envoy配置。为了利用这一点,我们创建了一个小工具gen-transcoder,它扫描gRPC原型描述符以自动生成准确的Envoy过滤器配置。它还支持过滤Envoy公开为HTTP/JSON的描述符中的服务或包等功能。 gen-transcoder是为了与CI / CD工作流程保持友好。在Tetrate,我们使用它来自动交付gRPC-JSON转码器配置,作为我们正常服务部署的一部分。

使用gen-transcoder是一个简单的两步过程:

第1步:在原型编译期间生成原型描述符:

$ protoc \
    -I path/to/google/protobufs \
    -I path/to/your/protos \
    --descriptor_set_out=path/to/output/dir/YOUR_SERVICE_NAME.proto-descriptor \
    --include_imports \
    --go_out=plugins=grpc:. \
    path/to/your/protos/service.proto

第2步:gen-transcoder用于生成Istio Envoy代理配置

$ gen-transcoder \
    --port 9080 \
    --service foo \
    --<b>package</b>s proto.<b>package</b>.name \
    --services='Service.*' \
    --descriptor=path/to/output/dir/YOUR_SERVICE_NAME.proto-descriptor

作为其中的一部分,我们已经包含了一些示例proto服务,这些服务被编译为单个proto描述符,您可以通过以下方式使用它。

$ gen-transcoder \
    --port 9080 \
    --service echo \
    --packages proto \
    --services 'Echo.*' \
    --descriptor \
    proto/onebig.proto-descriptor

这将EnvoyFilter专门针对服务proto.EchoService打包proto。

我们很乐意亲自尝试这个工具。您可以在 此处 下载 源代码 。有关详细信息,请参阅 README.md

作为警告,EnvoyFilter必须谨慎使用Istio !如果推送了错误的过滤器配置,Envoy将拒绝配置更新并停止服务 - 在编写此 工具 之前,我们在Tetrate遇到了停机。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

零边际成本社会

零边际成本社会

[美]杰里米·里夫金 / 赛迪研究院专家组 / 中信出版社 / 2014-11-1 / 49.00

在这本书中,《第三次工业革命》作者杰里米•里夫金开创性地探讨了极致生产力、协同共享、产消者、生物圈生活方式等全新的概念,详细地描述了数以百万计的人生产和生活模式的转变。他认为,“产消者”正在以近乎零成本的方式制作并分享自己的信息、娱乐、绿色能源和3D打印产品。他们也通过社交媒体、租赁商、合作组织以极低或零成本的模式分享汽车、住房、服装和其他物品;学生更多地参与到基于零成本模式的开放式网络课程…… ......一起来看看 《零边际成本社会》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器