Kong&Konga - Docker安装部署

简介

kong在openresty基础上进行的开发,而openresty基于nginx,所以kong的很多概念和用法都是nginx特色,包括对功能进行描述的词汇,比如upstream services就是nginx设定的upstream。kong很好地封装了nginx,并对外提供了如下的功能接口:

  • 云原生:具有平台无关性,kong即可以运行在物理设备也可以运行在kubernetes上
  • 动态负载均衡:在多个upstream services基础上进行负载均衡设定
  • 基于hash的负载均衡:基于hashing/sticky session的负载均衡
  • 断路器:能追踪不健康的upstream services
  • 健康检测:对upstream services进行主动或者被动地监控
  • 服务发现:可结合consul提供服务注册等功能
  • WebSockets:通过WebSockets和upstream service进行通信
  • OAuth2.0:可对API方便地添加OAuth2.0进行授权
  • 日志:通过HTTP/TCP/UDP等方式进行日志相关操作
  • 安全:ACL,机器人检测,黑白名单IP等
  • 系统日志:日志可输入到系统日志中
  • 监控:提供实时监控功能
  • 认证:HMAC/JWT以及基本认证方式
  • 限流(Rate-Limiting):基于多变量对请求进行阻塞或者限制
  • 转换:对TTP请求和相应进行添加/删除/操纵等操作
  • 缓存:在代理层进行缓存和响应处理
  • CLI:通过命令行对kong的集群进行控制
  • REST API:可灵活地通过RESTful API对kong进行操作
  • 失败检测与恢复:Cassandra某一节点停止也不会影响kong的功能
  • 集群:所有的kong节点都能自动加入集群,并保证配置在整个节点间得到更新
  • 可扩展性:kong可以通过添加节点很容易地实现横向扩展
  • 性能:使用nginx作为内核,kong具有nginx的高性能
  • plugin:可以对kong和API进行扩展

相关资料链接

GitHub-kong
官网-kong
GitHub-konga

部署Kong

创建docker 网络,打通关联容器网络
docker network create kong-net
建立存储数据库
docker run -d \
--name kong-database \
--network=kong-net \
-p 5432:5432\
-e "POSTGRES_USER=kong"\
-e "POSTGRES_DB=kong"\
-e "POSTGRES_PASSWORD=kong"\                
postgres:9.6

postgres:latest镜像应该也可以,不过我一般指定版本,出了问题也好找问题所在;
启动容器前你也可以先pull,如

docker pull postgres:9.6
kong镜像拉取
docker pull kong/kong

不管是go-micro还是现在的kong,使用docker安装部署都有一点点的坑,不是版本不一致就是固定化,如果出现了问题网上查资料也解决不了的情况,建议你直接下载源码,自己生成定制化镜像

初始化kong数据库
docker run --rm \
--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"\
kong/kong kong migrations bootstrap
启动kong容器
docker run -d \
--name kong \
--network=kong-net\
 -e "KONG_DATABASE=postgres"\
 -e "KONG_PG_HOST=kong-database"\
 -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/kong

部署Konga(kong的可视化管理工具)

docker pull pantsel/konga
docker run -d \
-p 1337:1337 \
--network kong-net \
-e "TOKEN_SECRET=kongtoken" \
-e "DB_ADAPTER=postgres" \
-e "DB_HOST=kong-database" \
-e "DB_USER=kong"  \
-e "DB_PASSWORD=kong" \
 --name konga \
pantsel/konga

开始装逼之旅

假定你所部署的服务器地址为localhost,访问地址http://localhost:1337就可以进入到konga的可视化管理界面

19026834-9c624bf829e7407b.png

首次进入会设置账号,密码啥的,这些就不阐述了,登录之后设置kong的CONNECTIONS就可以开始对kong进行各种蹂躏了~

你可能感兴趣的:(Kong&Konga - Docker安装部署)