Backend/Spring+Boot

spring-config-server git 저장소 활용

findmypiece 2021. 3. 22. 16:44
728x90

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 설정은

필수는 아니고 필요에 따라 선택적으로 사용하는 것 같다.

 

각 속성에 대한 설명은 공식홈페이지를 참고하도록 하자.

docs.spring.io/spring-cloud-config/docs/3.0.0/reference/html/#_git_ssh_configuration_using_properties

 

Spring Cloud Config

Many source code repository providers (such as Github, Gitlab, Gitea, Gitee, Gogs, or Bitbucket) notify you of changes in a repository through a webhook. You can configure the webhook through the provider’s user interface as a URL and a set of events in

docs.spring.io

 

쿠버네티스 환경이라면 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

 

난 이걸로 하루를 허비했다...

728x90