这里解释的一个二进制原则是:Binary说.
“构建一个二进制文件,您可以在发布管道的所有阶段识别和推广该二进制文件。在环境中保存特定于环境的详细信息。这可能意味着,例如,将它们保存在组件容器、已知文件或路径中。”
我看到许多开发工程师可以说违反了这个原则,为每个环境创建了一个对接者映像(例如,many qa,many prod等等)。我知道Docker支持不可变的基础结构,这意味着部署后不会更改映像,因此不会在部署后上传或下载配置。在不可变的基础设施和一个二进制原则之间是否存在一种权衡,或者它们是否能够相互补充?当涉及到将配置与代码分离时,Docker世界中的最佳实践是什么?下列哪一种方法应该采取..。
1)创建一个基本二进制映像,然后具有一个配置Dockerfile,该文件通过添加特定于环境的配置来增强该映像。(即我的应用程序->我的应用程序-prod)
2)在部署时向容器部署一个只有二进制的停靠映像,并通过环境变量等传递配置。
3)将Docker文件部署到容器后上传配置
4)从容器内正在运行的坞映像中从配置管理服务器下载配置。
5)将配置保存在主机环境中,并通过绑定挂载将其提供给正在运行的Docker实例。
还有其他更好的方法没有上面提到吗?
如何使用不可变的基础结构来执行一个二进制原则?这能做吗?还是做个交易?最好的做法是什么?
发布于 2016-06-08 10:59:58
我现在大约有两年部署码头集装箱的经验,所以我要谈谈我做了什么和/或知道如何工作。
所以,首先让我说容器绝对是不可变的(我甚至将我的容器标记为只读)。
主要方法:
我要考虑的主要事情是:
我倾向于选择将它们存储在中心位置(k/v存储、数据库)并动态更改它们的最复杂情况,因为我遇到了以下情况:
我可能漏掉了一些东西,但我想这应该足以引发人们思考什么才是对你的环境最好的。
发布于 2016-05-27 20:08:15
我过去是如何做到的,就是在执行构建后将令牌化集成到打包过程中。这些令牌可以在顶层管理平台工具的业务流程层中进行管理。因此,对于给定的令牌,有一个匹配的regex或xpath表达式。该令牌将链接到一个或多个配置文件,具体取决于所选择的关系。然后,当将此构建部署到容器中时,平台服务(即config mgmt)将使用与其环境有关的正确值戳出这些令牌。这些戳值很可能是从保险库中提取出来的。
https://stackoverflow.com/questions/37157043
复制相似问题