Apache APISIX Ingress 1.6 正式发布!


距离上一个版本 v1.5 发布,已经过了 3 个月,我们很高兴地宣布 Apache APISIX Ingress v1.6 正式发布!

在该版本中,共有 29 位贡献者 参与代码提交,其中 17 位是新晋贡献者 ,感谢大家的支持和参与!

新晋贡献者

本次发布的 Apache APISIX Ingress v1.6 版本带来了众多新特性,主要集中在对 Gateway API 的支持,同时也在扩展 APISIX Ingress 的使用场景和易用性方面的提升。以下是一些重点特性的介绍。

扩展对 Gateway API 的支持

Gateway API 是 Kubernetes 中下一代的 Ingress 规范,致力于提供富有表现力,可扩展和面向角色的接口来发展 Kubernetes 的网络,各个 Ingress controller 项目都在积极推进对该规范的支持。Apache APISIX Ingress 项目自 2021 年开始就在积极地紧跟上游社区的发展,并积极推进 Gateway API 在 APISIX Ingress 项目中的实现。

Gateway API

当前,Apache APISIX Ingress 项目中通过 Gateway API 进行配置的特性尚处于 beta 阶段,欢迎大家在测试环境中积极进行测试,并提供反馈,我们将持续的对此特性进行优化和改进,尽早完成此特性的 GA。

在 APISIX Ingress v1.6 版本中,我们添加了对 Gateway API 中的 TCPRouteUDPRoute 这两种资源的支持。同时,扩展了对 HTTPRoute 资源中 Filters 的支持,这样用户在使用 HTTPRoute 资源时,就可以在该资源中应用一些重定向、Header 改写等能力了。

例如可以使用如下配置:

apiVersion: gateway.networking.k8s.io/v1alpha2
kind: HTTPRoute
metadata:
name: http-route
spec:
hostnames: ["httpbin.org"]
rules:
- matches:
- path:
type: PathPrefix
value: /headers
filters:
- type: RequestHeaderModifier
requestHeaderModifier:
add:
- name: X-Api-Version
value: v1
- name: X-api-key
value: api-value
set:
- name: X-Auth
value: filter
remove:
- Remove-header
backendRefs:
- name: httpbin
port: 80

通过使用此配置,客户端在对 httpbin.org 进行请求时,将会添加 "X-Api-Version": "v1""X-Api-Key": "api-value" 的请求头,并将 "X-Auth" 请求头的值设置为 filter ,同时将移除 "Remove-Header" 这个请求头。

支持与服务发现组件的集成

Kubernetes 中默认是使用基于 DNS 的服务发现机制,但是应用在迁移和改造的过程中,并非所有的业务都会选择改造成基于 DNS 的这种服务发现机制,仍然有大量微服务架构的应用会继续使用原有的服务注册发现组件,比如 Consul,Nacos,Eureka 等。

为了将 APISIX Ingress 打造成一款更加好用的 Ingress controller,我们在 v1.6 版本中新增了与服务发现组件集成的能力,用户可以将注册在 Consul/Nacos/Eureka/DNS 中的服务,通过 APISIX Ingress 暴露出来,无论是南北向还是东西向流量的场景均可使用。

例如通过如下配置,声明要代理的服务是通过 Nacos 注册的名为 httpbin 的服务。

apiVersion: apisix.apache.org/v2
kind: ApisixUpstream
metadata:
name: httpbin-upstream
spec:
discovery:
type: nacos
serviceName: httpbin

然后在 ApisixRoute 资源中对其进行引用即可:

