如何在没有 http 的情况下为 graphql apis 编写健康检查
Posted
技术标签:
【中文标题】如何在没有 http 的情况下为 graphql apis 编写健康检查【英文标题】:How to write health check for graphql apis without http 【发布时间】:2022-01-10 02:05:34 【问题描述】:我有一个 K8s 集群,其中有一个具有 Gjango + Graphql api 的 pod。
我需要编写一个运行状况检查作业,以确保我的 api 启动并运行。
我不想使用 http 样式的请求来检查健康状况。相反,我想使用 Django。 请指导我该怎么做?
【问题讨论】:
【参考方案1】:对于 Kubernetes 中所谓的“Liveness Probes”,您有 2 个选项:
命令 HTTP见:Configure Liveness, Readiness and Startup Probes
Django 和 GraphQL 是基于 HTTP 的,因此您可能应该考虑使用 HTTP 探针。如果您的服务上没有特定的健康检查端点,您可以识别一个示例(应该始终有效)并将其用作健康检查。
如果你想使用 HTTP 以外的东西,你唯一的选择是创建一些命令,当成功时返回 0 表示它是健康的,而当它不成功时返回其他值(通常是 1)表示它不健康。
【讨论】:
我不认为我理解这一点,但可能是我的问题不是自我解释的。所以我需要确保在 docker 容器内运行的 graphql 的健康状况。我不确定如何才能完成。 我理解了这个问题。使用 Kubernetes 进行健康检查有 2 种选择。使用 HTTP 或使用一些(非 HTTP)二进制文件。由于 GraphQL 通常运行在 HTTP 上,我认为你应该使用 HTTP。如果您不想使用 HTTP,那么唯一的选择是使用命令(二进制)。您的 API 需要具有特定的运行状况检查端点(您可以查询以检查其是否存在),或者您必须使用 API 上的现有方法并将其用作运行状况检查的代理。请参阅我提供的链接,详细了解如何使用 Kubernetes 进行健康(活性)检查。以上是关于如何在没有 http 的情况下为 graphql apis 编写健康检查的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有 MediaExtractor 的情况下为 H264 使用 MediaCodec
如何在没有连接的情况下为 postgres (Redshift) 生成 SQL 查询?
如何在没有 sudo 的情况下为 Python 安装包时避免权限被拒绝
如何在没有 web.config 的情况下为 aspnet_compiler.exe 指定 CompilerVersion?