API网关Kong系列(二)部署
部署环境:
[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系列(二)部署的更多相关文章
- API网关Kong系列(一)初识
最近工作需要,加上国内Kong的文章相对缺乏(搜来搜去就那么两篇文章),而且官方文档在某些demo上也有一些过时的地方,遂提笔记录下这些,希望能有帮助. 先随大流介绍下KONG(主要参考官网): 官方 ...
- API网关Kong系列(三)添加服务
进入之前部署好的kong-ui,默认第一次登陆需要配置kong服务的地址 进入API菜单,点击+号 按照要求填入相关信息 至此完成,可以使用诸如 https://your.domain.com:208 ...
- API网关Kong系列(四)认证配置
目前根据业务需要先介绍2种认证插件:Key Authentication 及 HMAC-SHA1 认证 Key Authentication 向API添加密钥身份验证(也称为API密钥). 然后,消 ...
- Api网关Kong集成Consul做服务发现及在Asp.Net Core中的使用
写在前面 Api网关我们之前是用 .netcore写的 Ocelot的,使用后并没有完全达到我们的预期,花了些时间了解后觉得kong可能是个更合适的选择. 简单说下kong对比ocelot打动我的 ...
- API网关——Kong实践分享
概述 01 什么是Kong Kong是一个在Nginx中运行的Lua应用程序,可以通过lua-nginx模块实现,Kong不是用这个模块编译Nginx,而是与OpenRestry一起发布,OpenRe ...
- API 网关 Kong
什么是 API 网关? 所谓网关,主要作用就是连接两个不同网络的设备,而今天所讲的 API 网关是指承接和分发客户端所有请求的网关层. 为什么需要网关层?最初是单体服务时,客户端发起的所有请求都可以直 ...
- .NET Core 微服务—API网关(Ocelot) 教程 [二]
上篇文章(.NET Core 微服务—API网关(Ocelot) 教程 [一])介绍了Ocelot 的相关介绍. 接下来就一起来看如何使用,让它运行起来. 环境准备 为了验证Ocelot 网关效果,我 ...
- API网关Kong部署和使用文档
KONG安装使用说明 系统版本:ubuntu14 1.下载安装包 $ wget https://github.com/Mashape/kong/releases/download/0.8.3/kong ...
- API网关--Kong的实践
1. 什么是Kong 目前互联网后台架构一般是采用微服务,或者类似微服务的形式,应用的请求通常需要访问多个后台系统.如果让每一个后台系统都实现鉴权.限流.负载均衡.审计等基础功能是不合适的,通用的做法 ...
随机推荐
- mysql5.7高可用架构之MHA
一.MHA简介 MHA(Master High Availability)目前在mysql高可用方面比较成熟.是一套优秀的作为 mysql高可用性环境下故障切换和主从提升的高可用软件.在MySQL故障 ...
- OC基础:实例变量和成员变量的区别 分类: ios学习 OC 2015-06-14 17:59 16人阅读 评论(0) 收藏
摘要: Objective-C 引入了"实例变量"的概念,但同时, 也经常出现 "成员变量"的声音. 到底什么是实例变量,什么是成员变量,二者的区别是什么呢 ...
- django会话跟踪技术
目录 django中的会话跟踪技术 什么是会话跟踪技术 HTTP无状态协议 Cookie概述 什么是cookie cookie源码 cookie超长时间 cookie超长时间 cookie生效路径 删 ...
- 第十五篇 make中的隐式规则概述
前面我们讲到了makefile的依赖拆分的知识,现在可以引申出这样一个问题,如果同一个目标的不同命令拆分的写到不同地方会发生什么?下面我们给出程序和执行结果: 可见后面的命令会覆盖前面的命令, ...
- Python 第三方库 进度条模块 tqdm的使用方法
使用方法一: tqdm tqdm(list)方法可以传入任意一种list,比如数组,同时tqdm中不仅仅可以传入list, 同时可以传入所有带len方法的可迭代对象,这里只以list对象为例: fro ...
- OK335xS Linux Qt make: icpc: Command not found
OK335xS Linux Qt make: icpc: Command not found 一.出错现象: make: icpc: Command not found make: *** [main ...
- opencv-python教程学习系列4-opencv绘图函数
前言 opencv-python教程学习系列记录学习python-opencv过程的点滴,本文主要介绍opencv绘图函数,坚持学习,共同进步. 系列教程参照OpenCV-Python中文教程: 系统 ...
- 你在AutoHotKey面前居然敢比调音量 - imsoft.cnblogs
当你正在电脑游戏中酣战之际.或者正沉浸在动作大片紧张激烈的情节中.或者正在全神贯注的聆听优美动听音乐……,在这些场景中,如果你需要迅速对音量进行调节(例如增大减小音量,或者静音)怎么办?难道返回Win ...
- HDU 1263:水果(map)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1263 #include <stdio.h> #include <string.h&g ...
- m mm等和envsetup.sh
envsetup.sh简介: Android 完成编译的时候先执行 source build/envsetup.sh.在这个shell 脚本中定义了 help, croot, m, mm, mmm 等 ...