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用于回答,但我希望模板保留在容器映像中。