Zayson
A to Zayson!
Zayson
전체 방문자
오늘
어제
  • 분류 전체보기 (132)
    • Computer Science (20)
      • Network (4)
      • DB (12)
      • OS (4)
    • Algorithm (32)
      • 완전탐색(Brute-Force) (3)
      • 그리디(Greedy) (6)
      • 투포인터(Two-Pointer) (1)
      • 그래프(Graph) (5)
      • BFS & DFS (9)
      • 구현, 시뮬레이션(Implementation) (5)
      • 다이나믹 프로그래밍(DP) (3)
    • Backend (51)
      • Spring Boot (19)
      • JPA (16)
      • Kafka (2)
      • Java (13)
      • Kotlin (1)
    • DevOps (1)
      • Jenkins (5)
      • Oracle Cloud Infrastructure (1)
      • Kubernetes & Docker (1)
    • Trouble Shooting (3)
      • JPA (1)
      • Spring Boot (2)
    • 회고 (5)
      • 엔빵 프로젝트 포스트 로드맵 (1)
      • 2022년 (4)
    • Kafka (7)
      • Kafka (5)
      • Kafka Connect (2)
    • 기술 서적 (6)
      • 데이터 중심 애플리케이션 설계 (3)
      • 개발자가 반드시 정복해야할 객체 지향과 디자인 패턴 (2)
      • 가상 면접 사례로 배우는 대규모 시스템 설계 기초 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

태그

  • 백준
  • SpringBoot
  • BFS
  • CS
  • 나 혼자 스프링부트!
  • Backend
  • Kafka Connect
  • JPA
  • Computer science
  • 완전탐색
  • spring boot
  • dfs
  • 구현
  • 엔빵프로젝트
  • 관계형 데이터베이스 실전 입문
  • 그리디
  • kafka
  • 프로그래머스
  • 라이브스터디
  • Java

최근 글

티스토리

hELLO · Designed By 정상우.
Zayson

A to Zayson!

Spring Cloud Config Server를 Private Repository와 연동
Backend/Spring Boot

Spring Cloud Config Server를 Private Repository와 연동

2022. 4. 28. 18:15

Spring Cloud Config Server와 GitHub 레포지토리를 연동하는 과정에서 추가적으로 Private 레포지토리는 SSH 키 등록 및 등록 과정에서 이슈가 있어서 해결법을 정리하고자 한다.

Private 레포지토리를 연동하는 방법은 SSH 키 등록 및 GitHub 계정 자체를 연동하는 방법이 있다.

📌 GitHub 계정 자체를 연동하기

Spring Cloud Config Server의 application.yml 파일에 GitHub 계정 아이디 및 계정 패스워드를 작성한다.

server:
  port: 8088    # Spring Cloud Config Server 포트
spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        git:
          uri: https://github.com/jymaeng95/spring-cloud-config-repository.git # GitHub 레포지토리 주소 (Yaml 파일을 관리하는 레포지토리)
                    username: # Github 계정 아이디
                    passwod: # Github 계정 패스워드           

# actuator 기본 설정
management:
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    shutdown:
      enabled: true

프로젝트를 빌드한 후 http://localhost:{SpringCloud Config Server 포트}/{application}/{profile}로 호출 하면 Github 레포지토리에서 application-profile.yml로 설정한 내용들을 불러온다.

📌 SSH 공개키 / 개인키를 이용해 연동하기

먼저, ssh-keygen 명령어를 이용해 ssh 공개키와 개인키를 생성한다.

$ ssh-keygen -M PEM -t rsa -b 4096 -C "Github 계정 이메일" -f 키파일명  # 공개키 / 개인키 생성
$ cat 키파일명.pub # 복사해서 SSh keys 부분에 업로드

SSH 키를 생성한 후 Github 계정 Settings > SSH and GPG keys > SSH keys에 공개키를 업로드한다.

SSH 키를 업로드 했다면, Spring Cloud Config Server의 application.yaml 파일을 수정해준다.

server:
  port: 8088    # Spring Cloud Config Server 포트
spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        git:
           uri: git@github.com:jymaeng95/spring-cloud-config-repository.git   # private Repsoitory의 경우 ssh 키 발급해서 사용
           ignore-local-ssh-settings: true
           private-key: |
             -----BEGIN RSA PRIVATE KEY-----
             MHcCAQEEIIQf9VslUAT8vxL6sUBTaKuftWw7E6utoMcsdl4sl3/loAoGCCqGSM49
             ...
             -----END RSA PRIVATE KEY-----
           timeout: 4

# actuator 기본 설정
management:
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    shutdown:
      enabled: true

uri 부분을 Github 레포지토리에서 SSH 부분을 클릭해서 주소를 복사해서 넣어준다.

private-key 부분에는 ssh-keygen을 이용해 생성한 개인키 내용을 복사해서 붙여넣어준다.

개인키를 복사해서 넣을 때, private-key: 파이프라인 기호( | )를 적어주지 않고 복사하면 에러가 날 수도 있기 때문에 반드시 적어준다. 또한, -----BEGIN EC PRIVATE KEY----- 부터 -----END EC PRIVATE KEY-----까지 모두 복사해줘야 한다.

프로젝트를 빌드한 후 Config 엔드포인트를 호출해주면 해당 엔드포인트의 Configuration 내용을 가져오는 것을 확인할 수 있다.

🤔 번외 )Spring Cloud Config Server Github SHA-1 error 이슈

ssh-keygen을 통해 RSA 형식의 키를 발급받아서 Github 레포지토리를 연동했는데 Spring Cloud Config Server를 실행하면 ERROR: You're using an RSA key with SHA-1, which is no longer allowed. Please use a newer client or a different key type.에러가 발생했다.

Stackoverflow에서 RSA 방식이 아닌 ECDSA 형식의 암호화 키를 생성하면 된다는 해결책을 제시했다.

Stackoverflow : https://stackoverflow.com/questions/71489256/spring-cloud-config-server-github-sha-1-error

$ ssh-keygen -M PEM -t ecdsa -b 256 -C "Github 계정" -f 키파일명

키 파일을 생성하는 것만 다르고 Github 계정 Setting에 들어가서 공개키를 업로드하는 부분은 동일하다.

하지만, application.yaml 파일에서 설정을 추가적으로 해줘야한다.

private-key: |
             -----BEGIN EC PRIVATE KEY-----
             MHcCAQEEIIQf9VslUAT8vxL6sUBTaKuftWw7E6utoMcsdl4sl3/loAoGCCqGSM49
             ...
             -----END EC PRIVATE KEY-----
host-key: AAAAE2VjZHNhLXNoYTItbmlzdHAy.... # ssh-keyscan github.com의 hostmname
host-key-algorithm: ecdsa-sha2-nistp256    # 호스트 키 알고리즘

private-key 는 생성한 개인키를 복사해서 그대로 넣어준다.

그리고 , host-key 부분과 , host-key-algorithm 부분은 ssh-keyscan 명령어를 이용해 찾아서 넣어줄 수 있다.

$ ssh-keyscan -t ecdsa github.com
# github.com:22 SSH-2.0-babeld-4f04c79d
# host-key-algorith : ecdsa-sha2-nistp256 
# host-key AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAy...

이렇게 레포지토리를 수정해준 후 동일하게 프로젝트를 빌드 후 엔드포인트를 호출하면 제대로 가져오는 것을 확인할 수 있다.

📄 References

Spring Cloud Config 에서 Github Private Repository 접근하기 : https://oingdaddy.tistory.com/188

반응형
저작자표시 비영리 변경금지 (새창열림)

'Backend > Spring Boot' 카테고리의 다른 글

싱글톤 스코프, 프로토타입 스코프  (0) 2022.05.03
Spring Data JPA의 Page와 Slice  (0) 2022.05.02
Spring Data JPA를 이용해 커서 페이징 구현하기  (0) 2022.05.01
Spring Cloud Config Server/Client 설정  (0) 2022.04.28
Swagger를 이용한 API 문서화  (0) 2022.04.28
    'Backend/Spring Boot' 카테고리의 다른 글
    • Spring Data JPA의 Page와 Slice
    • Spring Data JPA를 이용해 커서 페이징 구현하기
    • Spring Cloud Config Server/Client 설정
    • Swagger를 이용한 API 문서화
    Zayson
    Zayson
    공부한 내용을 정리하는 공간

    티스토리툴바