Konga

Konga的本质:Konga是一个图形化界面,它最终是通过调用你配置的 Kong Admin API 来修改Kong的配置的。

文档参考:遇到复杂场景时,最好的老师依然是Kong官方文档

一、首次登录与初始化设置

  1. 访问Konga并注册:在浏览器中打开 http://<你的服务器IP>:1337。首次访问时,Konga会要求你注册一个管理员账户。填写用户名、邮箱和密码完成注册。
  2. 登录系统:注册成功后,Konga会自动跳转到登录页面,使用刚才注册的账号密码登录即可

二、 连接Konga与Kong网关

  1. 进入连接设置:登录成功后,你应该会看到"CONNECTIONS"或"Connections"界面。如果没有,请在左侧菜单或顶部导航栏中找到并点击 “Connections”。
  2. 填写Kong Admin API信息:
    • Connection name:为你这个Kong连接起个名字,比如"My-Kong"或"Production"。
    • Kong Admin URL:这是你Kong网关的Admin API地址。非常重要! 格式通常是 http://:8001
    • 如果你的Kong容器和Konga容器在同一个Docker网络(如 kong-net)中,你可以使用Kong的容器名和内部端口,例如:http://kong:8001。
    • 如果你希望通过宿主机IP访问,可能需要使用宿主机的IP和映射给Kong Admin API的端口(例如 http://localhost:8001 或 http://<宿主机IP>:8001)。
  3. 激活连接:信息填写完毕后,点击 “Active” 或 “Connect” 等按钮来激活并测试连接。如果一切正常,Konga会提示连接成功。

三、 Konga核心功能与使用介绍

连接成功后,你就可以使用Konga来管理Kong了。Konga的核心功能围绕以下几个概念展开,理解它们之间的关系很重要:

概念 (Concept)作用 (Role)类比 (Analogy)配置要点 (Key Configuration)
Upstream负载均衡组:代表一个虚拟主机名,用于对后端多个Target进行负载均衡。球队的名称Name:为Upstream命名(如 my-api-upstream)。
Target具体目标:代表一个物理服务(IP+Port),是Upstream组内的一个具体后端实例。必须先创建Upstream,才能添加Target。球队里的一个球员Target:后端服务的IP或主机名及端口(如 192.168.1.100:8080)。Weight:权重,流量分配比例。
Service服务抽象:是上游服务的抽象,可以直接指向一个具体的URL,也可以关联一个Upstream来实现负载均衡。比赛的战术安排Name:服务名称。Protocol:协议(HTTP/HTTPS)。Host:可填写具体URL或关联的Upstream名称。Port:端口。Path:路径(可选)。
Route路由规则:定义客户端请求的匹配规则(如路径、域名),将匹配的请求路由到指定的Service。根据球衣颜色决定把球传给谁Paths:匹配的请求路径(如 /api)。Hosts:匹配的域名(可选)。Service:选择该路由要关联的Service。

四、 创建服务 (Services) 和路由 (Routes)

这是最常用的功能,用于将外部请求转发到你的后端服务。

  1. 创建Service:
    1. 在左侧菜单中找到 “Services”,点击 “ADD NEW SERVICE”。
    2. 填写服务信息:
      • Name: 服务名称,如 “article-service”。
      • Protocol: 后端服务使用的协议,通常是 “http”。
      • Host: 这里很关键。如果你没有配置Upstream,直接填写你的后端服务的IP或域名(如 192.168.1.2)。如果你已经配置了Upstream,则填写你创建的 Upstream的名称(如 my-api-upstream)。
      • Port: 后端服务的端口,如 3000。
      • Path (可选): 后端服务的基础路径,如 /api。
    3. 点击 “Submit” 保存
  2. 创建Route:
    • 在 “Services” 列表中找到刚创建的服务,点击其名称进入详情。
    • 找到 “Routes” 选项卡,点击 “ADD ROUTE”。
    • 配置路由规则:
      • Name: 路由名称,如 “article-route”。
      • Paths: 请求需要匹配的路径,例如 /article/。回车,访问 http://:8000/article/ 的请求将会被转发到此服务。
      • Hosts (可选): 请求需要匹配的域名。
      • Methods (可选): 请求需要匹配的HTTP方法(GET, POST等)。
    • 点击 “Submit” 保存
    • 现在,你就可以通过Kong网关的代理端口(默认8000)加上你配置的路径来访问你的后端服务了: 如:http://:8000/article/list,http://127.0.0.1:8000/article/detail?id=1

五、 配置负载均衡 (Upstreams & Targets)

如果你的服务有多个实例,可以通过配置Upstream和Targets来实现负载均衡。

  1. 创建Upstream:
    • 在左侧菜单中找到 “Upstreams”,点击 “ADD NEW UPSTREAM”。
    • 填写 Name,例如 my-api-upstream。
    • 你还可以选择负载均衡算法(如 round-robin, least-connections)。
    • 点击 “Submit” 保存。
  2. 添加Targets:
    • 在Upstream列表中点击你刚创建的Upstream名称。
    • 找到 “Targets” 选项卡,点击 “ADD NEW TARGET”。
    • 填写你的后端服务实例的地址:
      • Target: 格式为 <IP或域名>:<端口>,例如 192.168.1.2:3000。注意不要带http://协议头。
      • Weight: 权重,用于控制流量分配的比例。
    • 点击 “Submit” 保存。
    • 你可以为同一个Upstream添加多个Targets。
    • 之后,在创建Service时,在Host字段中填写这个Upstream的名称(如 my-api-upstream),Kong就会将请求负载均衡到这些Targets上

六 、其他实用功能

  • 插件 (Plugins): Kong的强大之处在于其插件生态系统。你可以在 “Plugins” 菜单中全局启用插件,也可以在特定的Service、Route或Consumer上启用插件,例如限流、认证、日志记录等。
  • 消费者 (Consumers): 代表使用你的API的客户端或用户。你可以在这里创建消费者,并为他们配置认证凭证(如API Key、JWT),从而实现API的访问控制。