Skip to main content

Apache APISIX Ingress Controller 首个 GA 版本 v1.0 正式发布!

· One min read

Apache APISIX Ingress Controller v1.0 正式发布,可支持使用包括 ApisixRouteApisixUpstream 等自定义资源,以及 Kubernetes 原生 Ingress 资源等控制外部流量访问部署在 Kubernetes 中的服务。

关于 Apache APISIX Ingress Controller#

Apache APISIX Ingress Controller 是一个使用 Apache APISIX 作为数据面承载流量的云原生 Ingress Controller 实现,采用 CRD 的方式对 Kubernetes 进行了扩展。

可支持使用包括 ApisixRoute、ApisixUpstream 等自定义资源,以及 Kubernetes 原生 Ingress 资源等控制外部流量访问部署在 Kubernetes 中的服务。

整体架构如下:

Apache APISIX Ingress Controller 架构图

v1.0 最新特性#

增加 ApisixConsumer 自定义资源使配置认证更方便#

在之前的版本中,如果想要配置 keyAuth 或者 basicAuth 需要手动去调用 Apache APISIX 的 admin api 创建 consumer 配置。

在 v1.0 版本中,我们增加了 ApisixConsumer 资源,用户可以使用更原生的方式来定义 consumer 资源及为 ApisixRoute 配置认证。

例如通过以下配置定义一个 keyAuth 资源:

apiVersion: apisix.apache.org/v2alpha1kind: ApisixConsumermetadata:  name: keyauthspec:  authParameter:    keyAuth:      value:        key: API

在 ApisixRoute 中只需要增加对应类型的 authentication 配置即可。

apiVersion: apisix.apache.org/v2alpha1kind: ApisixRoutemetadata:  name: httpbin-routespec:  http:   ...   authentication:     enable: true     type: keyAuth

为 ApisixTls 增加 mTLS 支持#

在 v1.0 版本中我们也为 ApisixTls 自定义资源增加了 mTLS 的支持,只需要在 ApisixTls 资源的配置中增加 client 配置即可,例如:

apiVersion: apisix.apache.org/v1kind: ApisixTlsmetadata:  name: sample-tlsspec:  ...  client:    caSecret:      name: client-ca-secret      namespace: default

为原生 Ingress 资源增加了更多 annotation 来丰富其功能#

  • k8s.apisix.apache.org/blocklist-source-range 可对来源 IP 进行限制;
  • k8s.apisix.apache.org/rewrite-targetk8s.apisix.apache.org/rewrite-target-regex 可进行 target 的 rewrite 操作;
  • k8s.apisix.apache.org/http-to-https 可进行 HTTP 到 HTTPS 的强制重定向;

更多特性变更请参考项目 CHANGELOG

为什么使用 APISIX Ingress Controller#

Apache APISIX Ingress Controller 使用 Apache APISIX 作为其数据面承载业务流量,所以其从 Apache APISIX 继承了如下优势:

  • 高性能 & 稳定性:Apache APISIX 是一款云原生高性能动态 API 网关,已在众多企业大规模流量场景下使用,其性能及稳定性久经考验。
  • 生态丰富:Apache APISIX 是当前最活跃的开源网关项目,作为 Apache 顶级项目,无论是社区活跃度还是其插件生态都非常丰富,可满足用户的多种使用场景和需求;

此外,由于 APISIX Ingress Controller 还具备如下独有的优势:

  • 兼容性好:支持多个 Ingress 资源版本,在不同的 Kubernetes 版本中均可正常工作;
  • 动态更新:无论是 Ingress 资源或是证书等配置的更新,均已实现热加载,无需 reload,保障业务平稳运行;
  • 扩容灵活:由于 APISIX Ingress Controller 采用控制面和数据面分离的架构,所以在扩容时,可以单独扩容 Apache APISIX 这个数据面集群,而无须对 Apache APISIX Ingress Controller 进行扩容;
  • 运维友好:在当前架构下,用户可按实际情况选择将数据面 Apache APISIX 集群部署在 Kubernetes 集群中,或是部署在物理机环境。且 Apache APISIX Ingress Controller 故障不会对业务流量造成任何影响。