[Jenkins] 젠킨스 Agent 노드 추가 및 설정 방법
들어가며 |
젠킨스의 경우, 젠킨스를 이용해서 지속적으로 프로젝트를 빌드하고, 배포를 하고, 그 이외에도 다양한 업무를 수행하는 목적으로 사용을 합니다. 이런 젠킨스를 각 머신마다 설치를 하고 설정을 하기는 번거로운데요.
메인으로 사용할 젠킨스에서 각각의 빌드머신, 혹은 개발환경을 컨트롤 할 수 있게끔 Agent 노드를 제공하는데요.
그 방법에 대해서 정리했습니다.
저도 개발, QA, 핫픽스 등등 각각의 개발머신에 배포하는 환경을 하나의 젠킨스 장비에서 관리를 하고 있습니다.
## 신규 노드 (Agent) 추가 |
![]() |
Jenkins 관리 메뉴에서 노드관리 메뉴를 선택합니다.
![]() |
신규 노드를 추가 하는 버튼을 선택합니다.
노드명을 입력해주고, Type은 Permanent Agent 를 선택해 줍니다.
Permanent Agent
Jenkins에 일반 영구 에이전트를 추가합니다. Jenkins는 동적 프로비저닝과 같은 이러한 에이전트와의 높은 수준의 통합을 제공하지 않기 때문에 이를 "영구적"이라고 합니다. 다른 에이전트 유형이 적용되지 않는 경우(예: 실제 컴퓨터를 추가하는 경우, Jenkins 외부에서 관리되는 가상 머신 등) 이 유형을 선택하십시오.
![]() |
기본적으로 노드 (Agent)의 이름 및 설명, 라벨을 입력해야 하는데요.
중점적으로 체크해야 할 부분은 Remote root directory 입니다.
노드로 사용할 원격 서버의 디렉토리를 설정해주면 됩니다.
저의 경우는 C:\Jenkins 폴더를 이용해서 디렉토리를 설정하였습니다.
Jenkins 가 설치된 장소의 디렉토리가 아닌, Agent 노드가 실행될 서버의 디렉토리를 기입해줘야 합니다.
![]() |
Launch method는 Launch agent by connection it to the controller 로 설정 합니다.
에이전트가 준비될때마다, Jenkins 컨트롤러에 연결 할 수 있는 기능입니다. 에이전트 머신이 TCP 연결을 설정하게 되는데요. WebSocket 모드
로 사용을 하면, TCP 수신포트를 설정하지 않아도 가능합니다.
![]() |
모든 과정을 설정하게 되면, 추가한 노드가 화면에 보여지게 됩니다.
맨 위에 있는 Built-In Node는 젠킨스가 설치된 서버의 노드이기 때문에 무시하셔도 됩니다.
## Agent 관련 port 설정 |
![]() |
추가한 Agent 노드를 선택했을때, 위와 같은 메시지를 보게될 경우, port 관련해서 설정을 확인하셔야 합니다.
위에서 WebSocket을 사용하기로 하였지만, 글로벌 보안설정을 수정해줘야 설정할 수 있는 command line 메시지를 확인 할 수 있습니다.
젠킨스 관리에 있는 Security 메뉴 중 Configure Global Security 메뉴를 선택하시면,
Agent 에 관련된 TCP port 관련한 설정을 확인 할 수 있습니다.
저의 경우는 Random으로 설정을 하였습니다.
인바운드 에이전트를 사용하지 않는 경우 기본 설치 동작인 이 기능을 완전히 비활성화하는 것이 좋습니다. Jenkins는 TCP 포트를 사용하여 인바운드에 연결된 에이전트와 통신합니다. 인바운드 에이전트를 사용하려는 경우 시작 시 시스템이 임의로 포트를 선택하도록 허용할 수 있습니다(이렇게 하면 다른 Jenkins 인스턴스를 비롯한 다른 프로그램을 방해하지 않습니다). 방화벽은 임의의 포트를 보호하기 어렵기 때문에 대신 고정 포트 번호를 지정하고 그에 따라 방화벽을 구성할 수 있습니다.
## Agent 연결 |
![]() |
port를 설정한 뒤 다시 Agent 노드를 선택할 경우, 위처럼 해당 Agent 장비에서 실행해줄 command line 명령어가 노출이 됩니다. 해당 명령줄을 가지고 신규 Agent 장비로 가서 실행해주면 됩니다.
![]() |
이처럼 관리자 모드로 cmd를 실행 후, 해당 명령어를 입력하게 되면, jar 파일을 다운로드 받고 해당 파일을 이용해서 WebSoket을 이용해서 연결 한 것을 확인 할 수 있습니다.
![]() |
이후 dev-qa-155 이름의 sample Agent 노드에 정상적으로 연결이 된 것을 확인 할 수 있었습니다.
참조 |
END
'CI' 카테고리의 다른 글
[Jenkins] GitLab API PlugIn을 이용한, 외부에서 젠킨스 빌드 유발하는 방법 - 2.4 버전 이상 (0) | 2023.11.27 |
---|---|
[Jenkins] GitLab Webhooks를 이용한 젠킨스 연동 및 빌드유발 (0) | 2023.06.05 |
[Jenkins] Jenkins 복구 후, git cloning remote repo 'origin' 오류 해결 (0) | 2023.05.02 |
[Jenkins] 외부에서 Jenkins 호출하기 (0) | 2023.04.03 |
[Jenkins] 매개변수를 이용한 Git Tag 빌드 (0) | 2023.01.11 |