我有一个uses服务器(NGINX)和一个基于react的前端,它使用webpack来构建最终的静态源代码。
own服务器有自己的kubernetes deployment + service。
在but服务器可以为静态的html/js/css文件提供服务之前,需要构建前端-但在此之后,pod/container可以停止。
我的想法是在was服务器和前端pod之间共享一个volume。前端会将生成的文件写入volume,them服务器可以从那里为它们提供服务。只要前端源码有更新,就需要重新生成文件。
使用kubernetes工具实现这一目标的最佳方式是什么?现在,我正在使用init-container来构建--但这也会导致重启well服务器pod,这并不是必须的。
这是这个问题的最佳/唯一的解决方案吗?或者我应该使用kubernetes的jobs来完成这类任务?
发布于 2016-11-23 06:15:48
有多种方法可以做到这一点。以下是我对此的看法:
选项1:静态文件表示构建的源代码
在这种情况下,您想要提供的静态文件实际上应该打包并构建到您的nginx say服务器的docker镜像中(比如在html目录中)。当您想要更新您的前端时,您需要更新所用图像的版本,并更新pod。
选项2:静态文件表示状态
在这种情况下,您的方法是正确的。你的“状态”(就像数据库一样)存储在一个文件夹中。然后你运行一个初始化容器/任务来初始化'state‘,然后你的webserver pod就可以正常工作了。
我认为选项1会更好,原因有两个:
发布于 2016-11-23 08:33:49
作业、Init containers或gitRepo类型的卷将为您工作。
http://kubernetes.io/docs/user-guide/volumes/#gitrepo
在您的问题中,您不清楚为什么要在不简单地重新部署/更新Pod的情况下更新静态内容。
由于您必须以某种方式构建for服务器Docker镜像,因此最好将静态内容构建到镜像中:部署后没有移动部件,不需要卷或存储。总体而言,它更简单。
如果你使用任何一种自动化工具来构建Docker,那就很容易了。我个人使用Jenkins基于来自git repo的钩子来构建Docker镜像,并且只要代码发生变化,镜像就会被简单地重新构建和部署。
运行作业或初始化容器不会给你带来太多好处:确保web服务器继续运行,但有一个带有滚动更新的Deployment也很容易,它将在旧的Pod被拆除之前部署新的web Pod,并且您的服务器也将始终正常运行。
保持简单..。
https://stackoverflow.com/questions/40752016
复制相似问题