部署环境:

[OS]

centos 6.8(如果是centos6.5,请自行先升级到6.8,否则不支持docker)

[Docker]

Client version: 1.7.1

Client API version: 1.19

推荐使用Docker engine 1.9以上版本,支持docker-compose

[Kong]

Version: 0.9.9

由于众所周知的原因,国内链接dockerhub以及github都有不同程度的问题,建议用daocloud.io的docker镜像加速服务提高image pull的速度

部署过程


1.部署数据库

kong支持2类数据库 cassandra 和 postgres,这边应用场景不大,所以使用postgres

使用命令:

sudo docker run -d \

--name kong-database \

--restart=always \

-p 5432:5432 \

-e POSTGRES_USER=kong \

-e POSTGRES_DB=kong \

-v /var/lib/containers/kong/data:/var/lib/postgresql/data \

postgres

完成后容器自动启动

P.S:注意最后 volume的映射,将容器内数据库映射到了本地/var/lib/containers/kong/data下做持久化用,如果迁移的时候不要忘记了挪数据

2.部署kong服务

sudo docker run -d \

--name kong-core \

--restart=always \

-p 8001:8001 \

-p 20802:8443 \

-p 20801:8000 \

-p 7946:7946 \

-p 7946:7946/udp \

--link kong-database:kong-database \

-e KONG_DATABASE=postgres \

-e KONG_PG_HOST=kong-database \

-v /etc/localtime:/etc/localtime:ro \

-v /etc/letsencrypt:/etc/letsencrypt:ro \

-v /usr/local/container/kong/kong.conf:/usr/local/kong/kong.conf:ro \

-v /usr/local/container/kong/nginx-kong.conf/:/usr/local/kong/nginx-kong.conf:ro \

kong

配置SSL:

这里使用letsencrypt的免费证书,如何生成,见另一篇文章

sudo vi /usr/local/container/kong/kong.conf

1.修改ssl_cert_key为你的私钥pem(这边路径对应上面的 /etc/letsencrypt/live/your.domain.com/privkey.pem)

2.修改ssl_cert为你的证书 pem(这边路径对应上面的 /etc/letsencrypt/live/your.domain.com/fullchain.pem)

sudo vi /usr/local/container/kong/nginx-kong.conf

1.修改 ssl_certificate_key 为你的私钥pem(这边路径对应上面的 /etc/letsencrypt/live/your.domain.com/privkey.pem)

2.修改 ssl_certificate 为你的证书 pem(这边路径对应上面的 /etc/letsencrypt/live/your.domain.com/fullchain.pem)

完成后进入容器:

sudo docker exec -it kong-core /bin/bash

重新加载配置

kong reload

退出容器

exit

P.S:

1.这里先将时区修正下,如果不对的话 ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime (否则会由于服务端/客户端时间不一致影响之后的 hmac-sha1插件的验证)

2.kong.conf以及nginx-kong.conf是为了之后配置ssl使用,挂载为readOnly,初次启动的时候先根据kong默认的,建立起这2个文件,否则如果不生成文件就启动会发生问题,也可以第一次run的时候先不要加载为ro,让它自动生成,然后rm掉这个容器,重新挂载为ro再启动一下,那本地就会先自动生成了。最后对这两个文件chomd 700。

3.部署kong-dashboard

为方便通过ui增改插件,装一个方便的插件ui

sudo docker run -d \

--name kong-ui \

--restart=always \

--link kong-core:kong-core \

-p 8080:8080 \

pgbi/kong-dashboard

启动后Kong node URL,输入上面 link过的kong-core(这里就是"kong-core")名称(我之前尝试用ip什么都不太正常)

备注 docker-compose.yml

 version: "2"

 services:
kong-database:
image: postgres
container_name: kong-database
restart: always
ports:
- "5432:5432"
environment:
- POSTGRES_USER=kong
- POSTGRES_DB=kong
volumes:
- "/var/lib/containers/kong/data:/var/lib/postgresql/data"
kong:
image: kong:0.9.9
container_name: kong-core
environment:
- KONG_DATABASE=postgres
- KONG_PG_HOST=kong-database
restart: always
ports:
- "20801:8000"
- "20802:8443"
- "8001:8001"
- "7946:7946"
- "7946:7946/udp"
links:
- kong-database
volumes:
- "/etc/localtime:/etc/localtime:ro"
- "/etc/letsencrypt:/etc/letsencrypt:ro"
- "/usr/local/container/kong/kong.conf:/usr/local/kong/kong.conf:ro"
- "/usr/local/container/kong/nginx-kong.conf/:/usr/local/kong/nginx-kong.conf:ro"
kong-ui:
image: pgbi/kong-dashboard
container_name: kong-ui
restart: always
links:
- kong-core
ports:
- "8080:8080"

