以Docker方式安装和配置Kong网关和Konga控制台
文章目录
- 以Docker方式安装和配置Kong网关和Konga控制台
- 前言
- 安装Kong
- 创建容器网络
- 启动PostgreSQL数据库
- 初始化数据
- 对Kong Admin API作安全防护
- 启动Kong
- 安装Konga
- 启动PostgresSQL数据库
- 初始化数据
- 启动Konga
- 在Konga上配置
- 注册admin用户
- 配置Kong连接
- 参考文档
以Docker方式安装和配置Kong网关和Konga控制台
前言
本文描述了以Docker方式安装和配置Kong网关和Konga控制台。
安装Kong
Kong官方提供的以docker-compose方式安装的docker-compose.yml有问题,所以这里还是以docker方式直接安装。
参考文档:
- https://docs.konghq.com/install/docker/
- https://github.com/Kong/docker-kong/tree/master/compose
创建容器网络
docker network create kong-net
启动PostgreSQL数据库
docker run -d --name kong-database \--network=kong-net \-p 5432:5432 \-v $HOME/kong/postgres-data:/var/lib/postgresql/data \-e "POSTGRES_USER=kong" \-e "POSTGRES_DB=kong" \-e "POSTGRES_PASSWORD=kong" \postgres:9.6
说明:
- Kong支持Cassandra和PostgreSQL两种数据库,这里选用PostgreSQL关系型数据库。
- 挂载卷到本地宿主机的
$HOME/kong/postgres-data
目录。
初始化数据
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" \kong:latest kong migrations bootstrap
对Kong Admin API作安全防护
这一步也可以等Kong和Konga启动完成后,再在Konga上配置。
- 创建一个
admin-api
的Service,url为http://127.0.0.1:8001
。- 再创建一个
admin-api
的Route,paths为/admin-api
。- 再添加Key Auth认证插件。
- 再为
admin
Consumer 创建一个Key Auth credential,并设置apikey
值。
参见:
- https://docs.konghq.com/gateway-oss/2.5.x/secure-admin-api/
设置不能通过http://<kong-host>:8001
访问Kong Admin API,只能通过<kong-host>:8000
代理后才能访问Kong Admin API,比如http://<kong-host>:8000/admin-api/?apikey=<secret>
。
将下面kong.yml
文件放到$HOME/kong/config
目录下。
_format_version: "1.1"services:
- name: admin-apiurl: http://127.0.0.1:8001routes:- paths:- /admin-apiplugins:- name: key-authconsumers:
- username: adminkeyauth_credentials:- key: secret
说明:
- 这里采用了Key Authentiaction,设置
key
为secret
,实际使用时需要将该key设置为复杂难以猜测的字符串。 - 另外为了安全起见,实际使用中运行Kong的服务器不要对外开启8001端口,所有访问Kong的流量都通过8000进来。
导入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" \-v $HOME/kong/config:/home/kong \kong:latest kong config db_import /home/kong/kong.yml
启动Kong
docker run -d --name kong \--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_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 127.0.0.1:8001:8001 \-p 127.0.0.1:8444:8444 \kong:latest
可通过以下方式访问Kong Admin API:
- http://localhost:8001
- http://localhost:8000/admin-api?apikey=secret
http://<kong-host>:8000/admin-api?apikey=secret
, 比如 http://192.168.0.100:8000/admin-api?apikey=secret
Tips: 在MacOS上可通过
ipconfig getifaddr en0
获取本机IP。
安装Konga
因为Kong Community版本没有Web控制台,为了方便管理,选择安装Konga作为Kong Admin Web控制台。
参见:
- https://github.com/pantsel/konga
- https://hub.docker.com/r/pantsel/konga/
- https://pantsel.github.io/konga/
启动PostgresSQL数据库
启动konga
PostgresSQL数据库。
docker run -d --name konga-database \--network=kong-net \-p 5433:5432 \-v $HOME/kong/konga/postgres-data:/var/lib/postgresql/data \-e "POSTGRES_USER=konga" \-e "POSTGRES_DB=konga" \-e "POSTGRES_PASSWORD=konga" \postgres:9.6
说明:
- Konga需要有自己的数据库保存相应配置,而不是直接使用Kong的数据库。
- Konga读取Kong数据时,是通过Kong Admin API去读取,而不是直接读取Kong的数据库。
- 挂载卷到本地宿主机的
$HOME/kong/konga/postgres-data
目录。
初始化数据
docker run --rm \--network=kong-net \pantsel/konga:latest \-c prepare \-a "postgres" \-u "postgres://konga:konga@konga-database:5432/konga"
启动Konga
docker run -d --name konga \--network kong-net \-e "TOKEN_SECRET=secret123" \-e "DB_ADAPTER=postgres" \-e "DB_URI=postgres://konga:konga@konga-database:5432/konga" \-e "NODE_ENV=development" \-p 1337:1337 \pantsel/konga
访问http://localhost:1337 来访问Konga。
在Konga上配置
注册admin用户
初次使用Konga前,需要先注册一个Admin用户。
配置Kong连接
在Konga上,打开Connections,选择新建一个Kong连接。
选择连接类型为Kong Auth,输入连接名称、Loopback API URL和API Key。
示例:
Name: `kong-key`
Loopback API URL: `http://192.168.0.100:8000/admin-api/`
API KEy: `secret`
说明:
- 不能在API URL中使用
localhost
或127.0.0.1
,不然会无法激活连接。参见:https://github.com/pantsel/konga/issues/136
创建连接后,点击Active按钮,激活Kong连接。
激活连接后可以看到Konga已经可以通过Kong Admin API读取到Kong的相关数据。
参考文档
- How to setup Konga using Docker
- Managing microservices and APIs with Kong and Konga
- Setup (Kong + Konga) as API Gateway
- https://docs.konghq.com/gateway-oss/2.5.x/secure-admin-api/
- 云原生微服务网关 Kong 和Kong 管理UI Konga快速安装攻略
以Docker方式安装和配置Kong网关和Konga控制台相关推荐
- 第12章 CentOS7 中 Docker 的安装与配置
第08章 CentOS7 中 Docker 的安装与配置 Docker 是什么? Docker 是世界领先的软件容器平台.[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img- ...
- Docker 方式安装 Nginx 、阿里云服务器上装 Ngnix
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 非 Docker 方式安装,直接 Linux 安装见另一文:Linux 上 安装 nginx .阿里 ...
- Docker方式安装巡风
Docker方式安装巡风系统[基于CentOS7.6] # yum update # curl -sSL https://get.docker.com/ | sh # yum install git ...
- Docker 方式安装、运行 Nexus3 、重置默认密码、推送 jar 包到私服
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1. 找镜像: docker search nexus 2. 拉取镜像:(我已经拉取过,不选择版本时 ...
- 【Docker】Docker的安装及配置
0.安装Docker Docker 分为 CE 和 EE 两大版本.CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月. Docker CE 分为 s ...
- 【Docker容器安装、配置、部署】
一.什么是Docker? Dockers就是一个虚拟机,他是一个开源的容器平台,他和VM有相似的地方.也有不同的地方 Docker名词解释: 仓库(Docker仓库,Dockerhub):存放镜像的地 ...
- Docker方式安装showdoc
基础安装 安装前请确保你的环境已经装好了docker服务 .docker的安装教程在网上比较多,可以搜索了解下.这里重点介绍showdoc # 原版官方镜像安装命令(中国大陆用户不建议直接使用原版镜像 ...
- docker的安装及配置加速器
Docker的简介 Docker 是一个开源的应用容器引擎,诞生于 2013 年初,基于 Go 语言实现, dotCloud 公司出品(后改名为Docker Inc).Docker 是一个可以让开发者 ...
- ubuntu18.04 nvidia gpu驱动与tensorflow-gpu以 docker方式安装
通过ubuntu标准库自动安装驱动 搜索系统当前支持的驱动(此方法可能无法安装最新版) $ ubuntu-drivers devices == /sys/devices/pci0000:00/0000 ...
最新文章
- Ubuntu Snap 简述
- python 连接字符的方法(全)
- CreateDesktop 创建虚拟桌面
- 【树链剖分】软件管理(luogu 2146/金牌导航 树链剖分-2)
- 【Flink】Flink Exceeded checkpoint tolerable failure threshold
- Windows 2008 实战之KMS实施(Revision 2)
- SAP固定资产业务场景及方案
- Word把普通表格改为三线表格的方法
- “你打算怎么构建云安全资源池”
- Java岗面试题--Java基础(日积月累,每日三题)
- 为什么我的单片机不是“跑车”而是“牛车”,过来人告诉你。
- 5G通信在应急系统中的应用
- anyconnect免密码登录
- c++ sleep函数 linux,sleep()函数 | C/C++程序员之家
- 【性能测试】轻量级压测工具Hey
- 英语基础不好可以学会编程吗?
- C语言入门教程||C语言常量||C语言存储类
- 微擎应用之医院挂号专家 微官网的实现
- 八月六日个人训练记录
- 关于测试网 gladios 节点公开部署