Jenkins 什么';存储12因素应用程序配置的过程是什么?
因此,我一直在构建我的应用程序,主要是作为12因素应用程序,现在查看配置部分 目前,我有单独的开发和生产配置文件,在构建过程中,我们要么构建开发映像,要么构建生产映像。代码是100%相同的,唯一改变的是配置 现在我100%地理解,在一个12因素的应用程序中,配置应该来自外部源,例如:环境变量,或者像vault这样的安全存储等等 因此,各种文章和博客都没有提到配置是如何存储/处理的。如果代码在它自己的git repo中分离,并且没有存储配置,那么我们如何处理配置Jenkins 什么';存储12因素应用程序配置的过程是什么?,jenkins,build,kubernetes,dcos,12factor,Jenkins,Build,Kubernetes,Dcos,12factor,因此,我一直在构建我的应用程序,主要是作为12因素应用程序,现在查看配置部分 目前,我有单独的开发和生产配置文件,在构建过程中,我们要么构建开发映像,要么构建生产映像。代码是100%相同的,唯一改变的是配置 现在我100%地理解,在一个12因素的应用程序中,配置应该来自外部源,例如:环境变量,或者像vault这样的安全存储等等 因此,各种文章和博客都没有提到配置是如何存储/处理的。如果代码在它自己的git repo中分离,并且没有存储配置,那么我们如何处理配置 我们是否将实际配置值存储在单独的g
我们是否将实际配置值存储在单独的git上,然后通过使用某种触发器的构建过程在目标环境(Kubernet config map、marathon JSON config、Vault等)上合并/推送/执行这些值?没有标准,但我观察到的是一些常见行为,如:
例如,在我的研究案例中,在专用存储库上分离配置是有意义的,因为生产环境有50多个集群,其中一个集群有自己的隔离堆栈,还有不同的团队管理自己的服务并使用公共支持服务(db、api、streams…)。在我看来,只要事情变得更加复杂和交叉共享,在独立的存储库上分离配置就更有意义,因为在多个集群上有多个团队和资源。目前,我们有buildImageDev和buildImageProd任务,它们使用conf-dev.json和conf-prod.json,并且与代码一起存在。代码100%相同,只是配置文件名发生更改。但也有一些情况,人们在将dev值复制到prod值时犯了剪切粘贴错误。另一种选择是与我们对待第三方应用程序的做法相同,并使用单独的回购来持有这些应用程序中每一个的配置。示例:卡夫卡、Elasticsearch等。。。因此,每个配置都有自己的回购协议。因此,我们也可以这样对待我们的应用程序。在这种情况下,我建议您在映像规范(dockerfile)中描述一个用于放置配置文件的卷,使应用程序(进程)读取该卷,否则将采用默认值,并在编排过程中,按podSpec上的键装载configmap,并使每个环境的configmap不同。或者,如果你的应用程序支持envvar,请尝试在配置文件上使用envvar参数化,因为这可能会给你一点额外的灵活性。是的,现在我将配置文件复制到图像中。但是,您将在哪里存储所有configmap值,相同的repo还是单独的repo?