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 项目中的实现。

当前,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


API7.ai 是一家提供 API 处理和分析的开源基础软件公司,于 2019 年开源了新一代云原生 API 网关 -- API...

99 声望
36 粉丝
0 条评论
推荐阅读
什么是 LuaJIT?为什么 Apache APISIX 选择了 LuaJIT?
简单地说,LuaJIT 是 Lua 这种编程语言的实时编译(JIT,Just-In-Time Compilation)器的实现。对于不太了解 LuaJIT 的读者,我们可以将 LuaJIT 拆成 Lua 和 JIT 两个部分来理解。

API7_技术团队阅读 188

张晋涛:我的 2022 总结
大家好,我是张晋涛。2022 年已经结束,我每年都会惯例的做个小回顾,今年因为阳了在恢复身体,一直拖到了今天才写。生活在 2022 年初做回顾的时候,觉得 2021 是魔幻的一年,但现在看来 2022 年其实更加魔幻。一...

张晋涛6阅读 1.1k评论 2

封面图
突破难关:Docker镜像和容器的区别以及构建的最佳实践
Docker 可谓是开启了容器化技术的新时代,现在无论大中小公司基本上都对容器化技术有不同程度的尝试,或是已经进行了大量容器化的改造。伴随着 Kubernetes 和 Cloud Native 等技术和理念的普及,也大大增加了业务...

张晋涛4阅读 464

封面图
译文 | A poor man's API
在 API 日渐流行的年代,越来越多的非技术人员也希望能从 API 的使用中获利,而创建一套成熟的 API 方案需要时间成本和金钱两方面的资源加持。在这个过程中,你需要考虑模型、设计、REST 原则等,而不仅仅是编写...

API7_技术团队2阅读 1k

使用kubeasz部署高可用kubernetes集群
本实验采用kubeasz作为kubernetes环境部署工具,它是一个基于二进制方式部署和利用ansible-playbook实现自动化来快速部署高可用kubernetes集群的工具,详细介绍请查看kubeasz官方。本实验用到的所有虚拟机默认软...

李朝阳4阅读 789

有了 NGINX 和 Kong,为什么还需要 Apache APISIX?
2021 年 5 月,云原生社区技术沙龙·广州站,API7.ai(支流科技)联合创始人 & CTO,Apache APISIX PMC 王院生在活动上做了《有了 NGINX 和 Kong,为什么还需要 Apache APISIX》的分享,以下是现场分享的文字版。...

API7_技术团队1阅读 4.2k

Apache APISIX 结合 Authing 实现集中式身份认证管理
Apache APISIX 是一个动态、实时、高性能的 API 网关,提供负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。Apache APISIX 不仅支持插件动态变更和热插拔,而且拥有众多实用的...

API7_技术团队1阅读 2.2k

API7.ai 是一家提供 API 处理和分析的开源基础软件公司,于 2019 年开源了新一代云原生 API 网关 -- API...

99 声望
36 粉丝
宣传栏