Docker 安装 KONG 带你玩转 API 网关

本文涉及的产品
AI 网关免费试用,2900元额度,限量100份
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生 API 网关,700元额度,多规格可选
简介: **摘要:**在微服务架构中,API网关Kong作为流行开源选择,提供身份验证、安全和流量控制等功能。通过Docker部署Kong简单高效。步骤包括:创建Docker网络,部署PostgreSQL数据库,初始化Kong数据库,启动Kong容器,并检查运行状态。此外,安装Konga管理界面便于直观管理Kong。使用Docker命令行,逐步设置环境变量和网络连接,即可完成安装。当不再需要时,可清理相关容器和网络。Kong结合Konga,为API管理提供强大且用户友好的解决方案。

在当今的软件开发中,API 网关已成为微服务架构中不可或缺的一环。它不仅简化了服务间的通信、提供了统一的入口,还能在安全、监控、限流等方面发挥巨大作用。

今天,我们就来聊聊如何通过 Docker 快速部署 KONG —— 一个流行的开源 API 网关。

KONG 简介

KONG 是基于 Nginx和 OpenResty (Nginx + Lua)的云原生、高性能、可扩展的微服务 API 网关。它以插件形式提供丰富的功能,包括但不限于:

  • 身份认证(如 JWT、basic-auth)
  • 安全性(如 IP 黑白名单)
  • 监控
  • 流量控制

KONG 与 Nginx 和 OpenResty 的关系

为了更好地理解 KONG,我们首先要明白它与 Nginx、OpenResty 的关系:

  • Nginx:是一个高性能的 HTTP 服务器和反向代理,以及一个 IMAP/POP3 代理服务器。
  • OpenResty:是在 Nginx 上集成了 Lua-nginx-module,允许使用 Lua 脚本语言扩展 Nginx 的能力。
  • KONG:则是在 OpenResty 基础上,加入了自定义框架和一系列企业级功能实现的 API 网关。

Docker 安装 KONG

安装 KONG 的一种便捷方式是使用 Docker。下面,我们将详细介绍如何通过 Docker 进行安装。

步骤 1:创建容器网络

首先创建一个 Docker 网络,以便容器间可以互相通信。

docker network create kong-net

步骤 2:搭建数据库

KONG 支持 Cassandra 和 PostgreSQL 数据库。这里,我们以 PostgreSQL 为例。

# 创建一个数据卷
docker volume create kong-volume
# 查看所有的数据卷
docker volume ls

docker run -d --name kong-database \
--network=kong-net \
-p 5432:5432 \
-e "POSTGRES_USER=konguser" \
-e "POSTGRES_DB=kong" \
-e "POSTGRES_PASSWORD=kongpwd" \
# 挂载卷以便持久化数据到宿主机
-v kong-volume:/var/lib/postgresql/data \
postgres:9.6

步骤 3:数据库初始化

使用 docker run --rm 来初始化数据库,该命令执行后会退出容器而保留内部的数据卷。并且,要注意:一定要跟你声明的网络、数据库类型、host 名称一致。

docker run --rm --network=kong-net \
# 如果使用的是 Cassandra 时,则需要设定为 cassandra 我这里使用的是 PostgreSQL 因此则设定为 postgres
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_PG_USER=konguser" \
-e "KONG_PG_PASSWORD=kongpwd" \
# 企业版才会用到这个配置,非企业版设定此参数也无所谓
-e "KONG_PASSWORD=test" \
kong/kong-gateway:3.4.1.1 kong migrations bootstrap

步骤 4:启动 KONG

一切准备就绪后,我们可以启动 KONG 容器了。

docker run -d --name kong-gateway \
--network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_PG_USER=konguser" \
-e "KONG_PG_PASSWORD=kongpwd" \
-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" \
-e "KONG_ADMIN_GUI_URL=http://localhost:8002" \
# 仅仅企业版需要设定证书
-e KONG_LICENSE_DATA \
-p 8000:8000 \
-p 8443:8443 \
-p 8001:8001 \
-p 8444:8444 \
-p 8002:8002 \
-p 8445:8445 \
-p 8003:8003 \
-p 8004:8004 \
kong/kong-gateway:3.4.1.1

步骤 5:检查 KONG 是否运行正常

最后,我们来检查 KONG 是否成功运行。

curl -i -X GET --url http://{
   YOUR_SERVER_IP}:8001/services

# 你也可以通过浏览器访问以下地址查看 KONG 管理界面
http://{
   YOUR_SERVER_IP}:8002

至此,你已经成功地在 Docker 上部署了 KONG。

安装 Konga

Konga 是一个开源的 KONG 管理界面,可以帮助我们更方便地管理和监控 KONG。

# 拉取最新版本的 Konga
docker pull pantsel/konga

通过以下命令预装 Konga 所需的数据库:

# 这里的 172.18.0.2 要是 kong-database 容器的 IP 地址
# konguser 和 kongpwd 是前面安装 PostgreSQL 是用到的账号和密码,konga 数据库专门为 Konga 设定(执行这条命令时,如果 konga 数据库不存在,则会自动创建)
docker run --rm pantsel/konga \
--network=kong-net \
-c prepare \
-a postgres \
-u postgresql://konguser:kongpwd@172.18.0.2:5432/konga

安装 Konga:

