关于ingress:从-Traefik-到-APISIX汽车智能计算平台公司地平线在-Ingress-Controller-的探索和实践

作者:地平线云原生开发工程师--张昕在以后的汽车行业,大多数公司都在向主动驾驶和新能源方向转型,而对于主动驾驶方面,每家企业都投入了大量的资源来实现主动驾驶模型的开发与训练,其中呈现了很多明星企业,比方汽车智能计算平台引领者地平线。地平线次要从事汽车智能计算平台的研发,具备当先的深度学习算法和芯片设计能力,致力于通过底层技术赋能,推动汽车产业的翻新倒退。 智能汽车是机器人时代第一个大终端,地平线同时也通过软硬件的联合,宽泛赋能泛机器人行业的利用落地。在硬件层面,地平线基于自主研发的专用计算架构BPU(Brain Processing Unit) ,推出面向智能驾驶的计算平台征程系列和面向泛机器人的夕阳系列。在软件层面,面向智能汽车AI软件产品开发及迭代需要,地平线打造地平线艾迪®AI开发平台,可能为智能汽车AI开发者提供数据标注、训练、优化、部署、治理与性能剖析等能力。整套基础设施,开箱即用,用户无需从零搭建一套简单的主动驾驶跨平台零碎,只需聚焦于外围价值积攒。 对于一家疾速倒退的科技公司而言,如何保障业务稳固运行与轻松治理是十分重要的,而网关则是保障业务稳固的第一道关卡。因为之前网关存在了一些无奈解决的问题,因而地平线对网关从新进行选型,最终抉择了 Apache APISIX Ingress Controller 作为公司的流量网关,对立提供服务。 网关选型之路Traefik 的有余在应用 APISIX Ingress 之前,业务零碎应用的 Ingress Controller 是 Traefik 1.x 版本,然而存在以下几个问题: Traefik 1.x 是通过 Ingress 来配置路由规定的,局部插件须要通过增加 annotation 的形式进行配置。这种形式,只能针对以后 Ingress下的所有规定增加插件,无奈实现更细粒度的配置。Traefik 1.x 不反对具体规定可视化配置,无奈依据 Request URL 通过页面间接定位到具体服务。Traefik 的默认配置文件(configmap)内容较少,许多默认配置须要翻阅官网文档,并且有些参数和 NGINX 默认配置不统一,导致保护起来比拟麻烦。针对以上问题,地平线的技术团队决定更换 Ingress Controller,在选型初期也有思考将 Traefik 降级到 Traefik 2.0 解决上述问题,然而因为也须要采纳新的 CRD 来进行降级,迁徙老本也不低,不如尝试下其余 Ingress 计划。 APISIX Ingress 的劣势在选型初期,咱们次要比照了 APISIX Ingress、Kong Ingress 和 Envoy,然而除了 APISIX Ingress 其余网关或多或少在性能或性能上无奈满足现有场景的需要,因而最终抉择了 APISIX Ingress,除了一些通用的性能外,咱们更看重以下几点: 插件丰盛:插件生态好,APISIX 反对的插件,均能够应用 apisix-ingress-controller 做申明式配置,并且能够针对 ApisixRoute 下的单条 backend 定制插件。可视化配置:搭配 APISIX Dashboard 能够看到每条apisix route。如果同一域名配置在多个 namespace 或者是多个 yaml 文件中,发生冲突时能够联合 APISIX Dashboard 搜寻 path 前缀即可疾速定位。细粒度校验:APISIX Ingress Controller 会对其治理的 CRD 申明的资源进行校验,如果在 CRD 中申明了不存在的 Service,则会将报错信息存储在 ApisixRoute 的 event 中,此次变更也不会失效,在肯定水平上缩小了一些因误操作造成的问题。功能丰富:APISIX 反对热更新和热插件、代理申请重写、多种身份认证、多语言插件开发等诸多个性,更多功能请参考 APISIX 的性能。社区沉闷: Issue 的响应速度很快,绝对其余社区, APISIX 沉闷开发者数量多。高性能:从下图中,能够看到在和 Envoy 进行压测比照时,APISIX 性能是 Envoy 的 120% 左右,外围数越多 QPS 差距越大。 ...

October 25, 2022 · 2 min · jiezi

关于ingress:保姆级教程从概念到实践帮你快速上手-Apache-APISIX-Ingress

Apache APISIX Ingress 概览Apache APISIX Ingress 定义 在 K8s 生态中,Ingress 作为示意 K8s 流量入口的一种资源,想要让其失效,就须要有一个 Ingress Controller 去监听 K8s 中的 Ingress 资源,并对这些资源进行相应规定的解析和理论承载流量。在当下趋势中,像 Kubernetes Ingress Nginx 就是应用最宽泛的 Ingress Controller 实现。 而 APISIX Ingress 则是另一种 Ingress Controller 的实现。跟 Kubernetes Ingress Nginx 的区别次要在于 APISIX Ingress 是以 Apache APISIX 作为理论承载业务流量的数据面。如下图所示,当用户申请到具体的某一个服务/API/网页时,通过内部代理将整个业务流量/用户申请传输到 K8s 集群,而后通过 APISIX Ingress 进行后续解决。 从上图能够看到,APISIX Ingress 分成了两局部。一部分是 APISIX Ingress Controller,作为管制面它将实现配置管理与散发。另一部分 APISIX Proxy Pod 负责承载业务流量,它是通过 CRD(Custom Resource Definitions) 的形式实现的。Apache APISIX Ingress 除了反对自定义资源外,还反对原生的 K8s Ingress 资源。 ...

October 29, 2021 · 3 min · jiezi