Ingress
在讲Envoy之前,先介绍一下Kubernetes中Service的表现形式为IP:Port,及工作在Ingress:TCP/IP层。而对于基于HTTP的服务来说,不同的URL地址经常对应到不同的
后端服务或者虚拟服务器,这些应用层的转发机制仅通过Kubernetes的Service机制是无法实现的。Kubernetes v1.1中新增的Ingress将不同的URL访问请求转发到后端
不同的Service,实现HTTP层的业务路由机制。在Kubernetes集群中,Ingress的实现需要通过Ingress的定义与Ingress Controller的定义结合起来,才能实现完整的
HTTP负载分发功能。
Envoy(摘自http://mp.weixin.qq.com/s/D5epVotNIEVlRT74aPmIMA)
Craig McLuckie曾任Kubernetes的产品经理,去年从Google离职后,作为联合创始人创立容器公司Heptio。日前Craig McLuckie代表Heptio公司发表Blog:“Making it
easy to use Envoy as a Kubernetes load balancer”,众所周知,Lyft公司开源的Envoy是目前大热的Service Mesh项目Istio的内置组件,Heptio将Envoy作为Kubernetes的
Ingress Controller实现,为大家提供了一条新的Kubernetes外部负载均衡实现思路。
Heptio Contour是一个Apache 2.0许可的开源项目,提供Envoy作为Kubernetes项目的Ingress Controller,实现简单且简约的集成。 Heptio Contour可以为用户提供以下好处:
-
一种简单的安装机制来快速部署和集成Envoy
-
与Kubernetes对象模型的集成
-
Ingress配置的动态更新,而无需重启底层负载均衡器
-
项目成熟后,将允许使用Envoy一些强大的功能,如断路器、插件式的处理器链,以及可观测性和可调试性
Heptio Contour – An ENVOY powered ingress controller(以下内容翻译自https://github.com/heptio/contour/blob/master/design/roadmap.md)
Contour Roadmap
Support for the v2 GRPC API
Contour 现在通过轮询Envoy的机制获取v1 REST API的值。把轮询的时间设置的过长(30s或者更多),意味着