我有一个带有Web服务器(NGINX)和基于React的前端的安装程序,该前端使用Webpack构建最终的静态源。
网络服务器具有自己的kubernetes deployment
+ service
。
在Web服务器可以提供静态html / js / css文件之前,需要先构建前端-但是之后,pod
/ container
可以停止。
我的想法是在Web服务器和前端volume
之间共享pod
。前端会将生成的文件写入volume
,网络服务器可以从那里为它们提供服务。只要前端源代码有更新,就需要重新生成文件。
使用kubernetes工具实现此目标的最佳方法是什么?
现在,我正在使用init-container
进行构建-但这也导致了网络服务器pod
的重启,这不是必需的。
这是解决此问题的最佳/唯一解决方案,还是我应该将kubernetes的jobs
用于此类任务?
最佳答案
有多种方法可以做到这一点。我是这样想的:
选项1:静态文件表示内置的源代码
在这种情况下,您实际上应该打包要提供的静态文件,并将其内置到您的nginx Web服务器的docker镜像中(在html目录中)。当您想要更新前端时,可以更新所使用的镜像的版本并更新Pod。
选项2:静态文件表示状态
在这种情况下,您的方法是正确的。您的“状态”(如数据库)存储在文件夹中。然后,您运行一个初始化容器/作业以初始化“状态”,然后您的Web服务器容器正常工作。
我相信选项1会更好的原因有两个:
关于kubernetes - 如何使用Kubernetes处理周期性的短期任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40752016/