在CentOS8部署基于Docker的Kong与KongA

本文详细记录了解决CentOS8中使用Docker部署Kong和Konga时遇到的防火墙、安全设置及容器间通信问题,提供了一步步的部署教程和关键配置调整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于实际情况不同,使用官网的安装方法几乎无法顺利部署。其实里面涉及了一些小技巧,也就是这里面的坑,官网没有相关的介绍。

经过近一个月断断续续的摸索,终于解决了这些坑,从而得以顺利部署。这些坑包括防火墙、安全linux、Docker容器之间的通信,Docker容器与主机之间的通信等。

本文在一台新安装的CentOS8最小化安装的系统上,依照此步骤可以顺利安装成功。

kong官网安装指南

https://docs.konghq.com/install/docker/

安装Docker

#这不要安装docker,而是要安装docker-ce

  1. https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.13-3.2.fc30.x86_64.rpm
  2. https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/docker-ce-cli-19.03.12-3.fc30.x86_64.rpm
  3. https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/docker-ce-19.03.12-3.fc30.x86_64.rpm

下载完毕后,上载到root根目录,然后执行如下命令:

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

下载docker镜像

#数据库,这里必须选9.6,高版本会出现问题
docker pull postgres:9.6
#kong
docker pull kong
#konga
docker pull pantsel/konga

启动postgres数据库

#创建docker网络

docker network create kong-net

设置防火墙策略
这里的接口,除了真实的网卡外,把与docker相关的虚拟网卡全部加入到trusted区域

firewall-cmd --permanent  --zone=public --remove-interface=docker0
firewall-cmd --permanent  --zone=trusted --add-interface=docker0

firewall-cmd --permanent  --zone=public --remove-interface=br-d6e58b2f715a
firewall-cmd --permanent  --zone=trusted --add-interface=br-d6e58b2f715a

firewall-cmd --reload

创建数据库专用卷

docker volume create kong-volume

启动postgres,这里这是数据库随docker启动,这里必须选9.6,高版本会出现问题,注意添加“–restart=always”这一句,让容器随docker的启动而启动。

docker run -d --name kong-database \
	--network=kong-net \
	-p 5432:5432 \
	-v kong-volume:/var/lib/postgresql/data \
	-e "POSTGRES_USER=kong" \
	-e "POSTGRES_DB=kong" \
	-e "POSTGRES_PASSWORD=kong" \
	--restart=always \
	postgres:9.6

启动kong

为kong创建数据表
如果按照官方配置,则会出现一些莫名其妙的问题,如:
Error: [PostgreSQL error] failed to retrieve PostgreSQL server_version_num: timeout
Error: [PostgreSQL error] failed to retrieve server_version_num: temporary failure in name resolution

解决方法:先暂停防火墙,暂停安全linux,更改KONG_PG_HOST

systemctl stop  firewalld
setenforce 0   

再先查看本机IP地址,将KONG_PG_HOST修改为本机的docker0的IP地址(注意:不是127.0.0.1)

docker run --rm \
     --network=kong-net \
     -e "KONG_DATABASE=postgres" \
     -e "KONG_PG_HOST=172.17.0.1" \
     -e "KONG_PG_USER=kong" \
     -e "KONG_PG_PASSWORD=kong" \
     -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
     kong kong migrations bootstrap

启动kong,不加-d参数的话,kong容器将在前台运行,会输出运行中的系统信息。在生产环境中,加上-d参数,让其在后台运行,无需运行的系统信息。

注意:在启动kong之前,需要启动防火墙,kong会对防火墙做一些配置。

systemctl start  firewalld

启动kong容器

docker run -d --name kong \
     --network=kong-net \
     -e "KONG_DATABASE=postgres" \
     -e "KONG_PG_HOST=kong-database" \
     -e "KONG_PG_USER=kong" \
     -e "KONG_PG_PASSWORD=kong" \
     -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
     -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 80:8000 \
     -p 443:8443 \
     -p 127.0.0.1:8001:8001 \
     -p 127.0.0.1:8444:8444 \
     --restart=always \
     kong

启动konga

首先,同样先关闭防火墙,再启动容器

systemctl  stop firewalld   

创建数据表,将KONG_PG_HOST修改为本机的IP地址(注意:不是127.0.0.1)。

docker run --rm pantsel/konga \
             -c prepare \
             -a postgres \
             -u postgresql://kong:kong@172.17.0.1:5432/konga

接下来,需要启动防火墙,konga会对防火墙做一些配置

systemctl  start firewalld

启动konga

docker run -d --name konga \
             -p 0.0.0.0:1337:1337 \
             --network=kong-net \
             -e "TOKEN_SECRET=kong" \
             -e "DB_ADAPTER=postgres" \
             -e "DB_HOST=kong-database" \
             -e "DB_PORT=5432" \
             -e "DB_USER=kong" \
             -e "DB_PASSWORD=kong" \
             -e "DB_DATABASE=konga" \
             -e "NODE_ENV=production" \
             --restart=always \
             pantsel/konga
         

konga配置

#打开浏览器,访问本机的1337端口:

http://192.168.250.246:1337/

首先注册一个管理员账号。注册完毕后,使用管理员账号登录,创建一个连接(Connections),名称可以随便取一个,Kong Admin URL,填写:

http://kong:8001/    

测试各项功能是否能够正常使用。

检查

测试完毕之后,务必重新启动服务器,重新之后检查所有服务是否正常启动。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵庆明老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值