使用docker搭建kong单点,集群

832 阅读4分钟

本篇只讲解基于docker容器安装kong,而且只有安装部分没有具体的原理讲解,后面有机会可以分享一下。 安装kong的过程中也是查看了比较多的贴,发现每个帖子多多少少都有点问题所以这边整合了一下遇见的问题以及解决方式供大家参考,目前是可以在自己的环境可能运行。 centos7.9 , docker 19.03.9

首先确定有docker环境

  • docker info
  • docker -v
  • 尽量保证再18版本以上
  • 搭建kong需要postgres数据库咱们这里先通过容器启动一个,如果你已经有postgres数据库了就可以跳过这一步,网上大多数都是通过创建一个network来链接network内部的postgres,但是大多数使用场景应该是有数据库需要你的kong去配置你的远程数据库。
docker run --name postgres-alone \
    -v /data/postgresql/:/var/lib/postgresql/data \
    -e POSTGRES_PASSWORD=123456 \
    -d \
    -i \
    -p 5432:5432 \
    postgres:9.6
  • 这个地方需要注意一下
  1. -e POSTGRES_PASSWORD=123456 这个环节我看其他的贴好多都没有设置密码咱们这里还是设置上
  2. 版本需要强调一下不要用太高版本9.6就可以,版本太高可能会启动有问题我这边没有踩这个坑想试试的可以尝试一下。
  3. 启动之后可以用Navicat连接一下,创建一个kong的库(这一步大家应该都ok吧)
  • 库创建完了咱们就需要将kong需要的表结构进行初始化一下
docker run --rm \
    -e "KONG_DATABASE=postgres" \
    -e "KONG_PG_HOST=172.24.198.128" \
    -e "KONG_PG_PORT=5432" \
    -e "KONG_PG_USER=postgres" \
    -e "KONG_PG_PASSWORD=123456" \
    -e "KONG_CASSANDRA_CONTACT_POINTS=kong" \
    kong kong migrations bootstrap
  • 这个地方没有什么需要强调的就是细心一点对应填写的数据都不要填错了就ok
  1. KONG_DATABASE:数据库类型咱们使用的postgres
  2. KONG_PG_HOST:ip
  3. KONG_PG_PORT:端口
  4. KONG_PG_USER:用户名
  5. KONG_PG_PASSWORD:密码
  • 初始化之后去数据库中看一下他会生成kong所需要的所有表结构(一定要确定一下,虽然执行有问题会报错提示)
  • 接下来咱们启动kong
docker run -d --name kong \
    -e "KONG_DATABASE=postgres" \
    -e "KONG_PG_HOST=172.24.198.128" \
    -e "KONG_PG_PORT=5432" \
    -e "KONG_PG_USER=postgres" \
    -e "KONG_PG_PASSWORD=123456" \
    -e "KONG_CASSANDRA_CONTACT_POINTS=kong" \
    -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_LISTEN_SSL=0.0.0.0:8444" \
    -p 8000:8000 \
    -p 8443:8443 \
    -p 8001:8001 \
    -p 8444:8444 \
    kong:latest
  • 启动kong也是同理,注意填写好数据库的配置基本上如果没有端口占用的问题都可以正常启动
  • 这里先讲解一下我的理解,目前咱们安装的单点的kong,但是kong的集群模式其实就是在其他的机器启动kong就好了(不用执行初始化数据库的命令)这些kong读取的都是同一台pg所以配置一台kong其他的kong都可以生效。然后kong在作为上游应用被nginx方向代理一层就ok了。nginx代理这一步咱们文章后面我补上
  • 下面咱们搭建一下konga介绍一下(konga是一个可视化操作的页面,通俗一些就是你可以点点点就实现了kong的各种配置,但是还是希望大家通过kong的api去操作这样会比较容易理解一下操作的含义)
  • 再在刚才pg数据库中创建一个konga库
  • 执行konga初始化命令
docker run --rm \
    pantsel/konga:latest \
    -c prepare \
    -a postgres \
    -u postgresql://postgres:123456@172.24.198.129:5432/konga;   
  • 同理这块填写好对应的数据库信息就好了
  1. -c 指定数据库
  2. ://用户名:密码@ip:port/库 初始化好了之后启动konga
docker run -d -p 1337:1337 \
    -e "TOKEN_SECRET=P@ssw0rd" \
    -e "DB_ADAPTER=postgres" \
    -e "DB_HOST=172.24.198.129" \
    -e "DB_PORT=5432" \
    -e "DB_USER=postgres" \
    -e "DB_PASSWORD=123456" \
    -e "DB_DATABASE=konga"  \
    -e "NODE_ENV=development" \
    --name konga pantsel/konga  
  • konga启动成功之后就可以访问可视化页面(ip:1337)了注意服务器的防火墙有没有有没有关闭
  • 关闭防火墙命令centos7的:systemclt stop firewalld.service
  • 防火墙重启之后记得docker也重启一下要不然会报错iptable的错误:systemctl restart docker
  • 后面就可以进行登录注册了 具体配置kong我这边出一个简单的配置
  • 比如咱们现在本地有一个provider服务需要通过kong进行转发
  • http://127.0.0.1:8080/api
  • http://127.0.0.1:8081/api 未完待续。。。