Apache APISIX Ingress Controller v1.0 正式发布,可支持使用包括
ApisixRoute
、ApisixUpstream
等自定义资源,以及 Kubernetes 原生 Ingress 资源等控制外部流量访问部署在 Kubernetes 中的服务。
#
关于 Apache APISIX Ingress ControllerApache APISIX Ingress Controller 是一个使用 Apache APISIX 作为数据面承载流量的云原生 Ingress Controller 实现,采用 CRD 的方式对 Kubernetes 进行了扩展。
可支持使用包括 ApisixRoute、ApisixUpstream 等自定义资源,以及 Kubernetes 原生 Ingress 资源等控制外部流量访问部署在 Kubernetes 中的服务。
整体架构如下:
#
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-target
和k8s.apisix.apache.org/rewrite-target-regex
可进行 target 的 rewrite 操作;k8s.apisix.apache.org/http-to-https
可进行 HTTP 到 HTTPS 的强制重定向;
更多特性变更请参考项目 CHANGELOG 。
#
为什么使用 APISIX Ingress ControllerApache 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 故障不会对业务流量造成任何影响。