gpt4 book ai didi

spring-boot - 如何在具有运行中的spring-boot应用程序的kubernetes容器/容器中运行cron?

转载 作者:行者123 更新时间:2023-12-02 12:17:33 25 4
gpt4 key购买 nike

我有一个在容器上运行的spring-boot应用程序。 API之一是文件上传API,每次上传文件时都必须对其进行病毒扫描。我们有uvscan来扫描上传的文件。我正在考虑将uvscan添加到基本镜像中,但是病毒定义需要每天进行更新。我创建了一个脚本来更新病毒定义。当前最简单的方法是在调用脚本的容器内运行cron。还有其他选择吗?可以将uvscan实用程序与应用程序pod隔离开来,并从应用程序中调用它吗?

最佳答案

有很多方法可以解决问题。希望我能帮助您找到最适合自己的。

从我的 Angular 来看,拥有一个CronJob会非常方便,它每天都会使用uvscan和更新的病毒定义数据库来构建和推送新的docker镜像。

在文件处理序列中,您可以使用Kubernetes API创建扫描Job,并为其提供对需要扫描的文件的共享volume的访问权限。

扫描作业将使用:latest image,如果新图像出现在注册表中,它将下载新图像并从中创建容器。

缺点是每天创建镜像时会占用“一定”数量的磁盘空间,因此您可能需要发明一种从注册表以及Kubernetes群集每个节点上的docker缓存中删除旧镜像的过程。

另外,您可以将AV数据库放在共享卷上,也可以使用Mount Propagation并独立于Pod进行更新。如果uvscan在read-only mode中打开AV数据库,则应该可以。

另一方面,通常需要花费一些时间将病毒定义加载到内存中,因此,将病毒扫描作为Deployment运行比将作业作为每天将新镜像推送到注册表后每天重新启动的Job更好。

关于spring-boot - 如何在具有运行中的spring-boot应用程序的kubernetes容器/容器中运行cron?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54888623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com