2017-05-25 40 views
0

摘要:
我希望能夠從集裝箱得到InitContainer config.template文件。InitContainer從kubernetes容器圖像config.template消耗

現有的狀態:
有模板配置文件,很少改變,包含佔位符,儲存在容器在圖像內。
當我們在kubernetes中創建容器時,腳本中還存儲了一個腳本,該腳本運行並將所有PlaceHolders替換爲真實值,然後啓動該服務。

期望狀態:
有一個初始化容器從與需要得到作爲參數只有模板文件的目錄(如目錄的陣列)的通用代碼,當它運行的通用圖像建它從容器的映像中獲取所有模板文件(拋出),將PlaceHolders替換爲實際值,並在與容器共享的卷中創建最終配置文件。 這樣Init-Container做準備,當它完成後Container需要立即用準備好的配置文件來啓動。 也可以在其他容器中使用與Init-Container相同的圖像。

問題:
初始化容器是啓動第一和映射到集裝箱形象,應該包含config.template文件體積仍然是空初始化容器運行時。

我的問題:
- 有一個簡單的和好方式運行容器之前獲得從初始化容器容器圖像的config.template文件?
- 這個問題有更好的解決方案來獲得相同或相似的結果嗎?

回答

1

我認爲沒有辦法從pod中的容器訪問文件到init-containersinit-container與容器的容器之間共享的volume爲空,因爲容器的容器是not started until all init-containers successfully exit(退出代碼爲0)。

所以我建議你做的東西的方式是創建一個configMap與你想要的templatesinit-container之內的Mount this configMap。在init-container裏面,替換來自configMaptemplate中的佔位符值,並將其轉儲到您已在容器容器與容器的init-container之間共享的volume中。

現在,這可以幫助您根據需要更改配置,只需更新configMap資源即可。此外,替換佔位符值的代碼可能會更改,您只需構建init-container的圖像即可。此外,這可以幫助您保持init-container圖像的通用性。

通過這種解耦,您的源代碼容器保持獨立於配置中的更改。

此外,init-containerconfigMap也可以用於其他窗格,只要您喜歡它。

+0

Tnx的答案,但我希望模板將保留在容器圖像。 – Evya2005