본문 바로가기

시이시디

(8)
[Jenkins] Trivy로 컨테이너 보안 취약점 차단하기 우리는 에서 코드를 도커 이미지(Docker Image)로 굽는 화려한 기술을 배웠습니다. FROM node:14-alpine 같은 베이스 이미지를 가져와서 무심코 컨테이너를 말아 올렸죠. 그런데 만약 그 베이스 이미지 안에 해커가 악용할 수 있는 치명적인 OpenSSL 해킹 취약점(예: Heartbleed)이나 탈취 가능한 루트 권한 버그가 심어져 있다면 어떨까요? 젠킨스가 아무리 배포를 잘해도, 결과적으로는 '보안 폭탄'을 운영 서버 한가운데에 아주 빠르고 정확하게 배달해 주는 꼴이 됩니다. 바야흐로 배포 파이프라인 내부에 보안(Security)을 욱여넣어 강제화하는 DevSecOps(개발-보안-운영)의 시대입니다. 이번에는 전 세계에서 가장 사랑받는 초경량 오픈소스 컨테이너 보안 스캐너인 'Triv..
[Jenkins] Retry 블록 네트워크 장애를 극복하는 파이프라인 CI/CD 자동화를 구축해 놓으면 퇴근 후에도 마음이 편할 줄 알았습니다. 하지만 밤 11시에 슬랙으로 [빌드 실패] 빨간 알람이 울려 부랴부랴 랩탑을 열어보면, 내 코드의 버그가 원인이 아닙니다. "Github에서 소스코드를 다운로드하다가 DNS를 못 찾음", "NPM Registry 서버가 잠시 응답하지 않음", "Docker Hub Rate Limit(속도 제한)에 걸려 이미지 pull 실패" 인프라 엔지니어가 통제할 수 없는 '외부 요인(네트워크 지연 및 타임아웃)' 때문에 파이프라인이 터지는 억울한 경우가 실무 빌드 실패의 절반 이상을 차지합니다. 억울하게 실패한 빌드를 데브옵스 담당자가 젠킨스 화면에 접속해 수동으로 'Rebuild' 버튼을 눌러주면 언제 그랬냐는 듯 쌩쌩하게 잘 돌아갑니다. ..
[Jenkins] Jenkins 백업 스크립트 복구 데브옵스(DevOps) 엔지니어의 가장 큰 덕목은 배포 속도를 빠르게 만드는 것도 중요하지만, '최악의 장애 상황에서도 인프라를 신속하게 복구(Disaster Recovery)해 내는 것'입니다. 수십 개의 프로젝트 파이프라인과 플러그인, 계정 정보, 복잡한 인증키(Credentials)들이 세팅된 젠킨스 서버의 하드디스크가 어느 날 갑자기 물리적 장애로 뻗어버린다면 어떻게 될까요? 백업이 없다면 전사의 배포 프로세스는 수일 동안 올스톱되며 당신은 시말서를 피할 수 없을 것입니다.1. 무엇을 백업하고, 무엇을 버릴 것인가? (용량 최적화)초보 인프라 관리자들은 "백업? 그냥 /var/jenkins_home 디렉토리 전체를 통째로 압축해서 보관하면 되잖아?"라고 생각합니다. 이는 매우 무식하고 위험한 발상..
[Jenkins] 병렬 빌드로 파이프라인 속도 혁신하기(Parallel Build) 파이프라인을 성공적으로 구축하고 자동화의 기쁨을 누리는 것도 잠시, 프로젝트의 덩치가 커지면서 빌드 시간이 점점 늘어나기 시작합니다. 프론트엔드 빌드 5분, 백엔드 스프링 빌드 5분, 유닛 테스트 5분, E2E 테스트 10분... 코드를 하나 푸시하고 나서 무려 25분을 기다려야 배포가 완료된다면 개발팀의 생산성은 바닥을 칠 것입니다. 이번 포스트에서는 "시간이 돈"인 현대 소프트웨어 개발 환경에서 가장 적은 노력으로 빌드 시간을 드라마틱하게 반토막 내버리는 '병렬(Parallel) 처리 기법'에 대하여 다뤄보겠습니다.1. 직렬 빌드의 치명적인 병목 현상기본적으로 젠킨스의 stages 블록 안에 적힌 stage들은 위에서 아래로 순차적(직렬)으로 실행됩니다. 앞의 작업이 끝나야만 뒤의 작업이 시작될 수 ..
[Jenkins] Freestyle Project로 첫 자동화 빌드 만들기 초보자 완벽 가이드 젠킨스를 설치하고 Github Webhook 연동까지 마쳤다면, 드디어 젠킨스에게 "실제로 어떤 일을 해야 하는지" 작업 명세서를 쥐어줄 차례입니다. 젠킨스에서 작업을 정의하는 방식은 크게 'Freestyle Project(자유 스타일 프로젝트)'와 'Pipeline(파이프라인)' 두 가지로 나뉩니다. 코드로 모든 것을 제어하는 파이프라인이 최신 실무 표준이긴 하지만, 젠킨스의 동작 원리와 플러그인의 결합 방식을 시각적으로 이해하기 위해서는 가장 기본적이고 직관적인 Freestyle Project를 먼저 마스터하는 것이 필수적입니다. 이번 포스팅에서는 마우스 클릭 몇 번과 쉘 스크립트 작성만으로 완벽한 자동화 빌드를 구성하는 방법에 대해 다뤄보겠습니다.1. Freestyle Project란 무엇이며, 언..
[Jenkins] Github Webhook과 Jenkins 연동 완전 자동화의 꽃 개발자가 로컬에서 기능 개발을 마치고 Github에 코드를 푸시(Push)했을 때, 사람이 젠킨스 웹 화면에 일일이 로그인해서 "Build Now(지금 빌드)" 버튼을 누른다면 그것은 진정한 의미의 자동화가 아닙니다. 반쪽짜리 CI(Continuous Integration)일 뿐이죠. 이번 Github Webhook과 Jenkins의 완벽 연동 메커니즘에 대하여 다뤄보겠습니다. 실무에서 가장 빈번하게 발생하는 방화벽 및 네트워크 트러블슈팅 사례까지 낱낱이 파헤쳐 드립니다.1. Webhook(웹훅)의 동작 원리 완벽 이해하기웹훅(Webhook)은 두 개의 시스템이 비동기적으로 실시간 통신을 하기 위해 고안된 아키텍처입니다. 기존의 폴링(Polling) 방식은 젠킨스가 1분마다 Github에 "혹시 새로운 ..
[Jenkins] 관리자 계정 생성 및 권한 분리 보안 마스터 가이드 인프라 구축 초기에는 보통 최고 관리자(admin) 계정 하나로 모든 개발자가 돌려 쓰는 경우가 많습니다."우리는 작은 스타트업이라 괜찮아"라고 생각할 수 있지만, 팀 규모가 커지고 다양한 프로젝트가 맞물리기 시작하면 이는 시한폭탄과 다름없습니다. 누군가 실수로 다른 팀의 빌드 설정을 지워버리거나, 인턴 개발자가 실수로 운영 서버 배포 버튼을 눌러버리는 대형 사고(Human Error)가 발생하기 때문입니다. 대규모 엔터프라이즈 환경에서 필수적으로 적용하는 Role-based Authorization(역할 기반 권한 관리) 전략을 통해 완벽한 보안 환경을 구축하는 방법을 다뤄보겠습니다.1. 왜 권한 분리(Authorization Strategy)가 필수적인가?Jenkins는 기본적으로 코드를 클론(Clo..
[Jenkins] 초기 비밀번호 확인 및 기본 플러그인 설정 완벽 가이드 앞선 포스팅을 통해 Docker Compose를 활용하여 Jenkins 인프라를 성공적으로 띄우셨다면, 이제 본격적으로 젠킨스의 세계에 발을 들여놓을 차례입니다. 브라우저 주소창에 `http://서버IP:8080` 혹은 설정한 도메인을 입력하고 접속해 보십시오. 아마 친절한 환영 인사나 대시보드 대신, 누군가 침입하는 것을 막기 위해 자물쇠가 굳게 채워진 Unlock Jenkins 화면이 여러분을 당황하게 만들 것입니다. 초기 비밀번호 확인 방법부터 필수 플러그인 설치, 그리고 첫 관리자 계정 생성까지의 전체 셋업 워크플로우를 실무 꿀팁과 함께 아주 꼼꼼하게 파헤쳐 보겠습니다. 이 과정을 무사히 넘겨야만 비로소 파이프라인을 구축할 수 있는 권한을 얻게 됩니다.1. Unlock Jenkins: 초기 관리자..