因为之前有用过nginx,httpd,还有各种的自己写tcp端口来处理服务的。所以当使用kong konga的时候就各种与之前的知识打架。
坑1:
我就是要在原机上装kong,konga
操作:首先官网文档走起,一步一步地按照文档操作。
结果:glibc要求2.28.
原来我在centos7上,以为在centos8上操作。本来有两台机,一个7,一个8.结果7在操作一大半,发现操作错了。
改回到8.很顺利地装好了kong.
坑2:
kong manger是什么东西,各种配端口。结果发现,毛用都没用。这个是kong manger管理界面。直接换成konga
坑3:
我要装mysql,看下官方文档,原来只支持postpres.毛线,花N多时间找资料,至于为什么想用mysql,因为想数据统一管理呗。
还有konga只支持postpres吧。
坑4:
我就是要在原机装konga.。。。。嗯嗯.各种源安装,数据库创建,git so easy.毛线,前端各种依赖跟不上。而且玩过前端的都知道装个npm -g 毛线的那个node_moudle占多十几G,以为我的机子是开发机吗?
直接玩docker
为毛之前不想玩docker,因为我没钱,买的配置很低,不想跑doceker呀。
坑5:
老实人跟着人家说的kong窗口走。下面我贴一下人家的容器命令
安装kong,按照官网的教程: docker pull kong/kong-gateway:2.4.1.0-alpine docker images docker tag <IMAGE_ID> kong-ee docker network create kong-ee-net
上面那个tag 要改成 镜像ID之外,没问题,还有这里这个网络很有用。它可以让几个容器之间可以访问
建数据库: docker run -d --name kong-ee-database --network=kong-ee-net -p 5432:5432 -e "POSTGRES_USER=kong" -e "POSTGRES_DB=kong" -e "POSTGRES_PASSWORD=kong" postgres:9.6
走起,没问题,这里有指明一个sql的镜像,如果没下载,它会自动给你下载来的。
导docker库数据: docker run --rm --network=kong-ee-net -e "KONG_DATABASE=postgres" -e "KONG_PG_HOST=kong-ee-database" -e "KONG_PG_PASSWORD=kong" -e "KONG_PASSWORD=kong" kong-ee kong migrations bootstrap
这个命令也没问题,就是弄一下数据库初始化
启动kong: docker run -d --name kong --network=kong-ee-net -e "KONG_DATABASE=postgres" -e "KONG_PG_HOST=kong-ee-database" -e "POSTGRES_DB=kong" -e "KONG_PG_USER=kong" -e "KONG_PG_PASSWORD=kong" -e "KONG_ADMIN_LISTEN=0.0.0.0:8001,0.0.0.0:8444 ssl" -p 8000:8000 -p 8001:8001 -p 8443:8443 -p 8444:8444 kong:latest
这里要说一下,这个kong:latest,因为上面已经把它改为kong-ee,所以要改,不过这里最大的坑是8000:8000,8443:8443
这里说明一下,因为这个kong本来就是要用来做代理的。所以它就是一个对外提供端口服务网关。8000,8443要改为80,443,这样才能对接外面的无端口域名,https无端口域名的访问。
坑6:
kong代理线路,upstreams里的名称,要跟service里的host一致。service里的protocol是指的目标服务器的协议,因为目标服务器可以是http和https,service里的端口就像是nginx里的listen,什么?你说为什么使用80端口,也能用https?配就是了。这个我也不懂,不过我就是用80
routes就像是nginx里的location,不过rotes里要配service alias就是域名映射,有点像nginx的域名解析。path就是要代理的路径。
https的配置,先在左边的证书栏目里添加证书。添加一个snis,这个snis要跟routes里的snis一致。好了。https配置成功。这里的https在上面一定要把容器的8443改为443. 致于路径的配置。service里的路径就像upstreams端口后面的路径。routes的路径就像是location代理的路径。所以如果走不通。先在nginx走一次看看能不能通。再把对应的参数在konga里修改