【问题标题】:Clone only specific path - Spring Cloud Config Server仅克隆特定路径 - Spring Cloud Config Server
【发布时间】:2020-01-15 11:50:07
【问题描述】:

有什么方法可以让 spring 配置服务器只克隆特定路径而不是整个 git repo?当我在生产环境中运行它时,我可能不希望将整个代码库存储库克隆到某个位置,因为这总是存在风险。我已经完成了研究,但无法找到仅克隆 git repo 特定路径的方法。

一种解决方案是将配置托管在单独的存储库中。但这会破坏 12factor.net 的一个代码多个部署建议的目的。

另一种可能性是将属性复制到配置服务器的类路径中,然后使用本机配置文件加载它们。但这会破坏 Spring ConfigServer 的目的。

还请澄清在生产环境中运行 spring 配置服务器的最佳方式是什么?

【问题讨论】:

  • 您应该使用单独的 repo 进行配置
  • 但是根据微服务中的 12 个因素,如果我们使用单独的代码库进行配置,那么它会使一个代码库多次部署无效吗?
  • 我们将其视为外部化配置,与 env 中的 12factor.net 配置略有不同。
  • 但是这个外部化配置是针对微服务的,所以我正在尝试遵循 12factor.net 配置建议。
  • 我不知道该说什么

标签: spring-boot spring-cloud spring-cloud-config


【解决方案1】:

您应该将代码库与配置设置分开。

Repo 1:您的应用代码

Repo 2:您的 Spring Cloud Config 服务器代码

回购 3:您的配置设置

当您部署时,您正在部署代码。不是配置。配置更改不应需要新的部署。新部署可能需要更新配置更改,但两者通常是分离的。

配置可以在代码运行时动态更新。这与更新代码和部署应用程序完全分开。这就是外部化配置的全部意义所在。

TL;DR:您认为“一个代码多次部署”是错误的。配置已外部化。

【讨论】:

    【解决方案2】:

    我直接从 12factor.net 获取的

    应用有时会将配置存储为代码中的常量。这违反了十二因素,要求严格分离配置与代码。配置因部署而异,但代码没有。

    即使您不再将它们存储为常量,但仍然在同一个存储库中,与代码的分离还不够。使用单独的存储库进行配置。

    【讨论】:

    • 但是创建一个单独的仓库来存储配置再次违反了许多部署的代码。请查看问题 cmets 以进行相同的讨论。
    • 我在 12factor.net 页面上找不到许多部署的代码。我想这取决于您对部署的定义。更新 git 存储库通常不会被视为部署。
    • 这就是我所困惑的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    • 1970-01-01
    • 2018-06-14
    • 2021-02-21
    • 2016-06-04
    • 2017-02-19
    • 2018-10-11
    相关资源
    最近更新 更多