Gloo是一种基于Kubernetes原生设计的功能丰富的Ingress Controller,致力于成为下一代API网关标杆产品。Gloo在函数级路由等方面表现优异;对旧式应用、微服务和serverless提供支持;它具备高效的发现能力,且功能多样;并与领先的开源项目(如Envoy、KNative等)紧密集成。Gloo的独特设计旨在支持异构应用程序,与多种技术,体系结构,协议和云中共存。
何为Gloo
- Kubernetes ingress controller: 当部署在Kubernetes上时,Gloo可以充当功能丰富的入口控制器,并且当部署到AWS EKS等公共云时,可以简化路由功能。
- 异构应用: Gloo创建的应用程序路由到实现为微服务,无服务器功能和旧式应用程序的后端。此功能可以帮助用户逐渐从旧代码迁移到微服务、无服务器架构。用户在保持其原有代码逻辑前提下,使用云原生技术添加新功能;组织中的不同团队可以选择不同架构及其他场景。
- 服务网格Ingress: 服务网格技术解决了跨云网络的服务到服务通信问题。可以使用服务网格解决诸如服务标识,七层网络遥测信息收集,服务弹性,服务之间的流量路由以及策略执行(例如配额,速率限制等)之类的问题。为了使服务网格正常运行,它需要一种使流量进入网格的方法。将流量从边缘传输到集群内部的问题与服务到服务的问题有所不同。前端网关应当提供缓存,安全性和流量管理,Oauth和最终用户身份验证/授权,用户速率限制,Web应用程序防火墙等。Gloo解决了以上问题,兼容所有服务网格技术,包括Istio,Linkerd,Consul Connect和AWS App Mesh。
Gloo特色
- 功能级路由允许集成旧版应用程序,微服务和无服务器:Gloo可以路由直接向functions请求,可以是:无服务器功能调用(例如Lambda,Google Cloud Function,OpenFaaS函数等);微服务或旧服务上的API调用(例如REST API调用,OpenAPI操作,XML / SOAP请求等);或发布到邮件队列(例如,NATS,AMQP等)。这种独特的功能使Gloo成为唯一的API网关支持混合应用程序,以及不将用户绑定到特定范例的唯一应用程序。
- Gloo包含经过审查的开源项目,以提供广泛的功能:Gloo通过与顶级开源项目(包括gRPC,GraphQL,OpenTracing,NATS等)集成来支持高质量功能。Gloo的体系结构允许在将来流行的开源项目出现时快速集成它们。
- 全自动发现使用户可以快速迁移:Gloo在启动时会创建所有可用目的地的目录,并不断对其进行更新。这使开发人员无需承担“记账”的责任,并确保新功能在准备就绪后立即可用。Gloo跨IaaS,PaaS和FaaS提供程序以及Swagger,gRPC和GraphQL发现。
- Gloo与用户环境紧密集成:通过Gloo,用户可以自由选择自己喜欢的调度工具(例如K8S,Nomad,OpenShift等),持久性(K8s,Consul等)和安全性(K8s, Vault)。
特性
路由特性
- 动态负载均衡:跨多个上游服务负载均衡流量。
- 健康检查: 主动和被动监视上游服务。
- OpenTracing标准: 使用支持良好的OpenTracing标准监视请求。
- 监控: 支持Prometheus、Statsd方式监控。
- SSL: 高度可定制的选项,用于向上游服务添加SSL加密,并完全支持SNI。
- 转换: 添加,删除或处理HTTP请求和响应。
通用特性
Gloo可以轻松应对管理入口流量进入应用程序架构(不单单是Kubernetes)的挑战。在Kubernetes,AWS Lambda,VM,Terraform,EC2,Consul等架构/平台中运行时,可以动态发现后端服务。Gloo同时也被选为KNative项目的首选ingress项目,其主要有以下特性。
- 解决云原生和混合云的挑战:微服务使应用程序的API更加复杂。Gloo实现了API网关模式,通过实现管理平面来提升业务的可操作性。
- 构建Envoy代理:Gloo是Envoy Proxy的控制平面,使开发人员和操作员可以通过以声明性格式的xDS gRPC API动态更新Envoy配置。
- 服务网格的基石:Gloo将服务网格功能添加到集群入口。Gloo允许您以迭代的方式渐进式使用高级功能,并与诸如Flagger的系统进行金丝雀自动化发布,同时以本地化方式插入服务网格实现(如Istio,Linkerd或Consul)。
- 针对应用程序的集成:Gloo可以将请求直接路由到Function、微服务上的API,或发布到消息队列。这种独特的功能使Gloo成为支持混合应用程序的唯一API网关,而不会将用户束缚于特定的技术方案。
- 强大的社区特性:Gloo通过与顶级开源项目(如gRPC,GraphQL,OpenTracing,NATS等)集成来支持高级别功能。Gloo的技术架构允许在未来流行的开源项目出现时快速集成。
- 全自动发现能力:Gloo动态发现能力,跨IaaS,PaaS和FaaS
- 与现有工具集成:使用Gloo,用户可以自由选择自己喜欢的调度工具(例如K8S,Nomad,OpenShift等),持久化(K8S,Consul等)和安全特性(K8,Vault)。
参考资料
1.五分钟初识Gloo
END
乐于输出干货的CloudNative相关技术公众号:DCOS。