https://docs.konghq.com/enterprise/2.6.x/deployment/installation/centos/kong安装包:
#这里不要选企业版,企业版用不了。 https://download.konghq.com/gateway-2.x-centos-8/Packages/k/ https://download.konghq.com/gateway-2.x-centos-8/Packages/k/kong-2.6.0.el8.amd64.rpm https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
将文件上载到root目录
安装kong程序yum install -y ./kong-2.6.0.el8.amd64.rpm安装postgresql数据库
#yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm yum install -y postgresql yum install -y postgresql-server /usr/bin/postgresql-setup --initdb systemctl enable postgresql systemctl start postgresql配置postgresql数据库
sudo -i -u postgres psql CREATE USER kong; CREATE DATAbase kong OWNER kong; ALTER USER kong WITH password 'kong'; q exit修改postgresql数据库允许的登录方式
vi /var/lib/pgsql/data/pg_hba.conf #IPv4 local connections: host all all 127.0.0.1/32 md5重启postgresql数据库
systemctl restart postgresql修改kong连接数据库的配置
cp /etc/kong/kong.conf.default /etc/kong/kong.conf vi /etc/kong/kong.conf pg_user = kong # Postgres user. pg_password =kong # Postgres user's password. pg_database = kong # The database name to connect to.执行KONG配置
/usr/local/bin/kong migrations bootstrap -c /etc/kong/kong.conf #systemctl 不起作用 #systemctl enable kong #systemctl start kong vi /etc/rc.d/rc.local /usr/local/bin/kong start测试
curl -i -X GET --url http://localhost:8001/services curl -i -X GET --url http://localhost:8000临时关闭防火墙(慎重,防止被黑)
systemctl stop firewalld临时关闭seLinux(慎重,防止被黑)
setenforce 0管理网络配置(慎重,防止被黑)
vi /etc/kong/kong.conf admin_listen = 0.0.0.0:8001, 0.0.0.0:8444 ssl, 127.0.0.1:8001, 127.0.0.1:8444 ssl #重启 kong restart安装konga
如果一步步安装konga的话,里面有无数的坑需要解决。最简单的办法是直接使用docker。
#安装docker-ce 这不要安装docker,而是要安装docker-ce https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.13-3.2.fc30.x86_64.rpm https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/docker-ce-cli-19.03.12-3.fc30.x86_64.rpm https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/docker-ce-19.03.12-3.fc30.x86_64.rpm yum install -y ./containerd.io-1.2.13-3.2.fc30.x86_64.rpm yum install -y ./docker-ce-cli-19.03.12-3.fc30.x86_64.rpm yum install -y ./docker-ce-19.03.12-3.fc30.x86_64.rpm systemctl enable docker systemctl start docker #下载konga docker pull pantsel/konga #启动 konga docker run -p 1337:1337 --name konga -e "NODE_ENV=production" -e "TOKEN_SECRET=kong" pantsel/konga #docker容器自动启动 docker update konga --restart=always测试konga
在浏览器中打开 http://x.x.x.x:1337/
先注册一个管理员账号,记录下来。
使用管理员账号登录系统。
在“Welcome!”中选“DEFAULT”,“name”填“KongA”,在“Kong Admin URL ”中填写“http://x.x.x.x:8001”(kong服务器的IP地址,不可以填127.0.0.1,因为konga与kong分别在“两”个系统中)。
到这里,kong和konga都已配置好,且能正常运行,但是任何人都可以访问http://x.x.x.x:8001/来对kong服务器执行管理操作,这里就带来一个巨大的安全问题。如何阻止其它人的访问呢?其实,这里就需要用到kong的内置功能了。
运行了docker之后,系统会自动创建一个网卡做桥接。比如我的网卡,就多出了“3: docker0:”,且IP是“172.17.0.1”。
ip a 1: lo:mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens192: mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:50:56:b6:34:15 brd ff:ff:ff:ff:ff:ff inet 192.168.250.246/20 brd 192.168.255.255 scope global noprefixroute ens192 valid_lft forever preferred_lft forever 3: docker0: mtu 1500 qdisc noqueue state UP group default link/ether 02:42:a9:46:d1:52 brd ff:ff:ff:ff:ff:ff inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0 valid_lft forever preferred_lft forever inet6 fe80::42:a9ff:fe46:d152/64 scope link valid_lft forever preferred_lft forever
此网卡为虚拟网卡,仅仅用于本服务器与docker中的系统进行通信,外部网络无法访问。因此,我们可以使用“172.17.0.1”这个IP对kong进行管理。
#测试 curl http://172.17.0.1:8001 #正常!配置konga管理连接
打开konga,点击“Connections ”,点击“NEW CONNECTION”,在"DEFAULT"中“name”填“KongA Admin”,在“Kong Admin URL ”中填写“http://10.88.0.1:8001”,点击“Create CONNECTION” 。
然后对“http://172.17.0.1:8001”点击“Active”。
确保,Active之后,左边菜单数量没有减少。
删除最初的连接配置“KongA”。
vi /etc/kong/kong.conf admin_listen = 172.17.0.1:8001, 172.17.0.1:8444 ssl, 127.0.0.1:8001, 127.0.0.1:8444 ssl proxy_listen = 0.0.0.0:80 reuseport backlog=16384, 0.0.0.0:443 http2 ssl reuseport backlog=16384 #重启 kong restart
这样配置之后,本机和docker容器可以访问8001、8444管理端口,因此这样就简单地阻止了外部网络访问该端口。如果需要管理服务器,则可以在系统中通过命令行,或者直接通过konga进行管理。
外部访问80、443端口即可。
systemctl start firewalld firewall-cmd --add-port=80/tcp --permanent firewall-cmd --add-port=443/tcp --permanent #将docker0接口设置到信任区域 firewall-cmd --zone=trusted --add-interface=docker0 --permanent



