Spring Cloud 配置中心 Github SSH验证(一)

Spring Cloud 配置中心 Github SSH验证

概述

Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持,方便部署与运维。

目前有一些用的比较多的开源的配置中心,比如携程的 Apollo、阿里Nacos、百度的 Disconf 等,对比 Spring Cloud Config,这些配置中心功能更加强大。有兴趣的可以拿来试一试。

接下来,我们开始使用Spring Cloud来搭建一个配置中心,并以 github 作为配置存储。除了 git 外,还可以用数据库、svn、本地文件等作为存储。

Github SSH配置

密匙生成

Windows下生成密匙,可以直接使用Git Bash工具,执行ssh-keygen -m PEM -t rsa -b 4096命令

image-20200130201553870

在弹出来的选项直接按回车就可以了,密匙生成目录C:\Users\用户\.ssh

  • 公钥id_rsa.pub
  • 私钥id_rsa
配置SSH

点击右上角头像,弹出的菜单中,点击Settings进入设置

image-20200130205501744

点击SSH and GPG keys,进入SSH的key设置

image-20200130205550957

点击New SSH key,进行SSH的添加,记住这里的Title随便填写,Key就是我们的公钥,打开公钥内容全部复制粘贴到Key的输入框中,点击Add SSH key即可!公钥是ssh-rsa 开头

image-20200130205705772

添加公钥后就会显示

image-20200130205930159
校验密匙

这时我们回到Windows上,打开Git Bash,在执行ssh -vT git@github.com命令

image-20200130210138318

只要出现You've successfully authenticated就证明,已经验证成功了。

如果是内网搭建的Gitlab,可以使用 ssh -vT git@ip -p 端口命令

Spring Cloud 配置中心

配置文件存放

在github中新建一个仓库,这个仓库一定要是干净的,就是最好不要有其他文件存在,不然会报错。因为我们使用了SSH,所以这是一个私库,我存放的位置是local/eureka.properties

POM依赖
1
2
3
4
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
项目配置文件

properties文件

1
2
3
4
5
6
7
8
spring.cloud.config.server.git.uri=git@github.com:Fighting/hyper-config-repo.git
spring.cloud.config.server.git.strict-host-key-checking=false
spring.cloud.config.server.git.ignore-local-ssh-settings=true
spring.cloud.config.server.git.search-paths=/local
spring.cloud.config.server.git.private-key=-----BEGIN RSA PRIVATE KEY-----\n\
aaaa\
xxxx\n\
-----END RSA PRIVATE KEY-----

参数说明

  • spring.cloud.config.server.git.uri:配置的Github仓库的ssh地址
  • spring.cloud.config.server.git.strict-host-key-checking:true-使用用户名密码,false-使用ssh key
  • spring.cloud.config.server.git.ignore-local-ssh-settings:true-ssh 登陆方式
  • spring.cloud.config.server.git.search-paths:git仓库地址下的相对地址 多个用逗号”,”分割。
  • spring.cloud.config.server.git.private-key:私钥内容(可以使用变量代替),这里要注意几点
    • 第一行使用\n\结尾
    • 内容行使用\结尾
    • End结束之前使用\n\结尾

yaml文件

因我项目使用的properties,至于yaml就自行百度吧,应该相差不大。

启动验证

main类文件

1
2
3
4
5
6
7
8
@EnableConfigServer
@SpringBootApplication
public class ConfigApplication {

public static void main(String[] args) {
SpringApplication.run(ConfigApplication.class, args);
}
}

访问配置

我们在URL中输入http://localhost:8802/eureka/local

image-20200130213543634

Spring cloud config 的URL与配置文件的映射关系如下:

/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties

我这里的application = eureka,profile = local