首页 > 技术知识 > 正文

上一篇我们已经已经了解了什么是 Kong,本篇就来带领大家了解如何安装 Kong。 接下来我们将使用 Docker 安装。如果你有其他的特殊要求,请参照 官方文档 。

Docker 安装 Kong。

首先,你想安装它,就要有 Docker。如果你没有或者不知道什么是Docker,请点击传送门

一、获取镜像

获取 Kong 的docker 镜像

docker pull kong

查看 Docker 镜像

docker images

物联网网关神器 Kong( 二 )

二、创建网络

需要创建同一个网络用以后面数据库与 Kong 的通信。

docker network create kong-net

物联网网关神器 Kong( 二 )1

三、创建数据库

我们将使用 PostgreSQL 来用作 Kong 的配置存储。

docker run -d –name kong-db \ –network=kong-net \ -p 5432:5432 \ -e “POSTGRES_USER=kong” \ -e “POSTGRES_DB=kong” \ -e “POSTGRES_PASSWORD=kong” \ postgres:9.6

物联网网关神器 Kong( 二 )2

接下来查看容器状态

docker ps

物联网网关神器 Kong( 二 )3

现在可以看到 PostgreSQL 已经正常启动,并对外开放了 5432 端口。

四、初始化数据库结构

我们需要为为刚创建的数据库进行初始化,生成 Kong 所需要的表结构和数据。

docker run –rm –network=kong-net \ -e “KONG_DATABASE=postgres” \ -e “KONG_PG_HOST=kong-db” \ -e “KONG_PG_PASSWORD=kong” \ -e “KONG_PASSWORD=kong123456” \ kong kong migrations bootstrap

物联网网关神器 Kong( 二 )4

Tips: 如果你不理解下面的命令就看这一段。

kong kong migrations bootstrap

根据 docker run 的规范

docker run [OPTIONS] IMAGE [COMMAND] [ARG…]

说明第一个 Kong 为容器名,第二个 Kong 为为命令 ( Command ) 后面的为参数。简单来说其流程就是:

运行一个 Kong 容器。 进入该容器并执行 kong migrations bootstrap 命令

五、启动 Kong 容器

为了启动 Kong 容器,我们做了那么多的准备工作,现在终于开始运行起来了。

docker run -d –name kong –network=kong-net \ -e “KONG_DATABASE=postgres” \ -e “KONG_PG_HOST=kong-db” \ -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 80:8000 \ -p 443:8443 \ -p 8001:8001 \ -p 8444:8444 \ kong

物联网网关神器 Kong( 二 )5

六、测试是否安装成功

curl -i -X GET –url http://<DNSorIP>:8001/services

将 <DNSorIP> 替换为你的 IP 或 DNS。

如果成功将返回 HTTP/1.1 200 OK

物联网网关神器 Kong( 二 )6

常规配置 Kong

Kong 提供了 Http/Rest 接口,用来动态创建配置文件。

配置反向代理

Kong 是基于 Nginx 的,所以它将会基于配置动态构建出 Nginx 的配置文件。

Nginx 配置文件 upstream example{ server localhost:8080 weight=100; } server{ listen:80; location /hi { proxy_pass http://example } } 使用 Kong API 进行配置

配置upstream

curl -X POST http://<DNSorIP>:8001/upstreams –data “name=example”

物联网网关神器 Kong( 二 )7

相当于配置 Nginx 的 upstream 部分。

upstream example{ }

配置target

curl -X POST http://<DNSorIP>:8001/upstreams/example/targets –data “target=localhost:6023” –data “weight=100”

物联网网关神器 Kong( 二 )8

相当于配置 Nginx 的 upstream 内的主机部分。

upstream example{ server localhost:8080 weight=100; }

配置service

curl -X POST http://<DNSorIP>:8001/services –data “name=hi” –data “host=example”

物联网网关神器 Kong( 二 )9

相当于配置 Nginx 的 server。

server{ listen:80; }

配置route

curl -X POST http://<DNSorIP>:8001/routes –data “paths[]=/hi” –data “service.id= < service_id >” service_id 为上一步配置 service 时的返回的Id。

物联网网关神器 Kong( 二 )10

相当于配置 Nginx server 内的 location。

server{ listen:80; location /hi { proxy_pass http://example } } “ 访问服务进行测试

我们之前已经运行起了一个 Docker 服务,将端口服务映射到 6023 端口。现在我们可以看到,我们的请求已经经过 Kong API 进行了反向代理到 6023 端口上。 物联网网关神器 Kong( 二 )11

总结

本篇文章我们讲解了利用 Docker 来安装 Kong ,并利用 Kong 的 Rest API 进行了动态配置。让我们来仔细看着这些 API,是不是脑中灵光一显?对,我们可以将Rest API 动态配置的功能做成图形化界面。这样就可以更方便的配置了。 下一篇我们就会接着讲 Kong 的图形化管理界面 – Konga。

猜你喜欢