DevOps/Jenkins

[Jenkins] Launch agents via SSH 분산 빌드 환경 구축 방법

cob 2024. 8. 21. 15:44
Launch agents via SSH 경우 Jenkins 마스터 서버 -> 슬레이브  서버로 SSH 접속하여 제어한다.
아래 [JNLP 분산 빌드 환경 구축 방법]과 다른 점만 설명하도록 하겠다. SSH로 접속하기 때문에 TCP 포트 설정은 필요 없다 대신 SSH key를 등록해 줘야 한다.

 

2024.08.20 - [DevOps/Jenkins] - [Jenkins] JNLP 분산 빌드 환경 구축 방법

 

[Jenkins] JNLP 분산 빌드 환경 구축 방법

Jenkins에서 분산 빌드 환경을 구성하지 않으면 순차적으로 빌드하게 되지만, 분산 빌드 환경을 구성하게 되면 동시에 처리하므로 빌드 속도가 빨라진다. 또한, 빌드 작업을 여러 서버에 분산시켜

cocococo.tistory.com

 

 

 

1.  SSH key 등록

슬레이브 서버에서 SSH key를 생성하고, 공개 키를 Jenkins 마스터에 Credentials에 등록한다.

 

1-1. Jenkins 마스터 서버에 SSH key 생성

$ ssh-keygen

 

 

1-2. Jenkins 마스터 Credentials 등록

[Jenkins 관리] -> [Credentials] -> System]

  • Kind : SSH 접속하기 위해 종류는 SSH Username with private key 선택
  • Scope : 해당 설정은 자격 증명이 어디에서 사용될 수 있는지를 결정한다.
    - System : Jenkins 내부의 시스템 작업(예: 노드 관리, Jenkins 시스템 자체의 작업)에서만 사용됩니다. 일반적인 Job이나 Pipeline에서는 사용할 수 없다.

    - Global : Jenkins의 모든 작업(Job), 파이프라인(Pipeline), 에이전트(Agent) 등에서 사용할 수 있습니다. Jenkins 인스턴스 전체에서 접근이 가능하다
  • ID : Credentials를 식별하는 ID
  • Username : 슬레이브에 접근할 사용자명
  • Treat username as secret : 빌드 로그에 사용자 이름 마스킹 처리 여부
  • Enter directly : 슬레이브 서버에서 생성한 SSH 공개 키 (id_rsa)를 등록한다.
    공개 키 (id_rsa) 내용을 전부 복붙!

 

 

1-3. 슬레이브 서버

Jenkins 마스터 서버에서 생성한 ssh 키의 공개 키(id_rsa.pub)를 슬레이브 서버의 ~/.ssh/authorized_keys에 추가한다. 해당 파일이 없으면 생성하고, 있다면 현재 내용에서 추가한다.
vi ~/.ssh/authorized_keys

...

cat ~/.ssh/authorized_keys

 

 

접속을 위해서는 몇가지 중의 할 점이 있다.
  • 권한 - 너무 많은 권한이 있으면 인증을 거부하게 된다.
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 755 ~
  • ssh 설정 파일 - sshd_config
# ssh 설정 파일 편집
sudo vi /etc/ssh/sshd_config

...
PubkeyAuthentication yes



# sshd 설정 적용
sudo systemctl restart sshd

PubkeyAuthentication : 공개키 인증 활성화

  • 방화벽
    - ssh 접속도 22번 포트로 하기 때문에  슬레이브 서버의 22번 포트 가 열려있어야 한다.

 

 

2. Node 추가 설정

나머지 설정은 상단 링크 [JNLP 분산 빌드 환경 구축 방법]과 동일

Launch method 설정

  • Host : 슬레이브 서버 IP를 등록
  • Credentials : [1-2. Jenkins 마스터 Credentials 등록]에서 생성한 자격 증명을 등록
  • Host Key Verification Strategy : SSH 연결 시 서버(노드)의 호스트 키를 어떻게 검증할지를 설정
    - Known hosts file Verification Strategy: known_hosts 파일에 있는 키로 검증. [높은 보안]
    - Manually provided key Verification Strategy: 사용자가 제공한 키로 검증. [매우 높은 보안]
    - Manually trusted key Verification Strategy: 처음 연결 시 키를 신뢰하고 이후 검증. [초기엔 다소 위험]
    - Non verifying Verification Strategy: 검증 없이 연결. [매우 낮은 보안]

 

 

2-1. JDK

실행 중인 Jenkins의 jdk 버전과 슬레이브 서버의 jdk 버전이 맞지 않다면 환경 변수를 지정해 줘야 한다.

 

 

3. 파이프라인 스크립트에서 사용

2024.08.20 - [DevOps/Jenkins] - [Jenkins] JNLP 분산 빌드 환경 구축 방법

 

[Jenkins] JNLP 분산 빌드 환경 구축 방법

Jenkins에서 분산 빌드 환경을 구성하지 않으면 순차적으로 빌드하게 되지만, 분산 빌드 환경을 구성하게 되면 동시에 처리하므로 빌드 속도가 빨라진다. 또한, 빌드 작업을 여러 서버에 분산시켜

cocococo.tistory.com

 

위 방법과 동일

 

반응형