API网关市面上目前非常之多,本文讲解的是Kong,Kong 基于 Nginx,采用Lua 进行开发。为便于安装,这里主要使用 Docker完成安装。数据库 Kong 支持 PostgreSQL和 Cassandra(也支持无数据库安装),本文使用 PostgreSQL。
如未安装Docker,需先行安装 Docker:
1 2 3 4 5 6 7 8 9 10 |
# 国内会较慢:sudo curl -sSL https://get.docker.com/ | sh curl -sSL https://get.daocloud.io/docker | sh sudo systemctl start docker # 将当前用户加入到docker用户组中,配置后需退出方能生效 sudo usermod -aG docker $USER # 镜像加速: /etc/docker/daemon.json {"registry-mirrors":["https://hub-mirror.c.163.com/"]} # 重启生效 sudo systemctl daemon-reload sudo systemctl restart docker |
安装 PostgreSQL
1 2 3 4 5 6 7 |
docker run -d --name kong-db \ -p 5432:5432 \ -e "POSTGRES_USER=kong" \ -e "POSTGRES_DB=kong" \ -e "POSTGRES_PASSWORD=kong" \ -v /home/xxx/data/postgres:/var/lib/postgresql/data \ postgres:12 |
初始化数据库( 数据迁移)
1 2 3 4 5 6 7 |
docker run -it --rm \ --link kong-db:kong-db \ -e "KONG_DATABASE=postgres" \ -e "KONG_PG_HOST=kong-db" \ -e "KONG_PG_PASSWORD=kong" \ -e "KONG_CASSANDRA_CONTACT_POINTS=kong-db" \ kong:latest kong migrations bootstrap |
如不使用–link,也可通过指定network的方式:
1 2 3 4 5 |
docker network create kong-net docker... --network=kong-net ... |
注:Navicat 12的早期版本会出现无法显示数据表的问题,升级为更新版本或安装 Navicat 15可解决这一问题
安装 kong
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
docker run -d --name kong \ --link kong-db:kong-db \ -e "KONG_DATABASE=postgres" \ -e "KONG_PG_HOST=kong-db" \ -e "KONG_PG_USER=kong" \ -e "KONG_PG_PASSWORD=kong" \ -e "KONG_CASSANDRA_CONTACT_POINTS=kong-db" \ -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \ -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \ -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \ -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \ -e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \ -p 8000:8000 \ -p 8443:8443 \ -p 8001:8001 \ -p 8444:8444 \ kong:latest |
修改配置后
1 |
docker exec -it kong kong reload |
本地进行配置文件的修改可提前准备好配置文件,或通过 docker 拷贝出配置文件之后重新添加-v /home/xxx/kong:/etc/kong参数进行启动
1 |
docker cp kong:/etc/kong ~/ |
本地安装,以 CentOS 7为例
1 2 3 4 |
sudo yum -y install https://bintray.com/kong/kong-rpm/download_file?file_path=centos/7/kong-2.4.0.el7.amd64.rpm # 配置文件位置/etc/kong/kong.conf # kong migrations boostrap up -c /etc/kong/kong.conf kong start -c /etc/kong/kong.conf |
配置参数
1 2 3 4 5 6 7 8 9 10 11 12 13 |
sudo cp kong/kong.conf.default kong/kong.conf # kong.conf database = postgres pg_host = 172.17.0.1 # docker网关 pg_port = 5432 pg_timeout = 5000 pg_user = kong pg_password = kong pg_database = kong #其它可能需要的配置 dns_resolver = # 配置 consul 等时使用 admin_listen = # 0.0.0.0供外网访问 proxy_listen = |
验证安装,访问http://192.168.xxx.xxx:8001/(Kong Admin建议只在内网开放),通常允许用户访问的默认为8000/8443端口
安装图形化界面
对于初学者而言,直接使用 Kong 会存在一定的门槛,因此可以借助于图形化工具 Konga,安装非常之简单:
1 |
docker run -d -p 1337:1337 --name konga pantsel/konga |
借助于 Konga 我们就可以更便捷的管理服务、路由,进行插件的添加等操作。