使用admin api添加kong配置信息
1、环境说明:
我的ip为:192.168.1.6
两个服务端口为:9980和9981
两个服务地址为:
http://192.168.1.6:9980
http://192.168.1.6:9981
数据库使用:postgresql
2、分别安装与配置:konga和kong
网上有相关资料,不在叙述。
3、初始使用konga,需要创建账号。使用注册的账号登录后,配置kong管理服务的地址:
192.168.1.6:8001
4、使用admin api进行配置操作:
创建upstream和target:
curl -X POST http://localhost:8001/upstreams/ --data "name=tox-product-upstream"
curl -X POST HTTP://127.0.0.1:8001/upstreams/tox-product-upstream/targets --data "target=192.168.1.6:9980" --data "weight=100"
curl -X POST HTTP://127.0.0.1:8001/upstreams/tox-product-upstream/targets --data "target=192.168.1.6:9981" --data "weight=101"
创建service:
curl -X POST http://localhost:8001/services --data "name=tox-prod" --data "host=tox-product-upstream" --data "path=/"
创建route:
curl -X POST http://localhost:8001/services/tox-prod/routes --data "name=tox-prod-route" --data "paths=/api"
5、验证结果:
http://192.168.1.6:9980/api
6、附件:docker-compose脚本如下:
version: '3.8'
# 自定义网络(隔离 Kong 相关服务)
networks:
kong-net:
driver: bridge
# 数据卷(持久化数据库数据)
volumes:
kong-data: # Kong 配置数据(PostgreSQL)
konga-data: # Konga 管理界面数据(可选)
services:
# 1. 创建两个PostgreSQL数据库:kong和konga
kong-db:
image: postgres:18-alpine
container_name: kong-db
restart: unless-stopped
networks:
- kong-net
volumes:
- kong-data:/var/lib/postgresql/data
# 可选:挂载自定义配置文件(如果 Dockerfile 未包含,可直接在这里挂载)
#- ./kong-db/conf/postgresql.conf:/etc/postgresql/postgresql.conf
#- ./kong-db/conf/pg_hba.conf:/etc/postgresql/pg_hba.conf
environment:
- POSTGRES_USER=kong
- POSTGRES_PASSWORD=123456
- POSTGRES_DB=kong
- TZ=Asia/Shanghai # 时区(与 Dockerfile 配置保持一致或覆盖)
ports:
- "5432:5432" # 宿主机 5432 端口映射到容器内 PostgreSQL 端口
healthcheck:
# test: ["CMD-SHELL", "pg_isready -U kong -d tox"]
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
interval: 10s
timeout: 5s
retries: 5
konga-db:
image: postgres:9.6
container_name: konga-db
restart: unless-stopped
networks:
- kong-net
volumes:
- konga-data:/var/lib/postgresql/data
# 可选:挂载自定义配置文件(如果 Dockerfile 未包含,可直接在这里挂载)
- ./konga-db/conf/postgresql.conf:/etc/postgresql/postgresql.conf
- ./konga-db/conf/pg_hba.conf:/etc/postgresql/pg_hba.conf
environment:
- POSTGRES_USER=konga
- POSTGRES_PASSWORD=123456
- POSTGRES_DB=konga
- TZ=Asia/Shanghai # 时区(与 Dockerfile 配置保持一致或覆盖)
ports:
- "5433:5432" # 宿主机 5432 端口映射到容器内 PostgreSQL 端口
healthcheck:
# test: ["CMD-SHELL", "pg_isready -U kong -d tox"]
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
interval: 10s
timeout: 5s
retries: 5
# 2. kong数据库初始化(首次启动时执行,创建表结构)
kong-migrations:
image: '${GW_IMAGE:-kong/kong-gateway:3.12.0.0}' # 使用与 Kong 服务一致的版本
container_name: kong-migrations
networks:
- kong-net
depends_on:
kong-db:
condition: service_healthy
environment:
- KONG_DATABASE=postgres
- KONG_PG_HOST=kong-db
- KONG_PG_USER=kong
- KONG_PG_PASSWORD=123456
- KONG_PG_DATABASE=kong
- KONG_CASSANDRA_CONTACT_POINTS=kong-db
command: "kong migrations bootstrap" # 初始化数据库
# 3. Kong 网关服务
kong:
image: '${GW_IMAGE:-kong/kong-gateway:3.12.0.0}'
container_name: kong
restart: unless-stopped
networks:
- kong-net
depends_on:
kong-db:
condition: service_healthy
kong-migrations:
condition: service_completed_successfully
volumes:
- konga-data:/app/konga/db
- ./logs/:/logs/
- ./conf/:/etc/kong/
environment:
- KONG_DATABASE=postgres
- KONG_PG_HOST=kong-db
- KONG_PG_USER=kong
- KONG_PG_PASSWORD=123456
- KONG_PG_DATABASE=kong
- KONG_PG_PORT=5432
#- KONG_PG_SSL="false"
- KONG_CASSANDRA_CONTACT_POINTS=kong-db
- KONG_PROXY_ACCESS_LOG=/logs/stdout # 代理访问日志输出到控制台
- KONG_ADMIN_ACCESS_LOG=/logs/stdout # 管理 API 访问日志
- KONG_PROXY_ERROR_LOG=/logs/stderr # 代理错误日志
- KONG_ADMIN_ERROR_LOG=/logs/stderr # 管理 API 错误日志
- KONG_ADMIN_LISTEN=0.0.0.0:8001 # 管理 API 端口(HTTP)
- KONG_ADMIN_LISTEN_SSL=0.0.0.0:8444 # 管理 API 端口(HTTPS,可选)
ports:
- "8000:8000" # 代理端口(HTTP,接收客户端请求)
- "8443:8443" # 代理端口(HTTPS,可选)
- "8001:8001" # 管理 API 端口(HTTP,用于配置 Kong)
- "8444:8444" # 管理 API 端口(HTTPS,可选)
healthcheck:
test: ["CMD", "kong", "health"]
interval: 10s
timeout: 10s
retries: 5
# 4、konga数据库初始化(首次启动时执行,创建表结构)
konga-prepare:
image: pantsel/konga:0.14.9
command: "-c prepare -a postgres -u postgresql://konga:123456@konga-db:5432/konga"
networks:
- kong-net
restart: on-failure
links:
- konga-db
depends_on:
- kong
- konga-db
# 5、konga管理界面安装运行
konga:
image: pantsel/konga:0.14a.9
restart: always
networks:
- kong-net
environment:
DB_ADAPTER: postgres
DB_HOST: konga-db
DB_USER: konga
DB_DATABASE: konga
DB_PASSWORD: 123456
depends_on:
- kong
- konga-db
ports:
- "1337:1337"
