参考

Kong入门学习实践(2)实验环境搭建

安装docker

安装Docker

安装docker compose

安装docker-compose

docker compose方式(不能正常运行)

创建一个docker-compose.yaml,存放到F:\project\Kong目录下

  1. version: "3.8"
  2. volumes:
  3. kong_data: {}
  4. networks:
  5. kong-net:
  6. services:
  7. kong-database:
  8. image: postgres:14.5
  9. container_name: kong-postgres
  10. restart: on-failure
  11. networks:
  12. - kong-net
  13. volumes:
  14. - kong_data:/var/lib/postgresql/data
  15. environment:
  16. POSTGRES_USER: kong
  17. POSTGRES_PASSWORD: ${KONG_PG_PASSWORD:-kong}
  18. POSTGRES_DB: kong
  19. ports:
  20. - "5432:5432"
  21. healthcheck:
  22. test: ["CMD", "pg_isready", "-U", "kong"]
  23. interval: 30s
  24. timeout: 30s
  25. retries: 3
  26. kong-migration:
  27. image: ${KONG_DOCKER_TAG:-kong:latest}
  28. command: kong migrations bootstrap
  29. networks:
  30. - kong-net
  31. restart: on-failure
  32. environment:
  33. KONG_DATABASE: postgres
  34. KONG_PG_HOST: kong-database
  35. KONG_PG_DATABASE: kong
  36. KONG_PG_USER: kong
  37. KONG_PG_PASSWORD: ${KONG_PG_PASSWORD:-kong}
  38. depends_on:
  39. - kong-database
  40. kong:
  41. image: ${KONG_DOCKER_TAG:-kong:latest}
  42. restart: on-failure
  43. networks:
  44. - kong-net
  45. environment:
  46. KONG_DATABASE: postgres
  47. KONG_PG_HOST: kong-database
  48. KONG_PG_DATABASE: kong
  49. KONG_PG_USER: kong
  50. KONG_PG_PASSWORD: ${KONG_PG_PASSWORD:-kong}
  51. KONG_PROXY_LISTEN: 0.0.0.0:8000
  52. KONG_PROXY_LISTEN_SSL: 0.0.0.0:8443
  53. KONG_ADMIN_LISTEN: 0.0.0.0:8001
  54. depends_on:
  55. - kong-database
  56. healthcheck:
  57. test: ["CMD", "kong", "health"]
  58. interval: 10s
  59. timeout: 10s
  60. retries: 10
  61. ports:
  62. - "8000:8000"
  63. - "8001:8001"
  64. - "8443:8443"
  65. - "8444:8444"
  66. konga-prepare:
  67. image: pantsel/konga:latest
  68. command: "-c prepare -a postgres -u postgresql://kong:${KONG_PG_PASSWORD:-kong}@kong-database:5432/konga"
  69. networks:
  70. - kong-net
  71. restart: on-failure
  72. depends_on:
  73. - kong-database
  74. konga:
  75. image: pantsel/konga:latest
  76. restart: always
  77. networks:
  78. - kong-net
  79. environment:
  80. DB_ADAPTER: postgres
  81. DB_URI: postgresql://kong:${KONG_PG_PASSWORD:-kong}@kong-database:5432/konga
  82. NODE_ENV: production
  83. depends_on:
  84. - kong-database
  85. ports:
  86. - "1337:1337"

备注:
(1)该yml文件定义了Kong、PostgreSQL 和 Konga 三个核心组成部分
(2)kong-migration会做Kong的数据库数据初始化操作
(3)kong-prepare会做Konga的数据库数据初始化操作
(3)该yml文件支持自定义环境变量替换当中的Kong镜像名字、PostgreSQL的密码
运行以下命令进行部署

  1. cd /root/kong/
  1. docker-compose up -d

停止

  1. docker-compose stop
  1. docker-compose down

执行后不能正常运行,一直在重启.
部署完成后,访问服务器的1337端口即可看到Konga的登录注册页面,首次访问需要创建一个Admin账号,随意输入即可,但密码要大于7位字符。
通过Admin账号登录之后,需要指定Kong的Admin URL让Konga能够连接Kong。这里我们绑定的Kong Admin API端口是8001(http),8444(https,但这里我们实验环境,没有配置SSL证书,因此跳过)。

docker安装kong

创建docker网络

创建一个docker网络以便容器间可以彼此发现和通信。
如果不指定subnet, 创建network默认使用 172.17网段,也许可能跟实际网段冲突 docker network create —subnet=12.10.10.0/24 kong-net

  1. docker network create kong-net2

查看网络信息

  1. docker inspect kong-net2

