docker - 使用外部程序处理 REST 请求的最佳方式?
问题描述
TL;DR
如何设置轻量级 Web 服务器来执行外部程序来处理 REST 请求?
长版:
我们通过 Helm 在 Kubernetes 中部署了一组服务和数据库。有一些可执行文件可以执行我需要执行的维护、清理、备份、恢复等(一些是按需执行的,一些是定期执行的)。
我想将一个小型、轻量级的 Web 服务器停放在可以访问二进制文件的地方,并在处理 REST 请求时执行它们。
- 服务器需要有一个小的内存占用
- 流量将非常轻(例如每个请求之间的分钟数)
- 安全性不是很重要(它将在我们的信任区域内运行)
- 服务器需要处理 GET 和 POST(即传递二进制内容 TO & FROM 外部程序)
我看过带有 CGI 模块的 lighttpd 或 nginx,但我对这些没有经验。
你有什么建议吗?你有一个小例子来展示如何做吗?
解决方案
这是 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以根据您的逻辑运行作业。
推荐阅读
- c - libgit2 - c: 我怎么知道正在使用哪个版本
- c - Create partitions on a disk, and put a filesystem on them with C under linux?
- python - 当我抓取网站时,我的产出物品去哪里了?
- heroku - 当 Heroku Papertrail 日志记录达到每日 10 MB 的限制时会发生什么?
- guidewire - 导丝政策中心有多少种捆绑
- node.js - 如何使用带条带的 JWT 来检索 paymentIntent?
- javascript - Javascript OOP 问题 - 更改元素属性
- sql - 具有限制/Rownum 的 Oracle JSON_ARRAYAGG
- python - python,从列表中的字符串中删除字符
- sas - 使用 PROC TTEST,分析 stat1.german 数据集