你如何把你的源代码放入Kubernetes?

我是Kubernetes的新手,所以我想知道在将应用程序的源代码放入Kubernetes或类似环境的容器中时,最佳做法是什么?

我的应用程序是一个PHP,所以我有PHP(fpm)和Nginx容器(从Google容器引擎运行)

起初,我有git卷,但没有办法改变这样的应用程序版本,所以我切换到emptyDir,并在我的源代码在一个zip文件中的一个图像,将解压到这个卷开始,现在我有两个图像通过git单独的git目录分开的源代码,所以我有/ app和/ app-git。

这是好事,因为我不需要共享或configuration卷(较less的资源和configuration),应用程序的图层在这两个图像中重复使用,所以不会影响空间,因为它是内置的“基地”,所以我可以简单地调整我的dockerfile命令在最后切换到不同的分支或标签很容易。

我想通过在构build过程中提供凭据作为参数直接从源代码下载源代码的档案,但是这并不起作用,因为我的repo,bitbucket创build的档案最后一个提交id附加到目录,所以没有办法知道什么解压档案会导致,所以我被困在git本身。

你有什么处理源代码的方法?

理想情况下,您可以使用连续交付模式,这意味着使用Travis CI,Bitbucketpipe道或Jenkins在代码更改上构build映像。

也就是说,每当您的代码发生变化时,您的自动构build将被触发并构build一个新的Docker映像,其中将包含您的源代码。 然后,您可以触发部署滚动更新以使用新映像更新Pod。

如果您拥有dynamic内容,则可能会将此存储设置为持久存储,并将在Pod更新中重新加载。

我们传统上用PHP做的是在运行时重叠。 基本上容器将有一个容量安装到它与您的git仓库的部署密钥。 这将允许你执行git pull操作。

更多button的方法是自定义标记的代码图像从fpm扩展或您使用的任何图像。 这样,您将运行YourImage的1.3版本,其中YourImage将包含您的应用程序的代码版本1.3。

尝试利用持续集成和持续部署。 您可以使用Jenkins作为CI / CD服务器,并创build一些作业,用于构build图像,推送图像和部署图像。

我build议把你的源代码放入docker镜像,而不是git repo。 您也可以从Docker镜像提取configuration文件。 在kubernetes v1.2中,它提供了新的特性“ConfigMap”,所以我们可以把configuration文件放在ConfigMap中。 运行pod时,configuration文件将被自动挂载。 非常方便。