安装postgres容器

  1. docker run -d --name kong-database --network=kong-net2 -p 5432:5432 -e "POSTGRES_USER=kong" -e "POSTGRES_DB=kong" -e "POSTGRES_PASSWORD=kong" -v /kong/postgresql/data:/var/lib/postgresql/data postgres:14.5
  1. docker run -d --name kong-database --network=kong-net2 -p 5432:5432 -e "POSTGRES_USER=kong" -e "POSTGRES_DB=kong" -e "POSTGRES_PASSWORD=kong" -v D:/data/docker/kong/postgresql:/var/lib/postgresql/data postgres:14.5

安装kong数据库

为了数据能够得到保存,安装一个kong数据库,并生成初期数据

  1. docker run --rm --network=kong-net2 -e "KONG_DATABASE=postgres" -e "KONG_PG_HOST=kong-database" -e "
  2. KONG_PG_USER=kong" -e "KONG_PG_PASSWORD=kong" -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" kong:latest kong migrations bootstrap

启动kong容器

  1. docker run -d --name kong --network=kong-net2 -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 8000:8000 -p 8443:8443 -p 8001:8001 -p 8444:8444 kong:latest
  1. docker run -d --name kong \
  2. --network=kong-net2 \
  3. -e "KONG_DATABASE=postgres" \
  4. -e "KONG_PG_HOST=kong-database" \
  5. -e "KONG_PG_USER=kong" \
  6. -e "KONG_PG_PASSWORD=kong" \
  7. -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
  8. -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \
  9. -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \
  10. -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \
  11. -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \
  12. -e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \
  13. -p 8000:8000 \
  14. -p 8443:8443 \
  15. -p 8001:8001 \
  16. -p 8444:8444 \
  17. kong:latest

8000和8443分别用于对http和https的代理访问。 8001和84444分别是http和https的管理API访问端口,因为管理API不宜对外暴露,所以在挂载端口时明确了0.0.0.0,即只有宿主机本地能够访问。

pgAdmin4

官方镜像

  1. docker pull dpage/pgadmin4:latest
  1. docker run -d --name pgadmin -p 5081:80 -e PGADMIN_DEFAULT_EMAIL=longfuchu@163.com -e PGADMIN_DEFAULT_PASSWORD=123456 -e PGADMIN_CONFIG_ENHANCED_COOKIE_PROTECTION=True -e PGADMIN_CONFIG_CONSOLE_LOG_LEVEL=10 dpage/pgadmin4:latest
参数 作用
-d 启动后在后台运行,不打印日志
—name 容器名 给容器命名,方便管理,也可以不写此参数
—restart always 如果容器死掉,就自动将其拉起,也可以不写此参数
-p 宿主机端口:容器内端口 将宿主机端口与容器内端口进行映射,postgreSQL默认的容器内端口是5432,容器外端口可以根据需要自己调整
-e ‘PGADMIN_DEFAULT_EMAIL=用户名’ 设置登陆用用户名,最好是email的格式
-e ‘PGADMIN_DEFAULT_PASSWORD=密码’ 设置登陆密码,自己记住

现在pgAdmin4就起来了,可以浏览器访问http://192.168.3.150:5081/login
1663645446957.png
登录后,测试连接postgreSQL是否成功
1664505168252.png

安装konga

  1. docker pull pantsel/konga:latest

进入容器并初始化数据库

  1. docker exec -it kong-database psql -U kong

创建数据库.注意句末的分号

  1. CREATE DATABASE konga WITH ENCODING='UTF8';

然后输入 \q退出。(好像没创建成功,需要手工重新创建konga)
借助konga对数据库进行初始化操作。

  1. docker run --rm pantsel/konga:latest --network=kong-net2 -c prepare -a postgres -u postgresql://kong:kong@kong-database:5432/konga
  1. docker run --rm \
  2. --network=kong-net2 \
  3. pantsel/konga:latest -c prepare -a postgres -u postgresql://kong:kong@172.18.0.1:5432/konga

172.18.0.1
注意 postgresql://kong:kong@10.0.2.59:5432/konga意为 postgresql://<用户>:<密码>@<PG_Host>:<PG_Port>/<database>
启动konga面板

  1. docker run -d -p 1337:1337 --network=kong-net2 -e "TOKEN_SECRET=123456" -e "DB_ADAPTER=postgres" -e "DB_HOST=kong-database" -e "DB_PASSWORD=kong" -e "DB_USER=kong" -e "DB_DATABASE=konga" -e "NODE_ENV=production" -e "DB_URI=postgresql://kong:172.19.0.1/konga" --name konga pantsel/konga:latest

或者

  1. docker pull pgbi/kong-dashboard
  1. docker run -d -p 8083:8080 --network=kong-net2 --name kong-dashboard pgbi/kong-dashboard start --kong-url http://kong:8001 --basic-auth kong=kong

Konga连接Kong

·