Jenkins 서버에 새로운 Worker노드를 추가해서 Master노드가 가지고있는 작업을 분할하는 환경을 구축한다.
지금까지 단일서버로 구성한 환경에서 사용해왔다 이것을 Jenkins Master라고 부른다.
Jenkins Master에서 사용자 요청에 의해 빌드/배포 하는 작업을 자신에게 추가된 다른 Slave Node에 작업을 요청함으로써 업무에 대한 분담을 처리하는 구조이다.
Slave는 Windows Linux Docker컨테이너 형태로 구성할 수 있다.
- Remote에서 실행될 수 있는 Jenkins의 Wokrer node
- Jenkins Master의 요청을 받아 처리
- Master로 부터 전달된 Job 실행
jenkins-node1 Docker 서버 실행
docker run --privileged --name jenkins-node1 -itd -p 30022:22 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup --cgroupns=host edowon0623/docker:latest /usr/sbin/init
Docker 서버에 JDK 설치
clear명령
# yum install -y ncurses git
설치 가능한 jdk 검색
# yum list java*jdk-devel
11버전 설치
# yum install -y java-11-openjdk-devel.x86_64
Jenkis Master 서버 구동
새로운 명령프롬트를 열고 아래 명령어를 실행한다.
> docker exec -it jenkins-server bash
jenkins-node1 서버의 host ip address를 확인한다.
# hostname -i
JenkinsMaster 서버에서 해당 서버로 접속 시도
$ ssh root@172.17.0.4
현재 가지고 있는 node1서버의 패스워드 key값 복사
# exit
$ ssh-keygen
$ ssh-copy-id root@172.17.0.4
Master서버에서 node1서버에 접속시 패스워드 없이 바로 접속이 가능해진다.
Jenkins에서 Node 등록
1. node관리 이동
Jenkins관리 - Nodes and Clouds
2. 우측 상단의 New Nodes 버튼 클릭
3. Node 이름 입력 및 Permanene Agent 선택 후 Create
4. Number of executors : 동시에 작업할 수 있는 Job의 갯수를 5로 지정
5. Remote root directory 설정
Jenkins Node1 서버에서 해당 디렉토리를 생성해야한다.
6. Labels
다른 쪽에 있는 Jenkins 프로젝트가 지금 추가하고 있는 Node를 지정할 때 사용할 일종의 키값
7. Usage : Use this node as much as possible 선택
Jenkins마스터가 해당 노드를 어떤 규칙에 의해서 선택할지 - 선택 가능한 상태면 선택 가능하도록 설정
8. Launch method : Launch agents via SSH 선택
9. Host 및 Credentials 추가
host : JenkinsMaster에서 JenkinsNode1로 접속할 때 사용했던 ip Address 입력
Credentials 추가
(password는 계속 사용해온 대문자P로 시작하는 password를 입력해준다.)
생성한 Credential로 선택한다.
10. Port 지정
Host Key Verification Strategy란 밑의 고급 버튼을 클릭하고 22를 입력한다.
전체 설정 확인 후 저장
생성된 Node 목록 확인
slave1을 클릭후 다시 돌아오면 정상적으로 생성되었다면 Architecture정보가 출력된다.
프로젝트 빌드해보기
빌드 할 프로젝트의 구성에서 설정
위와 같이 설정하면 해당 프로젝트를 slave1 노드에서만 빌드하겠다는 의미이다.
'CI CD InfraStructure > Jenkins' 카테고리의 다른 글
[Jenkins] Slave Node에서 빌드 - Pipeline 적용 (Third) (0) | 2023.07.12 |
---|---|
[Jenkins] Sonarqube 연동 및 Pipeline 사용 (0) | 2023.07.12 |
[Jenkins] Pipeline Syntax - Maven Build / 배포(Tomcat, Docker컨테이너) (0) | 2023.07.11 |
[Jenkins] Pipeline Item 생성, Pipeline script 작성 (0) | 2023.07.10 |
[Jenkins] Delivery Pipeline 구축 및 시각화 플러그인 설정 (0) | 2023.07.10 |