API网关Kong系列(二)部署的更多相关文章

  1. API网关Kong系列(一)初识

    最近工作需要,加上国内Kong的文章相对缺乏(搜来搜去就那么两篇文章),而且官方文档在某些demo上也有一些过时的地方,遂提笔记录下这些,希望能有帮助. 先随大流介绍下KONG(主要参考官网): 官方 ...

  2. API网关Kong系列(三)添加服务

    进入之前部署好的kong-ui,默认第一次登陆需要配置kong服务的地址 进入API菜单,点击+号 按照要求填入相关信息 至此完成,可以使用诸如 https://your.domain.com:208 ...

  3. API网关Kong系列(四)认证配置

    目前根据业务需要先介绍2种认证插件:Key Authentication 及 HMAC-SHA1 认证  Key Authentication 向API添加密钥身份验证(也称为API密钥). 然后,消 ...

  4. Api网关Kong集成Consul做服务发现及在Asp.Net Core中的使用

    写在前面   Api网关我们之前是用 .netcore写的 Ocelot的,使用后并没有完全达到我们的预期,花了些时间了解后觉得kong可能是个更合适的选择. 简单说下kong对比ocelot打动我的 ...

  5. API网关——Kong实践分享

    概述 01 什么是Kong Kong是一个在Nginx中运行的Lua应用程序,可以通过lua-nginx模块实现,Kong不是用这个模块编译Nginx,而是与OpenRestry一起发布,OpenRe ...

  6. API 网关 Kong

    什么是 API 网关? 所谓网关,主要作用就是连接两个不同网络的设备,而今天所讲的 API 网关是指承接和分发客户端所有请求的网关层. 为什么需要网关层?最初是单体服务时,客户端发起的所有请求都可以直 ...

  7. .NET Core 微服务—API网关(Ocelot) 教程 [二]

    上篇文章(.NET Core 微服务—API网关(Ocelot) 教程 [一])介绍了Ocelot 的相关介绍. 接下来就一起来看如何使用,让它运行起来. 环境准备 为了验证Ocelot 网关效果,我 ...

  8. API网关Kong部署和使用文档

    KONG安装使用说明 系统版本:ubuntu14 1.下载安装包 $ wget https://github.com/Mashape/kong/releases/download/0.8.3/kong ...

  9. API网关--Kong的实践

    1. 什么是Kong 目前互联网后台架构一般是采用微服务,或者类似微服务的形式,应用的请求通常需要访问多个后台系统.如果让每一个后台系统都实现鉴权.限流.负载均衡.审计等基础功能是不合适的,通用的做法 ...

随机推荐

  1. vue-cli 添加到生产环境问题总结

    1. 路径问题  部署到生产环境后的实际链接为:   服务器项目路径 + serviceUrl的路径  创建 GlobalConstant.js  分别配置 开发环境和生产环境的 路径  (注:此处生 ...

  2. SWIFT中的repeat...while

    SWIFT中的repeat...while类似于JAVA\.NET中的 do while.大同小异只是把do换成了repeat var index = 10 repeat{ print(index) ...

  3. Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBar.setDisplayShowHomeEnabled(boolean)' on a null object reference

    /********************************************************************************* * Caused by: java ...

  4. git中的needs merge问题

    这个问题是在先“储藏”起来了,后面再调用出来出现的错误. 解决的方法就是通过git add    ,git commit -m  提交上去就可以了.

  5. css里涉及到定位相关的example实例

    一,情景导入:正常文档流:指的是HTML文档在进行内容布局时所遵循的从左到右,从上到下的表现方式.HTML中的大多数元素都处在正常的文档流中,而一个元素要脱离正常流的唯一途径就是浮动或定位.二,定位的 ...

  6. AJAX异步实现简单的瀑布流

    传统瀑布流布局ul-li,需要先设定显示几列,每列是一个li,需要左浮动并指定宽度,li里面的布局也要先布局好,主要是要定宽,高度自动:然后通过ajax异步,从数据库中得到数据,遍历后将数据插入最矮的 ...

  7. POJ2155 Matrix

    分析 好博客 区间修改,单点查询的题,可以用经典的树状数组的转化,把它化为单点修改,区间查询. 方法是在一些点上加1,最后查询单点的前缀和模2即为答案.相当于维护的是一个异或差分,利用了容斥. 可对查 ...

  8. width百分比

    table中的td可以在页面中直接在元素上设置width:但是li不能只能在页面中写style: <!-- <li width="20%" class="p- ...

  9. 转 oracle 学习- 用户权限角色

    创建和删除用户是Oracle用户管理中的常见操作,但这其中隐含了Oracle数据库系统的系统权限与对象权限方面的知识.掌握还Oracle用户的授权操作和原理,可以有效提升我们的工作效率. Oracle ...

  10. C语言发送邮件

    c语言发送邮件Linux下使用c语言发送邮件 领导交代一个任务,需要将服务器上的df -hl的执行结果定时发给他. 尝试使用sendmail来发邮件,但是后来放弃了,并不是所有的服务器上都安装了sen ...