【玩转Lighthouse】使用Docker部署云原生API网关Kong

2022-04-16 14:26:32 浏览数 (1)

Kong简介

KongKong

Kong是一款云原生(cloud-native)、平台无关(platform-agnostic)、可扩展(scalable)的 API 网关,以通过插件实现的高性能和可扩展性而著称。

通过提供代理、路由、负载平衡、运行状况检查、身份验证等功能,Kong可以作为中心层轻松协调微服务或传统API流量。

用Kong作为您的API网关好处多多,赶紧将它部署到您的轻量应用服务器吧~

部署方法

创建专用网络

在Docker中创建Kong的专用网络:

代码语言:shell复制
docker network create kong-net

此时我们创建了一个名为kong-net的专用网络。

拉取相关镜像

通过以下命令拉取Kong相关镜像:

代码语言:shell复制
docker pull kong
docker pull postgres:9.6
docker pull pantsel/konga

其中kong镜像为Kong的主镜像;postgres:9.6镜像为PostgreSQL数据库,用于存储Kong的数据;pantsel/konga镜像为Konga面板,用于为Kong提供基于Web的图形化管理面板。

创建Kong专用数据库(PostgreSQL)

代码语言:shell复制
docker run -d 
--name kong-database 
--network kong-net 
-e "POSTGRES_USER=konguser" 
-e "POSTGRES_DB=kong" 
-e "POSTGRES_PASSWORD=kongpw" 
--restart always 
postgres:9.6

此时将创建一个容器名为kong-database,连接到网络kong-net,数据库用户名为konguser,数据库名为kong,数据库用户对应密码为kongpw的PostgreSQL容器。

对数据库进行初始化

对数据库进行初始化,创建表结构:

代码语言:shell复制
docker run --rm 
--network kong-net 
-e "KONG_DATABASE=postgres" 
-e "KONG_PG_HOST=kong-database" 
-e "KONG_PG_USER=konguser" 
-e "KONG_PG_PASSWORD=kongpw" 
kong 
kong migrations bootstrap

其中KONG_PG_HOST环境变量指定为数据库的主机,此处填写其容器名kong-database即可;KONG_PG_USER环境变量填写数据库的用户名;KONG_PG_PASSWORD环境变量填写数据库用户对应的密码。

运行Kong

注意:此处默认操作系统为Debian/Ubuntu,如果是其他系统请查看下面的说明。

代码语言:shell复制
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=kongpw" 
-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" 
-e "KONG_LUA_SSL_TRUSTED_CERTIFICATE=/etc/ssl/certs/ca-certificates.crt" 
-v /etc/ssl/certs:/etc/ssl/certs 
-p 80:8000 
-p 443:8443 
-p 127.0.0.1:8001:8001 
-p 127.0.0.1:8444:8444 
--restart always 
kong

此时访问http://IP/即可发现Kong已经部署成功,如下图所示:

访问http://IP/访问http://IP/

其他系统的用户请按照以下说明进行部署:

  • CentOS/Fedora/RHEL 7

KONG_LUA_SSL_TRUSTED_CERTIFICATE=/etc/ssl/certs/ca-certificates.crt替换为KONG_LUA_SSL_TRUSTED_CERTIFICATE=/etc/ssl/certs/ca-bundle.crt

  • CentOS/Fedora/RHEL 8

KONG_LUA_SSL_TRUSTED_CERTIFICATE=/etc/ssl/certs/ca-certificates.crt替换为KONG_LUA_SSL_TRUSTED_CERTIFICATE=/etc/ssl/certs/tls-ca-bundle.pem。并且将-v /etc/ssl/certs:/etc/ssl/certs替换为-v /etc/pki/ca-trust/extracted/pem:/etc/ssl/certs

运行Kong管理面板(Konga)

代码语言:shell复制
docker run -d 
--name konga 
--network kong-net 
-e "TOKEN_SECRET=your_token_secret" 
-e "NODE_ENV=production" 
-p 8007:1337 
--restart always 
pantsel/konga

此时访问http://IP:8007/即可进入Konga管理面板。第一次访问会引导你进行注册。注册的第一个用户为管理员用户。此时便可以愉快地管理Kong了。

Konga管理面板Konga管理面板

0 人点赞