本次安装使用的是PostgreSQL,本次安装分为docker安装和docker-compose安装.
1.docker安装
server | version |
postgres | v13 |
kong/kong-gateway | v3.5.0.2 |
1.1准备数据库
创建自定义Docker网络以允许容器发现彼此并进行通信
docker network create kong-net
网络命名可以自定义
启动postgres容器
docker run -d --name kong-database \
--network=kong-net \
-p 5432:5432 \
-e "POSTGRES_USER=kong" \
-e "POSTGRES_DB=kong" \
-e "POSTGRES_PASSWORD=kongpass" \
postgres:13
#POSTGRES_USER和POSTGRES_DB:将这些值设置为kong。这是 Kong Gateway 期望的默认值
#POSTGRES_PASSWORD:设置数据库密码为任意字符串。
准备kong数据库
docker run --rm --network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_PG_PASSWORD=kongpass" \
-e "KONG_PASSWORD=test" \
kong/kong-gateway:3.5.0.2 kong migrations bootstrap
#KONG_DATABASE:指定Kong正在使用的数据库类型。
#KONG_PG_HOSTkong-net:上一步中通过网络通信的 Postgres Docker 容器的名称 。
#KONG_PG_PASSWORD:您在上一步中启动 Postgres 容器时设置的密码。
#KONG_PASSWORD(仅限企业):Kong Gateway 管理员超级用户的默认密码。
#{IMAGE-NAME:TAG} kong migrations bootstrap:按顺序,这是 Kong 网关容器名称和标签,后面是 Kong 准备 Postgres 数据库的命令。
1.2 启动kong网关
提示: 默认会覆盖admin_listen设置以侦听来自任何来源的请求,切记不要直接暴露到互联网中,如果需要admin_listen公开到互联网可以通过身份验证确保安全
docker run -d --name kong-gateway \
--network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_PG_USER=kong" \
-e "KONG_PG_PASSWORD=kongpass" \
-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" \
-e "KONG_ADMIN_GUI_URL=http://localhost:8002" \
-e KONG_LICENSE_DATA \
-p 8000:8000 \
-p 8443:8443 \
-p 8001:8001 \
-p 8444:8444 \
-p 8002:8002 \
-p 8445:8445 \
-p 8003:8003 \
-p 8004:8004 \
kong/kong-gateway:3.5.0.2
#--name和--network:要创建的容器的名称及其通信的 Docker 网络。
#KONG_DATABASE:指定Kong正在使用的数据库类型。
#KONG_PG_HOST:通过网络进行通信的 Postgres Docker 容器的名称 kong-net。
#KONG_PG_USER和KONG_PG_PASSWORD:Postgres 用户名和密码。Kong Gateway 需要登录信息来将配置数据存储在KONG_PG_HOST数据库中。
#所有_LOG 参数:设置日志输出的文件路径,或使用示例中的值将消息和错误打印到stdout和stderr。
#KONG_ADMIN_LISTEN:Kong Admin API 侦听请求的端口。
#KONG_ADMIN_GUI_URL:访问 Kong Manager 的 URL,前面带有协议(例如http://)。
#KONG_LICENSE_DATA:(仅限企业)如果您有许可证文件并将其保存为环境变量,则此参数将从您的环境中提取许可证。
1.3 验证
curl -i -X GET --url http://localhost:8001/services
会收到一个200的状态吗
http://localhost:8002