当前位置: 代码迷 >> 综合 >> Go 开源说第六期:基于Apache APISIX构建的Kubernetes Ingress
  详细解决方案

Go 开源说第六期:基于Apache APISIX构建的Kubernetes Ingress

热度:71   发布时间:2023-12-06 01:26:49.0

点击蓝字

关注我们

本文由“GO开源说”第六期 《基于Apache APISIX构建的Kubernetes Ingress》直播内容修改整理而成,视频内容较长,本文内容有所删减和重构。

1.什么是 Kubernetes Ingress

Kubernetes Ingress 是?个标准,Kubernetes 为了能够让外部请求访问到 Kubernetes 集群内部,并且?便集中管理??流量,因此有了 Ingress 的概念。我们可以把 Ingress 简单的理解为Kubernetes 集群的???关,Ingress 可以提供 Load Balancer、SSL termination 等能?。

如图所示,Ingress 负责接收 Kubernetes 集群边缘??流量。Ingress 的实现?般包含两个部分,?个是与 Kubernetes 打交道的 Ingress Controller ,属于控制?( Controller Plane),另?部分是?关,?于反向代理,属于数据?(Data Plane)。APISIX Ingress 就是基于 Apache APISIX (DP),加上 APISIX Ingress Controller (CP),为 Kubernetes 提供了?种全新的 Ingress 选择。

2.APISIX Ingress Controller

特性Apache APISIX Ingress 监听 Kubernetes 集群资源的变化,并且将这些资源转换为内部结构,与历史资源对?,并且将增量变化同步到 APISIX ?关。监听的资源包括 Secret、Endpoints、Ingress 等原?资源,同时也包括 ApisixRoute、ApisixUpstream、ApisixTls 等?定义资源。详细结构如下图。

Apache APISIX 作为云原?、?性能 API ?关,有很多令?兴奋的特性,APISIX Ingress Controller 将 APISIX 的特性通过 声明式配置 逐步暴露出来,?前?持的主要特性如下:

  • 全动态:路由、SSL 证书、上游、插件…

  • ?持 Custom Resource Defifinitions,更容易理解的声明式配置

  • ?持 原? ingress 配置 (v1 / v1beta1 )

  • 服务?动注册,?惧服务伸缩

  • 得益于 pod IP 的更有灵活的负载均衡策略

  • 健康检查开箱即?

  • ?持?级路由匹配规则

  • ?持流量切分 (业务流量管控、灰度升级必不可少)

  • ?持 Apache APISIX 官?40 多个插件 & 客户?定义插件

  • APISIX Ingress Controller ?身?可?

全动态配置、更容易理解的声明式配置、服务注册、负载均衡、?持流量管理 是 Ingress 的常?特性。

为了?便使? Nginx Ingress 的?户,也兼容 Kubernetes 原? Ingress Resource 配置。Apache APISIX Ingress 继承了 APISIX 的扩展能?,默认?持了 40 多个官?插件。同时?持?户?定义插件的声明式配置?式,所要做的仅仅是在 声明式配置中,按照插件的 schema 定义即可。(会有使?示例)

与 Kubernetes Nginx Ingress 相?,我们有哪些优势

  • 全动态配置

    Apache APISIX 的动态配置特性,避免了因为 nginx reload 对系统造成的影响

  • 更易?的声明式配置

    避免在复杂场景下使? annotation 定义代码?段,出现难以维护的情况

  • ??易?的扩展能?

    得益于 APISIX ?便的 插件 扩展能?,APISIX Ingress 可以抽象出适合??业务场景的逻辑,定义出可以复?的插件

  • 活跃的社区是?起的基础

使?示例

ApisixRoute 资源定义示例

主体路由分为两个部分,?个是 spec.http.match,另?个是 backends。

spec.http.match:

  • 定义路由规则,可以指定 host / URI / method 等基础规则,

  • 同时还?持?定义表达式 exprs,你可以指定 headers / querystring / cookies 等作为匹配规则。示例中的 expr 就是?个 匹配 chrome 请求的规则。

spec.http.backends:

  • 满?匹配条件 match 的流量,将指派给指定的后端服务集合

  • ?持权重配置

关于插件扩展配置,采? spec.http.plugins:

  • 定义插件集合

  • 通过 enable 快速启? 或者 弃?

  • 通过 confifig 配置插件,confifig 的配置依据是 Apache APISIX 插件的 schema 定义。以示例中的 proxy-rewrite 插件为例,配置?档参考:https://github.com/apache/apisix/blob/master/docs/en/latest/plugins/proxy-rewrite.md#attributes。

安装部署

使? helm 安装

$ helm repo add apisix https://charts.apiseven.com
$ helm search repo apisix
$ helm repo update
$ helm install my-ingress apisix/apisix-ingress-controller

如果对 helm chart 的配置感兴趣,这是 helm chart 的仓库地址:https://github.com/apache/apisix-helm-chart

?持各?平台安装

案例介绍

思必驰是?家语? AI 公司,专注智能硬件的语?交互,打造实?、有趣的?机交互体验,涉及 “智能?载”,“智能家居”,“智能机器?” 等多个领域。案例中展示了?个使? APISIX Ingress 跨集群的部署?式。

继续发?的?向

Apache apisix-ingress-controller 将继续在易?性上做持续探索,并且逐步暴露更多的 APISIX 特性给?家使?。另外,Apache apisix-ingress-controller ?前属于 Apache 孵化项?,期待今年能够毕业,欢迎?家参与。

往期回顾

Go 开源说第七期:Harbor助你玩转云原生

Go 开源说第五期:MOSN Go语言网络代理软件

Go 开源说第四期(下):go-zero缓存管理最佳实践

  相关解决方案