我正在尝试设置一个春季云配置服务器,该服务器使用SSH密钥从git存储库中获取配置。它与springBootVersion 2.1.0.RELEASE和springCloudVersion Greenwich.M3一起运行。
当使用带有以下配置的用户名和密码的https bitbucket URI时,配置服务可以正常工作而没有问题:
security.user:
name: xxxxx
password: xxxxx
cloud.config.server:
git:
uri: https://bitbucket.org/abc/configs.git
username: uname
password: pass
但是我们必须进行迁移以使用ssh密钥而不是用户名和密码,并具有以下配置:
security.user:
name: xxxxx
password: xxxxx
cloud.config.server:
git:
uri: git@bitbucket.org:abc/configs.git
id_rsa私钥文件位于.ssh文件夹中,带有配置文件:
Host bitbucket.org
StrictHostKeyChecking no
IdentityFile /home/user/.ssh/id_rsa
最初的git克隆工作正常,当我点击http://xxxx:xxxx@localhost:8899/app/dev
时,我们能够毫无问题地获取配置。
但是在那之后,日志中有很多警告无法从远程获取。初始克隆后,还将正确获取对配置的进一步更新。但是不确定为什么在日志中会出现这么多WARN并引起我的关注。
2020-07-31 11:38:51.636警告1 --- [io-48899-exec-7] .cseMultipleJGitEnvironmentRepository:无法为主远程获取远程:git@bitbucket.org:abc / configs.git
正如我前面提到的,这仅在我们使用SSH密钥进行克隆时发生。相同的项目可以与https clone一起正常工作。有什么我想念的吗?
答案 0 :(得分:2)
万一将来有人遇到此问题,我们可以通过在config-server中设置refreshRate来解决此问题。
您可以控制配置服务器的频率 使用以下命令从您的Git后端获取更新的配置数据 spring.cloud.config.server.git.refreshRate。此属性的值 以秒为单位指定。默认情况下,该值为0,表示配置 每次服务器都会从Git仓库中获取更新的配置 这是要求的。
默认情况下将其设置为0。由于已向consul注册,因此其他服务的consul healthcheck端点每秒以太多请求淹没config-server,从而导致配置服务器从bitbucket提取请求的次数过多。 。将refreshRate设置为5s后,配置服务器开始仅每5秒提取一次配置,并且现在稳定。 已经过去了一个星期,并且配置服务正在按预期运行,而SSH密钥没有任何问题。