首页 > 解决方案 > 使用外部程序处理 REST 请求的最佳方式?

问题描述

TL;DR
如何设置轻量级 Web 服务器来执行外部程序来处理 REST 请求?

长版
我们通过 Helm 在 Kubernetes 中部署了一组服务和数据库。有一些可执行文件可以执行我需要执行的维护、清理、备份、恢复等(一些是按需执行的,一些是定期执行的)。
我想将一个小型、轻量级的 Web 服务器停放在可以访问二进制文件的地方,并在处理 REST 请求时执行它们。

我看过带有 CGI 模块的 lighttpd 或 nginx,但我对这些没有经验。
你有什么建议吗?你有一个小例子来展示如何做吗?

标签: dockerrestkubernetesservercgi

解决方案


这是 k8s 原生方法:

... a set of services and databases deployed in Kubernetes... some executables that perform maintenance, cleanup, backup, restore etc...some on-demand & some periodically

如果您可以将这些“可执行文件”烘焙到映像中,则可以将这些程序按需运行为k8s job,并将重复作业安排为k8s cronjob。如果这在您的上下文中是可能的,那么您可以创建一个具有足够权限来调用作业/cronjob api 的 k8s 角色,并将该角色绑定到专用的 k8s 服务帐户。

然后,您使用您选择的任何语言/框架构建一个迷你 Web 应用程序,使用专用服务帐户在 k8s 上运行此 Web 应用程序,使用 NodePort/LoadBalancer 将您的 pod 公开为服务以接收 GET/POST 请求。最后,您直接 api 调用 k8s api-server以根据您的逻辑运行作业。


推荐阅读