2016-12-05 62 views
6

我是Kubernetes的新手,所以我想知道什麼是將應用程序的源代碼放入Kubernetes或類似環境中的容器中的最佳實踐?你如何將你的源代碼放入Kubernetes?

我的應用程序是一個PHP所以我PHP(FPM)和Nginx的容器(從谷歌集裝箱引擎運行)

起初,我有git的音量,但沒有改變應用程序的版本是這樣這樣的方式我切換到emptyDir,並將我的源代碼放在一個圖像中的zip壓縮文件中,在開始時將其解壓縮到此卷中,現在我通過具有單獨git目錄的git將兩個圖像中的源代碼分開,因此我擁有/ app和/ APP-git的。

這很好,因爲我不需要共享或配置卷(較少的資源和配置),應用程序的圖層在這兩個圖像中都被重複使用,所以對空間沒有影響,因爲它是git「基礎」是內置的我可以在最後調整我的dockerfile命令,並輕鬆切換到不同的分支或標記。

我想通過在構建過程中提供憑據作爲參數直接從存儲庫下載源代碼的存檔,但是這並不起作用,因爲我的repo,bitbucket創建的存檔的最後一個提交ID附加到目錄,所以沒有要知道解壓縮文件會導致什麼結果,所以我被git卡住了。

你是如何處理源代碼的?

回答

0

我們在傳統上使用PHP所做的是在運行時重疊。基本上容器將有一個安裝到它的容量與部署密鑰到你的git倉庫。這將允許您執行git pull操作。

更容易搞定的方法是將代碼的自定義標記圖像從fpm或您使用的任何圖像擴展而來。這樣,您將運行YourImage的1.3版本,其中YourImage將包含您的應用程序的代碼版本1.3。

1

理想情況下,您將使用連續傳送模式,這意味着使用Travis CI,Bitbucket管道或Jenkins在代碼更改上構建映像。

也就是說,每當您的代碼發生變化時,您的自動構建將被觸發並構建一個新的Docker映像,其中將包含您的源代碼。然後,您可以觸發部署滾動更新以使用新映像更新Pod。

如果您有動態內容,則可能會將此存儲設置爲持久性存儲,並將在Pod更新中重新掛載。

+0

circleci上的水晶般清晰的教程(假設你在gce上,在問題中標記)https://circleci.com/docs/continuous-deployment-with-google-container-engine/和https:// circleci的.com /文件/ Google-AUTH / – Ben

0

嘗試利用持續集成和持續部署。您可以使用Jenkins作爲CI/CD服務器,並創建一些用於構建映像,推送映像和部署映像的作業。

我建議把你的源代碼放入docker鏡像,而不是git repo。您也可以從Docker鏡像提取配置文件。在kubernetes v1.2中,它提供了新的特性'ConfigMap',所以我們可以將配置文件放在ConfigMap中。運行pod時,配置文件將自動掛載。這非常方便。

相關問題