2017-05-25 47 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