Dev Ops/CI-CD

[CI/CD] Jenkins 기본 개념 및 구성 요소

erinh 2023. 1. 21. 18:28
반응형

Jenkins란?

CI/CD 전반적인 흐름을 관장하는 툴

- 서브버전, Git과 같은 버전 관리 시스템과 연동하여 소스의 커밋을 감지하면 자동적으로 자동화 테스트가 포함된 빌드가 작동되도록 설정 가능

Jenkins 구조

1. Jenkins Master (Server)

: Jenkins 서버이자 Jenkins 파이프라인으로 정의된 모든 흐름을 관장하는 컨트롤 서버

- 각 Jenkins Slave들에게 각자의 할 일을 정해주고 분배

[ Jenkins 작업 ]

 ① Git 등의 리파지토리에서 푸쉬되어 받은 자료를 정기적으로 Jenkins가 확인

 ② Jenkins 테스트 과정을 다양한 Jenkins Agent에서 실행시키면서 독자적 테스트 환경을 만듦
 ③ Jenkins Agent 통해 얻은 결과물을 Jenkins Master가 받아 테스트 보고

1) Jenkins Plugins

: 다른 개발 툴과 연동할 때 사용
- S3 버킷을 저장소로 두고 Jenkins와 연동한다고 하면 AWS CLI 플러그인만 연동하면 됨

 

2) Jenkins Global Security

: 주로 아래와 같이 3가지의 인증방법이 존재

① Jenkins 자체 유저 DB : Jenkins 자체적으로 운영되는 DB내 유저 정보로 XML 파일 구성

② LDAP 통합 : LDAP에다가 Server, User, Group, Manager 정보들을 기입해 사용
③ SSP(Single Sign-On) : 보안 보장 마크업 언어(SAML)을 활용해 구글 클라우드나 Azure와 같은 사용자 인증정보로 로그인

 

3) Jenkins Credentials

: 다른 클라우드 계정, 서버, DB에 연결하는 경우 보안에 필요한 정보를 저장하기 위한 곳(Secret text, SSH Keys 등)

 

4) Jenkins Global Configs

: 전에 사용한 플러그인 등의 정보를 가져와 사용

 

5) Jenkins Logs

: 작업 로그/플러그인 로그/웹훅 로그 등의 정보를 포함한 모든 서버의 정보 제공

2. Jenkins Agent

: Jenkins Master가 작업을 시켰을 때 일을 하는 Node
- Agent 없이 Master만으로도 작업은 진행 가능하나 작업들이 서로 겹치며 충돌될 수 있음

[ Agent 종류 ]

 ① Agent Nodes
    : 윈도우/리눅스와 같은 서버로 개별 script를 작성해 서버 위에서 Jenkins 실행과 정지를 조절

 ② Agent Clouds
    : Dynamic agents라고도 불리며 작업을 하고 컨테이너로 배포하고 완성하는 작업에 사용되며 인프라에 따라 사용량이 지불됨

[ Master - Agent 연결 방법 ]

 ① SSH : SSH 프로토콜을 사용해 연결, Master에서 연결이 시작되며 보통 22포트를 넘어 연결

 ② JNLP : Java Network Launch Protocol을 50000포트에서 사용해 Agent로부터 연결하는 작업으로 Master의 방화벽을 열어 놓아야 가능

3. Jenkins Web Interface

- Jenkins Blue Ocean이라 불리는 웹 인터페이스로 젠킨스의 플러그인

: 시각화된 대시보드를 제공하며 파이프라인이 시각화되어 문제 발생 시 어느 스테이지, 스텝에서 발생했는지 보다 쉽게 파악 가능

반응형