2022. 9. 16. 04:07ㆍSystem 작업실/DevOps
이 내용은 인프런 - Jenkins를 이용한 CI/CD Pipeline 구축 강의를 보고 정리한 내용 입니다.
해당 내용의 Code 내용은 이 곳에서 확인하실 수 있습니다.
🗂 목차
● [DevOps] Jenkins를 이용한 CI/CD Pipeline 구축 - 자동화 도구의 사용
● [DevOps] Jenkins를 이용한 CI/CD Pipeline 구축 - Jenkins + Infrastructure as Code 와의 연동
● [DevOps] Jenkins를 이용한 CI/CD Pipeline 구축 - Jenkins + Ansible + Kubernetes 와의 연동
● [DevOps] Jenkins를 이용한 CI/CD Pipeline 구축 - Advenced Jenkins 사용 ① - Pipeline
● [DevOps] Jenkins를 이용한 CI/CD Pipeline 구축 - Advenced Jenkins 사용 ② - SonarQube
● [DevOps] Jenkins를 이용한 CI/CD Pipeline 구축 - Advenced Jenkins 사용 ③ - Multi Nodes
● [DevOps] Jenkins를 이용한 CI/CD Pipeline 구축 - 상용 클라우드 환경에 배포하기
● [DevOps] Jenkins를 이용한 CI/CD Pipeline 구축 - 부록
🚀 Jenkins Master와 Slave 나누기
🔽 Jenkins 좀 더 알아보기
📦 Multi Node 구성
Jenkins에 Worcker Node를 추가하여 Master Node가 가지고 있는 작업을 분할하는 환경 구축을 해 볼것이에요.
💡 참고 사항
1. Jenkins Slave란?
∙ Remote에서 실행되는 Jenkins 실행 Node.
∙ Jenkins Master의 요청 처리 담당.
∙ Master로부터 전달된 Job 실행.
∙ 다양한 운영체제에서 실행 가능.
∙ Jenkins Project 생성 시 특정 Slave 선택 실행 가능.
최초 Slave용 Docker Container를 구성해 볼게요.
주니하랑은 Synology NAS에 Docker를 이용하고 있어요.
만약 M1 Mac Book의 Docker Desktop을 이용하신다면 아래 명령어를 이용해 주세요.
sudo docker run --privileged --name {Container Name} -itd -p {외부 SSH Port 번호}:{내부 SSH Port 번호} -e dontainer=docker -v /sys/fs/cgroup:/sys/fs/cgroup --cgroupns=host edowon0623/docker-server:m1 /usr/sbin/init
현재는 공부용이기 때문에 강사님이 만들어 놓으신 기본 Linux(CenOS 7) Docker Image를 이용하여
Directory 작업과 Port Fowarding을 진행했으나, 실제 운영 환경 등에서는 다른 Image를 쓰는 걸 추천합니다.
💡 참고 사항
Slave를 등록할 때는 아래 방법을 이용해요.
Jenkins 관리 -> Manage Nodes -> New Node
1. Node Name : slave1
2. Description : Add a server as a slave machine∙ 해당 연결에 대한 설명 정의
3. Number of executors : 5
∙ Master로 부터 작업 처리에 대한 요청을 받았을 때, 동시에 처리할 수 있는 최대 작업 개수 명시.
4. Remote root directory : /root/slave1
∙ Work Space 결과를 저장할 Directory Path 설정
5. Labels : slave1
6. Usage : Use this node as much as possible
∙ Master가 Slave에게 작업을 위임할 때 어떤 기준으로 Slave Node를 선택하게 할 것인지 정의.
7. Launch Method : Launch agents via SSH∙ Host : {Slave Server IP} 예시:) 192.168.0.5
∙ Port : 22 (Slave SSH Port Number)
∙ Credntials : root/P@ssw0rd (Slave root Password)
Slave 설치 방법과 Master와 Slave 연결 방법에 대해서는 이 곳에 정성스럽게 정리해 두었어요.
📦 연동 Test Build
위 Project에 설정을 만져 Test를 진행해 볼게요.
위에서 'Restrict where this project can be run'을 활성화 해줄게요.
Label Expression에 Slave를 만들 때, 등록했던 Label 이름을 적어주세요.
이렇게 해주면 이 전에 만들었던 Slave Server에다가만 해당 Project의 Build 작업을 위임하겠다는 것이에요.
저장하고, Build를 진행해 볼게요.
Build가 완료되고, Slave Server에서 지정했던 Directory를 확인해보니
workspace라는 Directory가 생긴걸 확인할 수 있어요.
주니하랑이 Build한 Project가 전달된 것을 확인할 수 있어요.
📦 Slave Node에서 Pipeline Build
최초 N개의 Node Test를 위해 Slave Node를 하나 더 만들게요.
Node를 만드는 방법은 이 곳에 준비해 두었어요.
sudo docker run --privileged --name {Container Name} -itd -p {외부 SSH Port 번호}:{내부 SSH Port 번호} -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup --cgroupns=host edowon0623/docker:latest /usr/sbin/init
이번에 주니하랑은 위의 명령어를 이용해서 Node2를 만들어 주었어요.
만약 M1 Mac Book의 Docker Desktop을 이용하신다면 아래 명령어를 이용해 주세요.
sudo docker run --privileged --name {Container Name} -itd -p {외부 SSH Port 번호}:{내부 SSH Port 번호} -e dontainer=docker -v /sys/fs/cgroup:/sys/fs/cgroup --cgroupns=host edowon0623/docker-server:m1 /usr/sbin/init
주니하랑은 이 전에 작업했었던 위 Project에서 추가로 작업을 해 볼 것이에요.
상단에 agnet 부분이 원래 any 였었는데, 위와 같이 testSlave1에서 작동하도록 수정해 주었어요.
'System 작업실 > DevOps' 카테고리의 다른 글
[DevOps] Jenkins를 이용한 CI/CD Pipeline 구축 - 상용 클라우드 환경에 배포하기 (0) | 2022.09.16 |
---|---|
[SSH] Client Program 설치 (0) | 2022.09.16 |
[DevOps] Jenkins를 이용한 CI/CD Pipeline 구축 - Advenced Jenkins 사용 ② - SonarQube (0) | 2022.09.15 |
[DevOps] Jenkins를 이용한 CI/CD Pipeline 구축 - Advenced Jenkins 사용 ① - Pipeline (0) | 2022.09.15 |
[Docker] Nginx 설치 (0) | 2022.09.15 |