pip*_*per 4 git ssh bitbucket ssh-keys spring-cloud-config
我正在尝试设置一个 spring 云配置服务器,它使用 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
Run Code Online (Sandbox Code Playgroud)
但是我们必须迁移以使用 ssh 密钥而不是具有以下配置的用户名和密码:
security.user:
name: xxxxx
password: xxxxx
cloud.config.server:
git:
uri: git@bitbucket.org:abc/configs.git
Run Code Online (Sandbox Code Playgroud)
id_rsa 私钥文件与配置文件位于 .ssh 文件夹中:
Host bitbucket.org
StrictHostKeyChecking no
IdentityFile /home/user/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)
最初的 git clone 工作正常,当我点击 时,我们能够毫无问题地获取配置http://xxxx:xxxx@localhost:8899/app/dev。
但在那之后,日志中有很多 WARN 无法从远程获取。在初始克隆之后,还可以正确获取对配置的进一步更新。但不知道为什么日志中有这么多警告,这让我很担心。
2020-07-31 11:38:51.636 WARN 1 --- [io-48899-exec-7] .cseMultipleJGitEnvironmentRepository:无法为主远程获取远程:git@bitbucket.org:abc/configs.git
正如我之前提到的,这只会在我们使用 SSH 密钥进行克隆时发生。同一个项目与 https 克隆一起工作正常。有什么我想念的吗?
如果将来有人遇到此问题,我们可以通过在 config-server 中设置 refreshRate 来解决此问题。
您可以使用 spring.cloud.config.server.git.refreshRate 控制配置服务器从 Git 后端获取更新配置数据的频率。此属性的值以秒为单位指定。默认情况下,该值为 0,这意味着配置服务器将在每次请求时从 Git 存储库中获取更新的配置。
默认情况下,它设置为 0。由于它已注册到 consul,其他服务的 consul 健康检查端点以每秒过多的请求使配置服务器不堪重负,这导致配置服务器从 bitbucket 中拉取太多次。一旦将 refreshRate 设置为 5 秒,配置服务器就开始每 5 秒拉取一次配置,现在已经稳定了。一周过去了,配置服务按预期工作,SSH 密钥没有任何问题。
| 归档时间: |
|
| 查看次数: |
1627 次 |
| 最近记录: |