多个存储库的 Spring Cloud Config Server 回退

Posted

技术标签:

【中文标题】多个存储库的 Spring Cloud Config Server 回退【英文标题】:Spring Cloud Config Server fallback for multiple repositories 【发布时间】:2020-11-13 05:26:08 【问题描述】:

我们正在使用由 bitbucket 支持的 Spring Cloud 配置服务器来存储配置文件。我们在配置服务器的 application.yml 中配置了多个存储库。即使 bitbucket 关闭,我们也希望它可用。我们正在寻找一种可以缓存配置存储库的解决方案,如果 bitbucket 出现故障,它仍然可以提供不同存储库的属性。 下面是我的application.yml

spring:
  cloud:
    config:
      server:
        git:
          uri: git@bitbucket.org:config1.git
          ignoreLocalSshSettings: true
          privateKey: $PEM
          repos:
            service1:
              uri: git@bitbucket.org:config2.git
              ignoreLocalSshSettings: true
              privateKey: $PEM
            service2:
              uri: git@bitbucket.org:config3.git
              ignoreLocalSshSettings: true
              privateKey: $PEM

我尝试设置spring.cloud.config.server.git.basedir,但它只克隆基本配置仓库。如果 bitbucket 关闭,我们如何使配置服务器从本地服务。

【问题讨论】:

【参考方案1】:

使用basedir 属性是唯一的出路。我们就是这样使用它的:

spring:
  cloud:
    config:
      server:
        git:
          uri: git@bitbucket.org:config1.git
          ignoreLocalSshSettings: true
          privateKey: $PEM
          basedir: /home/user/config1-repo
          repos:
            service1:
              uri: git@bitbucket.org:config2.git
              ignoreLocalSshSettings: true
              privateKey: $PEM
              basedir: /home/user/config2-repo
            service2:
              uri: git@bitbucket.org:config3.git
              ignoreLocalSshSettings: true
              privateKey: $PEM
              basedir: /home/user/config3-repo

您如何尝试重现 git 不可用并强制配置服务器从本地服务器路径获取属性的场景。我建议你创建本地路径。并使用 git-bash 克隆本地 repo 目录中的配置 repo。例如,在这种情况下,进入 /home/user/localRepo 并在那里克隆你的配置 git repo。确保正确克隆所有文件和文件夹。

然后尝试重现 git not available 场景并检查您的配置服务器 MS 是否能够从本地目录获取属性。这是后备的唯一出路。

【讨论】:

我们最近遇到了一个有关 bitbucket 的问题,当时它已关闭,我们的应用程序的新副本无法获取配置。我正在为多个存储库寻找 basedir 属性 @SumitKumar :您能否展示一下如何在 application.yaml 文件中配置 basedir 属性。我建议您在 basedir 文件夹中克隆 config-repo。我认为您遇到了新副本而不是现有副本的问题。所以你可以试试我的方法,这将确保即使第一次搜索尝试失败,它也会从你当地的 basedir 中挑选。 我已经添加了你描述的方式,但是在那个目录中我只能看到 config1 repo 文件,我想为多个存储库解决它 @SumitKumar :您需要为您单独使用的每个 repo 提供一个 basedir。并且您需要将存储库克隆到相应的本地 basedirs 。我已经编辑了我的 application.yaml 快照。参考那个。 是的,它有效。我之前尝试过,但文件夹结构错误。谢谢

以上是关于多个存储库的 Spring Cloud Config Server 回退的主要内容,如果未能解决你的问题,请参考以下文章

带有本地存储库的 Spring Cloud Config Server 配置

Spring Cloud - 环境库的使用

spring-data-cassandra 存储库的多个键空间支持?

0702-spring cloud config-git仓库配置用户授权

Spring Cloud Config-Git后端

Spring Cloud Config-Git后端