Rancher × Apache APISIX
Rancher 是一个开源的企业级多集群 Kubernetes 治理平台,实现了 Kubernetes 集群在混合云 + 本地数据中心的集中部署与治理,以确保集群的安全性,减速企业数字化转型。
本文将介绍如何在 Rancher 利用商店(Catalog)中装置和部署 Apache APISIX 和 Apache APISIX Ingress Controller,进而如何通过它们代理 Kubernetes 服务。
前置条件
将现有 Kubernetes 集群已纳入 Rancher 治理。
部署 Apache APISIX 和 Apache APISIX Ingress Controller
在 Rancher 的 Tools – Catalogs 页面能够进行利用商店(catalogs)的配置,咱们在这里增加 Apache APISIX 的 Helm 仓库:
https://github.com/apache/api…
保留实现后,即可抉择 Apps 页面进行 Apache APISIX 的部署了。抉择 Launch 便可看到 Apache APISIX 的仓库信息了。这里咱们间接抉择 apisix 即可。
接下来只须要在此页面中进行简略的配置即可。因为咱们想要同时部署 APISIX Ingress controller,所以在底部的 Answers 中填入 ingress-controller.enabled=true 这个配置项。保留即可实现部署。
稍等片刻即可实现部署。
部署示例我的项目
咱们应用 kennethreitz/httpbin 作为示例我的项目进行演示。这里也间接在 Rancher 中实现部署。
应用 Apache APISIX 作为网关代理
咱们先演示如何应用 Apache APISIX 作为网关代理 Kubernetes 集群中的服务。
root@apisix:~$ kubectl -n apisix exec -it `kubectl -n apisix get pods -l app.kubernetes.io/name=apisix -o name` -- bash
bash-5.1# curl httpbin.default/get
{"args": {},
"headers": {
"Accept": "*/*",
"Host": "httpbin.default",
"User-Agent": "curl/7.76.1"
},
"origin": "10.244.3.3",
"url": "http://httpbin.default/get"
}
能够看到在 Apache APISIX 的 Pod 内可失常拜访示例我的项目。接下来应用 Apache APISIX 对该示例我的项目进行代理。
这里咱们应用 curl 调用 Apache APISIX 的 admin 接口,创立一条路由。将所有 host 头为 httpbin.org 的申请转发给 httpbin.default:80 这个理论的应用服务上。
bash-5.1# curl "http://127.0.0.1:9180/apisix/admin/routes/1" -H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d '{"uri":"/*","host":"httpbin.org","upstream": {"type":"roundrobin","nodes": {"httpbin.default:80": 1}
}
}'/{"action":"set","node":{"value":{"uri":"\/*","create_time":1623834078,"update_time":1623834078,"priority":0,"upstream":{"type":"roundrobin","hash_on":"vars","pass_host":"pass","nodes":{"httpbin.default:80":1},"scheme":"http"},"id":"1","status":1,"host":"httpbin.org"},"key":"\/apisix\/routes\/1"}}
你会失去相似下面的输入,接下来验证是否代理胜利:
bash-5.1# curl http://127.0.0.1:9080/get -H "HOST: httpbin.org"
{"args": {},
"headers": {
"Accept": "*/*",
"Host": "httpbin.org",
"User-Agent": "curl/7.76.1",
"X-Forwarded-Host": "httpbin.org"
},
"origin": "127.0.0.1",
"url": "http://httpbin.org/get"
}
失去下面的输入,阐明曾经通过 Apache APISIX 代理了示例我的项目的流量。接下来咱们试试在集群外通过 Apache APISIX 拜访示例我的项目。
root@apisix:~$ kubectl -n apisix get svc -l app.kubernetes.io/name=apisixNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEapisix-admin ClusterIP 10.96.142.88 <none> 9180/TCP 51mapisix-gateway NodePort 10.96.158.192 <none> 80:32763/TCP 51m
在应用 Helm chart 部署的时候,默认会将 Apache APISIX 的端口通过 NodePort 的模式裸露进来。咱们应用 Node IP + NodePort 的端口进行拜访测试。
root@apisix:~$ curl http://172.18.0.2:32763/get -H "HOST: httpbin.org"
{"args": {},
"headers": {
"Accept": "*/*",
"Host": "httpbin.org",
"User-Agent": "curl/7.58.0",
"X-Forwarded-Host": "httpbin.org"
},
"origin": "10.244.3.1",
"url": "http://httpbin.org/get"
}
能够看到,在集群外曾经能够通过 Apache APISIX 作为网关代理 Kubernetes 集群内的服务了。
应用 Apache APISIX Ingress Controller 代理服务
咱们能够间接在 Rancher 中增加 Ingress,Apache APISIX Ingress controller 会主动将路由规定同步至 Apache APISIX 中,实现服务的代理。
留神右下角,咱们增加了 kubernetes.io/ingress.class: apisix 的 annotation 配置,用于反对集群内多 ingress-controller 的场景。
保留后,可看到如下界面:
在终端下测试是否代理胜利:
root@apisix:~$ curl http://172.18.0.2:32763/get -H "HOST: httpbin-ing.org"{"args": {},
"headers": {
"Accept": "*/*",
"Host": "httpbin-ing.org",
"User-Agent": "curl/7.58.0",
"X-Forwarded-Host": "httpbin-ing.org"
},
"origin": "10.244.3.1",
"url": "http://httpbin-ing.org/get"
}
能够看到也失常代理了。
除了以上形式外,Apache APISIX Ingress controller 通过 CRD 的形式对 Kubernetes 进行了扩大,你也能够通过公布 ApisixRoute 等这种自定义资源来实现 Kubernetes 中服务的对外裸露。
总结
你能够在 Rancher 中应用 Apache APISIX 的官网 Helm 仓库间接部署 Apache APISIX 和 APISIX Ingress controller。并且 Apache APISIX 可通过作为网关,或者 APISIX Ingress controller 的数据面来承载业务流量。
将来布局
Rancher 社区曾经与 Apache APISIX 达成单干,将来你能够间接在 Rancher 自带的利用商店中找到 Apache APISIX,不再须要手动增加 Helm 仓库了。
对于 Apache APISIX
Apache APISIX 是一个 动静、实时、高性能 的 API 网关,提供 负载平衡、动静上游、灰度公布、服务熔断、身份认证、可观测性 等丰盛的流量治理性能。
你能够应用 Apache APISIX 解决传统的南北向流量,以及服务间的东西向流量,也能够当做 Kubernetes Ingress Controller 来应用。Apache APISIX 不仅笼罩了 NGINX 的传统性能,在可观测性上也和 SkyWalking 深度单干,大大晋升了服务治理能力。
你能够应用 Apache APISIX 解决传统的南北向流量,以及服务间的东西向流量,也能够当做 Kubernetes Ingress Controller 来应用。Apache APISIX 不仅笼罩了 NGINX 的传统性能,在可观测性上也和 SkyWalking 深度单干,大大晋升了服务治理能力。
Apache APISIX 于 2019 年 4 月由深圳干流科技(api7.ai)创立,同年 6 月开源,10 月进入 Apache 孵化器,也是在这短短两年的工夫,APISIX 成为了 Apache 顶级我的项目。干流科技(api7.ai)对应的商业化产品名字叫 API7。
对于 Apache APISIX
Apache APISIX 是一个动静、实时、高性能的开源 API 网关,提供负载平衡、动静上游、灰度公布、服务熔断、身份认证、可观测性等丰盛的流量治理性能。Apache APISIX 能够帮忙企业疾速、平安的解决 API 和微服务流量,包含网关、Kubernetes Ingress 和服务网格等。
寰球已有数百家企业应用 Apache APISIX 解决要害业务流量,涵盖金融、互联网、制作、批发、运营商等等,比方美国航空航天局(NASA)、欧盟的数字工厂、中国航信、中国移动、腾讯、华为、微博、网易、贝壳找房、360、泰康、奈雪的茶等。
200 余位贡献者,一起缔造了 Apache APISIX 这个世界上最沉闷的开源网关我的项目。聪慧的开发者们!快来退出这个沉闷而多样化的社区,一起来给这个世界带来更多美妙的货色吧!
- Apache APISIX 我的项目地址:https://github.com/apache/apisix
- Apache APISIX 官网:http://apisix.apache.org/zh/