你如何把你的源代码放入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文件将被自动挂载。 非常方便。
- Google Container Engine stdout日志不显示
- Google云端容器:从Dockerfile创build一个docker容器
- Kubernetes垃圾收集失败 – FreeDiskSpaceFailed&ImageGCFailed
- 在Kubernetes或Google Container Engine中等待作业/ Pod完成
- gclouddocker推送没有空间剩下的错误
- 在Mac上将Docker图像推送到Google Container Registry失败
- 如何使用kubernetes将rails应用程序部署到Google容器引擎?
- 连接到Kubernetes master,更新heapster
- Google云容器引擎vs正常vm