写点什么

Kong-To-APISIX:减轻你的迁移压力

发布于: 3 小时前
Kong-To-APISIX:减轻你的迁移压力

本文作者吴舒旸,Apache APISIX committer,API7 开发工程师。目前主要负责混沌工程在 APISIX 上的实践。通过阅读本文,您将了解如何使用我们新推出的迁移工具,进行 Kong 到 Apache APISIX 到一键平滑迁移。


Apache APISIX 是一个生产可用的开源七层全流量处理平台,可作为 API 网关处理业务入口流量,具有极高性能、超低延迟,官方支持 dashboard 以及超过五十种插件。如果你正在使用 Kong,对 APISIX 感兴趣又苦于难以上手,不妨试试我们刚开源的迁移工具 Kong-To-APISIX,助你一键平滑迁移。

项目功能

Kong-To-APISIX 利用 Kong 和 APISIX 的声明式配置文件实现了配置数据的迁移,并根据两侧架构和功能的不同做出相应适配。目前我们支持了 Kong 一侧 Route、Service、Upstream、Target,Consumer 以及三个插件 Rate Limiting、Proxy Caching 以及 Key Authentication 的配置迁移,并以 Kong 的 Getting Started Guide 为例,完成了一个最小的 demo。

使用方法

  1. 使用 Deck 导出 Kong 声明式配置文件


具体步骤参照:docs.konghq.com/deck/1.7.x/guides/backup-restore


  1. 下载仓库并运行迁移工具,迁移工具会生成声明式配置文件 apisix.yaml 待使用


$ git clone https://github.com/api7/kong-to-apisix
$ cd kong-to-apisix
$ make build
$ ./bin/kong-to-apisix migrate --input kong.yaml --output apisix.yaml
migrate succeed
复制代码


  1. 使用 apisix.yaml配置 APISIX, 具体步骤参照 https://apisix.apache.org/docs/apisix/stand-alone。

Demo 测试

  1. 确保 docker 正常运行,部署测试环境,使用 docker-compose 拉起 APISIX、Kong


git clone https://github.com/apache/apisix-dockercd kong-to-apisix./tools/setup.sh
复制代码


  1. 根据 Kong 的 Getting Started Guide,为 Kong 添加配置并进行测试:a. 通过 Service 和 Route 暴露服务,进行路由转发 b. 设置 Rate Limiting 和 Proxy Caching 插件做限流缓存 c. 设置 Key Authentication 插件做认证 d. 通过 Upstream 和 Target 设置负载均衡


./examples/kong-example.sh
复制代码


  1. 导出 Kong 的声明式配置文件到 kong.yaml


go run ./cmd/dumpkong/main.go
复制代码


  1. 运行迁移工具,导入 kong.yaml 并生成 APISIX 配置文件 apisix.yaml 至 docker volumes


export EXPORT_PATH=./repos/apisix-docker/example/apisix_conf
go run ./cmd/kong-to-apisix/main.go
复制代码


  1. 在 APISIX 一侧测试迁移过后的路由、负载均衡、插件等是否正常运行

  2. a. 测试 key auth 插件


curl -k -i -m 20 -o /dev/null -s -w %{http_code} http://127.0.0.1:9080/mock# output: 401
复制代码


​b. 测试 proxy cache 插件


# access for the first timecurl -k -I -s  -o /dev/null http://127.0.0.1:9080/mock -H "apikey: apikey" -H "Host: mockbin.org"# see if got cachedcurl -I -s -X GET http://127.0.0.1:9080/mock -H "apikey: apikey" -H "Host: mockbin.org"# output:#   HTTP/1.1 200 OK#   ...#   Apisix-Cache-Status: HIT
复制代码


​c. 测试 limit count 插件


for i in {1..5}; do    curl -s -o /dev/null -X GET http://127.0.0.1:9080/mock -H "apikey: apikey" -H "Host: mockbin.org"donecurl -k -i -m 20 -o /dev/null -s -w %{http_code} http://127.0.0.1:9080/mock -H "apikey: apikey" -H "Host: mockbin.org"# output: 429
复制代码


​d. 测试负载均衡


httpbin_num=0mockbin_num=0for i in {1..8}; do    body=$(curl -k -i -s http://127.0.0.1:9080/mock -H "apikey: apikey" -H "Host: mockbin.org")    if [[ $body == *"httpbin"* ]]; then        httpbin_num=$((httpbin_num+1))    elif [[ $body == *"mockbin"* ]]; then        mockbin_num=$((mockbin_num+1))    fi    sleep 1.5doneecho "httpbin number: "${httpbin_num}", mockbin number: "${mockbin_num}# output:#   httpbin number: 6, mockbin number: 2
复制代码

总结

迁移工具的后续开发计划已在 Kong-To-APISIX 的 GitHub 仓库的 Roadmap 中呈现,欢迎大家访问 Kong-To-APISIX 的 GitHub 仓库地址:https://github.com/api7/kong-to-apisix ,测试与使用 Kong-To-APISIX。欢迎任何对这个项目感兴趣的人一同来为这个项目作贡献!有任何问题都可以在仓库的 Issues 区讨论。

关于 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 官网:https://apisix.apache.org/

  • Apache APISIX 项目文档:https://apisix.apache.org/zh/docs/apisix/getting-started


用户头像

Github:https://github.com/apache/apisix 2021.06.02 加入

Apache APISIX 是一个云原生、高性能、可扩展的微服务 API 网关。它是基于 OpenResty 和 etcd 来实现,和传统 API 网关相比,Apache APISIX 具备动态路由和插件热加载,特别适合微服务体系下的 API 管理。

评论

发布
暂无评论
Kong-To-APISIX:减轻你的迁移压力