docker run -d --name konga \
-p 1337:1337 \
--network kong-net \
-e "NODE_ENV=production" \
-e "DB_ADAPTER=postgres" \
-e "DB_HOST=kong-database" \
-e "DB_PORT=5432" \
-e "DB_USER=konguser" \
-e "DB_PASSWORD=kongpwd" \
-e "DB_DATABASE=konga" \
pantsel/konga

可以通过浏览器访问 http://{YOUR_SERVER_IP}:1337 来检测安装是否成功。第一次访问时,需要注册管理员账号,通过注册之后,然后在 CONNECTIONS 中添加 Kong 服务的管理路径 http://kong-gateway:8001 (因为这几个容器都连接了 kong-net 网络,因此这里可以通过容器名称作为 IP 地址,亦即这里的 kong-gateway) 即可管理 Kong。

如果需要清除所有容器时

docker kill kong-gateway
docker kill kong-database
docker kill konga
docker container rm kong-gateway
docker container rm kong-database
docker container rm konga
docker network rm kong-net
docker volume rm kong-volume

通过本文的步骤,你应该能够成功地在 Docker 中安装和运行 KONG API 网关以及 Konga 管理界面。KONG 提供了强大的 API 管理功能,而 Konga 则提供了一个用户友好的界面来管理 KONG 的各个方面。

希望这篇文章能帮助你快速入门 KONG,赶快动手试试吧!

相关文章
|
4月前
|
人工智能 安全 API
Agent 工程师绕不开的必修课:API 网关 vs API 管理
本文探讨了“API管理”与“API网关”的起源、发展及差异,二者分别服务于API生命周期的不同阶段。API网关从流量网关演进至AI网关,承担运行时请求控制;API管理则从接口文档化发展到商业化平台,关注全生命周期治理。两者在实际应用中协同工作,通过分层架构和策略联动实现高效运营。未来,随着大模型应用的兴起,AI网关和MCP Server管理将成为新趋势,推动API技术迈入智能化和服务化的新阶段。
Agent 工程师绕不开的必修课:API 网关 vs API 管理
|
4月前
|
Docker 容器
Docker网关冲突导致容器启动网络异常解决方案
当执行`docker-compose up`命令时,服务器网络可能因Docker创建新网桥导致IP段冲突而中断。原因是Docker默认的docker0网卡(172.17.0.1/16)与宿主机网络地址段重叠,引发路由异常。解决方法为修改docker0地址段,通过配置`/etc/docker/daemon.json`调整为非冲突段(如192.168.200.1/24),并重启服务。同时,在`docker-compose.yml`中指定网络模式为`bridge`,最后通过检查docker0地址、网络接口列表及测试容器启动验证修复效果。
|
9月前
|
监控 Cloud Native 安全
基于 API 网关践行 API First 开发实践
API First 开发模式的核心在于:以 API 为先,将其视为“头等公民”,在构建应用、服务及集成之前,应优先定义并设计 API 及其配套。API First 作为一种相对较新的开发模式,它已逐渐流行并获得业内的广泛认可。
430 163
|
9月前
|
编解码 运维 Kubernetes
政采云业务网关实践:使用 Higress 统一替代 APISIX/Kong/Istio Ingress
政采云基础架构团队技术专家朱海峰介绍了业务网关项目的背景和解决方案。
471 95
|
12月前
|
人工智能 监控 负载均衡
一文详述:AI 网关与 API 网关到底有什么区别?
近年来,AI发展迅猛,大模型成为推动业务创新的关键力量。企业面临如何安全管理和部署AI应用的挑战,需设计既能满足当前需求又可适应未来发展的基础架构。AI网关应运而生,在集成、管理和优化AI应用中扮演重要角色。本文探讨AI网关与API网关的区别,分析AI系统为何需要专门网关,并提供选择合适AI网关的建议。AI网关不仅支持多种模型,还具备高级安全性和性能优化功能,有助于企业在复杂环境中灵活应用AI技术。
504 1
|
7月前
|
人工智能 测试技术 API
Windows用户必备:Postman v11详细安装指南与API测试入门教程(附官网下载
Postman是全球领先的API开发与测试工具,支持REST、SOAP、GraphQL等协议调试。2025年最新版v11新增AI智能生成测试用例、多环境变量同步等功能,适用于前后端分离开发、自动化测试、接口文档自动生成及团队协作共享API资源。本文详细介绍Postman的软件定位、核心功能、安装步骤、首次配置、基础使用及常见问题解答,帮助用户快速上手并高效利用该工具进行API开发与测试。
|
人工智能 Cloud Native 安全
统一多层网关好处多,阿里云云原生 API 网关打造全能型网关
本文分享了作为一款全能型网关【云原生 API 网关】是如何帮助企业落地统一网关架构的。
8675 116
|
人工智能 API
阿里云微服务引擎及 API 网关 2024 年 6 月产品动态
阿里云微服务引擎及 API 网关 2024 年 6 月产品动态
215 96
|
11月前
|
监控 安全 API
拥抱开源:下一代API管理工具Kong的崛起
【10月更文挑战第27天】在微服务架构和API经济的推动下,API管理成为软件开发的关键环节。Kong作为开源的API管理平台,凭借其灵活性和强大功能,受到开发者的青睐。本文探讨了Kong的核心特性、使用技巧及其在企业中的应用,帮助读者更好地理解和利用这一工具。