Docker InitContainer从kubernetes中的容器映像使用config.template

Docker InitContainer从kubernetes中的容器映像使用config.template,docker,containers,kubernetes,Docker,Containers,Kubernetes,摘要: 我希望能够从Container获取InitContainer中的config.template文件 现有状态: 有些模板配置文件很少更改,并且包含占位符,存储在容器的图像中 当我们在kubernetes中创建容器时,图像中也存储了一个脚本,该脚本运行并用实际值替换所有占位符,然后启动服务 所需状态: 拥有一个Init容器,该容器是从generic映像构建的,其中包含的generic代码只需要获取模板文件的目录作为参数(作为目录数组),运行时从容器映像获取所有模板文件(抛出卷),将占位符替

摘要:
我希望能够从Container获取InitContainer中的config.template文件

现有状态:
有些模板配置文件很少更改,并且包含占位符,存储在容器的图像中
当我们在kubernetes中创建容器时,图像中也存储了一个脚本,该脚本运行并用实际值替换所有占位符,然后启动服务

所需状态:
拥有一个Init容器,该容器是从generic映像构建的,其中包含的generic代码只需要获取模板文件的目录作为参数(作为目录数组),运行时从容器映像获取所有模板文件(抛出),将占位符替换为实际值,并在与容器共享的卷中创建最终配置文件。 这样,Init容器就完成了准备工作,完成后,容器需要立即启动准备好的配置文件。 同样,Init容器的相同映像也可以与其他容器一起在pod中使用

问题:
Init容器首先启动,当Init容器运行时,映射到容器映像并假定包含config.template文件的卷仍为空

我的问题:
-在容器运行之前,是否有一种简单而好的方法从Init容器的容器映像中获取这些config.template文件?

-对于这个问题,有没有更好的解决方案来获得相同或相似的结果?

我认为没有办法从pod中的容器访问文件。在您的
init容器
和pod容器之间共享的
是空的,因为pod容器是空的(退出代码
0

因此,我建议您使用所需的
templates
创建一个模板。在
init容器内
。并在
init容器内
替换
模板
中来自
configMap
的占位符值,并将其转储到您在pod容器和pod的
init容器
之间共享的
卷中

现在,这将帮助您根据需要更改配置,您只需更新
configMap
资源。此外,替换占位符值的代码可能会更改,您只需为
init container
构建映像。这还有助于保持init容器映像的通用性

通过这种解耦,您的源代码容器保持独立于配置中的更改


另外,这个
init容器
configMap
可以根据您的喜好用于其他pod。

我认为没有办法从pod中的容器访问文件。在您的
init容器
和pod容器之间共享的
是空的,因为pod容器是空的(退出代码
0

因此,我建议您使用所需的
templates
创建一个模板。在
init容器内
。并在
init容器内
替换
模板
中来自
configMap
的占位符值,并将其转储到您在pod容器和pod的
init容器
之间共享的
卷中

现在,这将帮助您根据需要更改配置,您只需更新
configMap
资源。此外,替换占位符值的代码可能会更改,您只需为
init container
构建映像。这还有助于保持init容器映像的通用性

通过这种解耦,您的源代码容器保持独立于配置中的更改


此外,此
init container
configMap
也可以根据您的喜好用于其他pod中。

Tnx用于回答,但我希望模板保留在容器映像中。Tnx用于回答,但我希望模板保留在容器映像中。