spring-config-server 구축시 구성파일 저장소로 파일시스템과 github을 사용할 수 있는데
안정적인 형상관리로 인해 github 이 선호된다.
github으로 접속방식은 id/pass, ssh 방식 중 ssh 가 선호되는데
클라우드 환경에서는 ssh 통신에서 로컬 .ssh 폴더의 privateKey를 활용하기가 참 애매해진다.
(배포시마다 매번 새로운 컨테이너가 생성되기 때문...)
이런 경우를 위해 spring-cloud 에서는 application.yml에 privateKey를 명시하고
github ssh 연결 시 해당 키를 참조하도록 할 수 있다.
아래와 같이 spring.cloud.config.server.git.ignoreLocalSshSettings 를 true로 설정하면 된다.
이를 통해 ssh 통신시 로컬 .ssh 하위의 privateKey를 활용하지 않고
spring.cloud.config.server.git.privateKey 에 지정된 값을 활용하게 된다.
spring.cloud.config.server.git.hostKey, spring.cloud.config.server.git.hostKeyAlgorithm 설정은
필수는 아니고 필요에 따라 선택적으로 사용하는 것 같다.
각 속성에 대한 설명은 공식홈페이지를 참고하도록 하자.
쿠버네티스 환경이라면 spring.cloud.config.server.git.privateKey값을
위와 같이 하드코딩 하지 않고 k8s Secret 으로 구성하면 좀 더 깔끔해진다.
더불어 코드에 privateKey가 공개되지 않아 보안적으로도 더 적절한 선택이다.
그런데 가장 중요한 점은 ssh-keygen 으로 키를 생성할 때 아래와 같이 키 형식을 PEM 으로 지정해서 생성해야 한다는 점이다. 암호화 방식은 기본이 rsa 이기 때문에 굳이 지정해서 생성할 필요는 없다. bit수도 굳이 지정하지 않고 기본을 사용해도 무관하다.
ssh-keygen -m PEM -t rsa -b 4096
https://github.com/spring-cloud/spring-cloud-config/issues/1392
난 이걸로 하루를 허비했다...
'Backend > Spring+Boot' 카테고리의 다른 글
h2 DB 초기 데이터 생성 (0) | 2021.03.30 |
---|---|
SpringBoot Interceptor 구현 (0) | 2021.03.25 |
DelegatingFilterProxy (0) | 2021.03.17 |
[Error] If you want an embedded database (H2, HSQL or Derby), please put it on the classpath. (0) | 2021.03.17 |
Spring Boot DevTools (0) | 2021.03.17 |