apiVersion: apisix.apache.org/v2
kind: ApisixRoute
metadata:
name: httpbin-route
spec:
http:
- name: rule1
match:
hosts:
- local.httpbin.org
paths:
- /*
upstreams:
- name: httpbin-upstream

这样客户端在访问时,就会被 APISIX 代理到 Nacos 中注册的服务了。更多内容可参考文档。

支持代理外部服务

与上述功能类似,Apache APISIX Ingress v1.6 版本中还添加了对外部服务代理的能力。主要是为了便于用户对一些没有部署在 Kubernetes 中的外部服务进行代理。

最典型的场景比如说消息推送。业务为了保障服务的高可用,通常会选择多家供应商提供服务,但供应商也可能会出现一些异常的情况。这种时候就可以通过这个功能,在多个供应商提供的服务中进行动态调度了。

比如通过如下配置设置两个供应商的域名作为后端:

apiVersion: apisix.apache.org/v2
kind: ApisixUpstream
metadata:
name: notify-api
spec:
externalNodes:
- type: Domain
name: foo.com
- type: Domain
name: bar.com
healthCheck:
passive:
unhealthy:
httpCodes:
- 500
- 502
- 503
- 504
httpFailures: 3
timeout: 5s
active:
type: http
httpPath: /healthz
timeout: 5s
healthy:
successes: 3
interval: 2s
httpCodes:
- 200

然后在 ApisixRoute 资源中进行引用:

apiVersion: apisix.apache.org/v2
kind: ApisixRoute
metadata:
name: notify-route
spec:
http:
- name: rule1
match:
hosts:
- local.notify.app
paths:
- /*
upstreams:
- name: notify-api

这样,如果某个供应商的服务出现异常,则会根据健康检查的规则自动地代理到备用的服务上,从而保障业务的可用性。

同样的,如果业务中存在需要代理 ExternalName Service 的场景也可以使用这种方式进行代理。更多内容可参考文档。

其他

除了上述的这些功能外,在此版本中还添加了很多其他功能,包括:

  • 支持 Ingress 资源中代理不同 namespace 中的后端服务;
  • 原生的 MQTT 协议的代理支持;
  • 允许为 4 层代理添加插件支持;
  • 允许在 ApisixRoute 资源中使用 vars 进行条件匹配;
  • 日志轮转支持;

更多详细的变更请查看 Release Note:https://github.com/apache/apisix-ingress-controller/blob/master/CHANGELOG.md#160


相關推薦

2022-11-19

行集成。 10. Gateway API 的全面支持和服务网格 在 APISIX Ingress 的版本迭代中,已开始对 Gateway API 进行支持,最新的 1.5 版本中已基本支持了所有的 Gateway API 配置。 由于 Kubernetes Ingress 资源本身的限制,南北向场景中很多的流量

2023-11-21

Apache APISIX 3.7.0 版本已经发布,带来了一系列新功能、Bug 修复和相关用户体验优化。该新版本添加了许多新功能,包括对 Consul 服务发现的 ACL 令牌的支持、openid-connect 插件中的授权参数、Nacos AK/SK 身份验证等,此外还包含了一

2024-05-01

Apache APISIX 3.8.1 版本已经发布。此新版本包含了一项重要修复,旨在进一步优化和提升用户体验。 修复 forward-auth 插件超时的问题 当客户端使用 POST 方法发送请求,但身份验证服务 API 实际上需要 GET 方法时,可能出现超时问题

2024-10-22

Apache APISIX 3.11.0 版本已经发布,带来了一系列新功能、修复、以及相关用户体验优化。这个新版本增加了许多新功能,包括添加一系列 AI 插件以集成 LLM 提供商、支持 AWS 和 GCP Secret Manager 进行 Secret 管理等等。 此外,该版本还

2023-07-26

Apache APISIX 3.2.2 现已发布,此版本包含了一系列的修复和优化。 修复 升级 lua-resty-jwt 依赖版本 将 lua-resty-jwt 的依赖版本从 0.2.4 升级到 0.2.5,避免 APISIX jwt-auth 插件中身份验证绕过的安全

2023-03-18

内容感兴趣,请参考 3.2 发布的 CHANGELOG:https://github.com/apache/apisix/blob/release/3.2/docs/zh/latest/CHANGELOG.md#320

2023-06-08

等丰富的流量管理功能。从其主要功能和特点角度来看,Apache APISIX 可以替代 Nginx 来处理南北流量,也可以扮演 Istio 控制平面和 Envoy 数据平面的角色来处理东西向流量。 Bugfix 修复 core.request.add_header 中的无效缓存问题。避

2023-07-25

Apache APISIX 3.4.1 版本现已正式发布,其中包含了针对 JWT 的安全补丁。 修复 升级 lua-resty-jwt 依赖版本 为了解决 APISIX jwt-auth 插件中身份验证绕过的安全风险,将 lua-resty-jwt 的依赖版本从 0.2.4升级到&nbs

2023-09-06

Apache APISIX 3.5.0 现已正式发布,此版本带来了一些新功能和改进的用户体验。包括在主机级别动态配置 TLS 版本、与 Chaitin WAF 的集成、强制删除资源、在独立模式下部署 APISIX 时在配置文件中使用环境变量等。此外,还包含了一

2023-11-16

OpenNJet K8s Ingress Controller V 1.0正式发布 🍀 OpenNJet Ingress Controller基于opennjet proxy的动态特性、高性能实现。弥补了nginx 在云原生场景中应用的不足。 🍀 OpenNJet Ingress Controller提供了丰富的流量管理功能,如动态location、host / path路

2023-07-01

Karafka v2.1.6 现已发布。Krafka 是一个用于简化基于 Apache Kafka 的 Ruby 应用开发的框架,它允许开发者在使用异步 Kafka 消息时使用类似于标准 HTTP 约定(params 和 params_batch)的方法。Karafka 不仅可以处理传入的消息,而且还提供

2023-03-17

情提示 请使用干净的系统执行安装,如有安装过 nginx,apache 之类的占用 80 和 443 端口的 web 服务会造成端口冲突 配置要求 操作系统:Ubuntu | Debain | Centos 系统内存:2G+ 产品试用 申请地址:点击申请 安装指南 下载安

2022-11-05

直播嘉宾 ▲ 王晔倞(头哥), 支流科技技术 VP、Apache APISIX Committer   ▲  tison,Apache Member & Incubator Mentor,Apache Flink Committer,微信公众号 “夜天之书” 作者   ▲ 李志信, ioc-golang 作者,Apache Dubbo P

2022-05-17

流行的开源技术提供完全托管的服务。其专业知识涵盖 Apache Cassandra、InfluxDB、MySQL、PostgreSQL、Apache Kafka 和 Elasticsearch;还为 Grafana、Redis 和 Uber M3 提供了托管服务。 该公司于 2021 年 3 月份获得了第一笔 1 亿美元的 C 轮融资;