【问题标题】:How can I expose kong admin api using kong k8 ingress?如何使用 kong k8 入口公开 kong admin api?
【发布时间】:2021-04-08 11:58:35
【问题描述】:

我为我们的 kubernetes 部署了 kong 入口控制器,我们正在使用它来路由我们的微服务。

现在我想公开我的管理 API 以使用其他功能并获取监控统计信息。请有人可以帮助我。

没有任何文档可以帮助我解决这个问题。

【问题讨论】:

  • 您好,请问您指的是在端口8444 上可用的CONTROLLER_KONG_ADMIN_URL 吗?

标签: google-kubernetes-engine kong-ingress


【解决方案1】:

假设我们关注的是:

管理 API

这是 Kong 公开其管理 API 的端口。因此,在生产环境中,该端口应该被防火墙保护以防止未经授权的访问。

  • 8001 提供 Kong 的 Admin API,您可以使用它通过 HTTP 操作 Kong。见admin_listen。
  • 8444 提供相同的 Kong Admin API,但使用 HTTPS。请参阅 admin_listen 和 ssl 后缀。

-- Docs.konghq.com: 2.3.X: Configuration: Admin listen

从 Kubernetes/GKE 的角度来看,您可以使用以下任一方式访问此端口:

  • $ kubectl port-forward deployment/ingress-kong -n kong 8444:8444:
    • 此选项允许您从主机查询https://localhost:8444
  • Service:
    • 修改Kong Ingress的Service
    • 修改Kong Ingress的Deployment

附注!

您也可以使用Ingress 资源公开它,但您需要创建一个指向Admin API 的Service,修改Deployment 并应用指向此@ 的Ingress 资源987654339@


专注于使用Service 公开此 API:

  • 编辑Service:kong-proxy并添加:
  - name: api
    protocol: TCP
    port: 8444 
    targetPort: 8444
  • 编辑Deployment:kong-ingress
        - name: KONG_ADMIN_LISTEN
          value: 0.0.0.0:8444 ssl # <-- from 127.0.0.1

重要!

以上修改会将您的 API 暴露给外部来源(假设您的最后一个问题与 GKE 的内部 lb 没有任何联系)。请参阅 Kong 的文档以获取有关此问题的支持:


其他资源:

【讨论】:

  • 非常感谢???
  • 谢谢。 Kong确实应该在编写文件方面做得更好。这花了我很多时间。
  • 我仍然无法向 kong 入口控制器的管理 api 发送请求。既不通过 127.0.0.1:8444 也不通过 kong-proxy 端点 ip 地址:8444。我收到连接被拒绝错误。有什么问题?
  • 所以您是说即使您尝试从 localhost(直接从 Pod)连接到它,它也不起作用?我会检查 Kong 的配置,监听的端口。
猜你喜欢
  • 2021-05-25
  • 1970-01-01
  • 1970-01-01
  • 2019-02-08
  • 1970-01-01
  • 2021-09-25
  • 2019-04-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多