You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Rancher K8s中部署的Kong Admin API访问/services报404

问题排查与解决:Kong Admin API 缺少 /services 等核心路径

核心原因分析

你的情况说明Kong当前运行在Kubernetes Ingress Controller模式而非传统的Admin API管理模式——根路径返回的K8s相关路径列表(比如/ingress、/status)是Kong Ingress Controller的管理端点,而非原生Kong Admin API的端点。

解决步骤

1. 检查并启用原生Admin API的Helm配置

默认情况下,Kong Helm chart可能优先启用Ingress Controller模式,需显式开启原生Admin API服务:

  • 查看当前Helm配置:
    helm get values kong -n <你的命名空间>
    
  • 若未包含admin相关配置,添加以下内容后重新升级:
    admin:
      enabled: true
      service:
        type: ClusterIP # 根据需求可改为NodePort/LoadBalancer
    
    执行升级命令:
    helm upgrade kong kong/kong -n <你的命名空间> -f <自定义values文件>
    

2. 验证Admin API的正确访问方式

  • 若使用ClusterIP类型服务,通过端口转发访问:
    kubectl port-forward svc/kong-admin 8001:8001 -n <你的命名空间>
    
    此时再调用curl localhost:8001/services应返回正常响应。
  • 注意:不要混淆Kong Ingress Controller的管理端口与原生Admin API端口——部分配置下两者可能复用端口,但运行模式不同会导致端点差异。

3. 确认Kong运行在db模式

检查Kong pod的环境变量,确认数据库配置为PostgreSQL:

kubectl exec -it <kong-pod-name> -n <你的命名空间> -- env | grep KONG_DATABASE

若输出不是postgres,在Helm values中补充配置:

env:
  database: postgres
postgresql:
  enabled: true # 使用外部PostgreSQL时设为false,需额外配置external参数

4. 检查数据库初始化状态

确认PostgreSQL与Kong连通且初始化完成:

  • 查看Kong pod日志,确认数据库连接成功:
    kubectl logs <kong-pod-name> -n <你的命名空间> | grep "database connection established"
    
  • 若存在初始化失败,手动执行数据库迁移:
    kubectl exec -it <kong-pod-name> -n <你的命名空间> -- kong migrations bootstrap
    

验证测试

完成配置后,重新端口转发Admin API服务,执行以下验证:

  • curl localhost:8001:应返回原生Kong Admin API的端点列表,包含/services、/routes
  • curl localhost:8001/services:应返回空数组或已配置的服务列表(状态码200)

内容的提问来源于stack exchange,提问作者abhinavkumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 11:40:59