Jenkins는 소프트웨어 개발의 지속적 통합(CI) 과 지속적 배포(CD) 를 지원하는 오픈소스 자동화 서버입니다. 코드 변경을 자동으로 빌드·테스트하고 배포까지 이어줍니다.
Docker로 설치
가장 간단한 건 Docker로 올리는 방법입니다.
docker run --name jenkins -d \
-p 8080:8080 -p 50000:50000 \
-v jenkins_home:/var/jenkins_home \
jenkins/jenkins:lts
8080은 웹 UI, 50000은 에이전트 통신용 포트입니다. jenkins_home 볼륨을 붙여 설정과 빌드 기록을 보존합니다. 권한 에러가 나면 볼륨 디렉토리 소유권을 맞춰줍니다(chown -R 1000:1000 ./jenkins_home).
브라우저로 http://[IP]:8080 에 접속한 뒤 초기 관리자 비밀번호를 확인합니다.
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
버전 선택:
lts태그는 안정화된 Long Term Support 릴리스입니다. Weekly(최신)는 새 기능이 빠르지만 버그 가능성이 있으니, 운영에는 LTS를 권장합니다. 특정 버전을 고정하려면jenkins/jenkins:2.xxx처럼 태그를 명시하세요.
파이프라인
Jenkins Pipeline은 빌드·테스트·배포 과정을 코드(워크플로우)로 정의합니다.
pipeline {
agent any
stages {
stage('clone') {
steps {
git branch: "main", url: 'https://github.com/user/project'
}
}
stage('build') {
steps {
sh "go build main.go"
}
}
stage('execute') {
steps {
sh "./main"
}
}
}
}
- Agent: 파이프라인이 실행될 환경
- Stage: 파이프라인의 단계 (이름으로 구분)
- Step: 각 단계에서 수행하는 작업 단위
Git 저장소를 붙이려면 Jenkins 관리 → Credentials 에서 Username(Git ID)과 Password(Git Token)로 자격 증명을 추가하고 파이프라인에서 참조합니다.
쿠버네티스 연동
빌드마다 에이전트 파드를 동적으로 띄우려면 Kubernetes 플러그인을 씁니다. Jenkins 관리 → Plugins 에서 “Kubernetes”를 설치한 뒤 Clouds에 클러스터를 등록합니다.
- Kubernetes URL:
https://[마스터IP]:6443(내부 통신이면 인증서 검사 비활성화) - Namespace:
jenkins - Credentials: Secret text 종류로 서비스 어카운트 토큰 입력
- Jenkins URL / tunnel:
http://[JenkinsIP]:8080,http://[JenkinsIP]:50000
토큰은 마스터에서 서비스 어카운트를 만들어 발급합니다.
kubectl create ns jenkins
kubectl create sa jenkins-admin -n jenkins
kubectl create rolebinding -n jenkins jenkins-admin-rolebinding \
--clusterrole=admin --serviceaccount=jenkins:jenkins-admin
이후 서비스 어카운트 토큰 Secret을 만들어(kubernetes.io/service-account-token 타입) kubectl describe secret 으로 토큰을 얻어 Credentials에 넣고, Test Connection 에서 클러스터 버전이 뜨면 성공입니다.
CI/CD는 처음 세팅이 번거롭지만, 한 번 붙여두면 “푸시하면 알아서 빌드·배포”가 되니 그 뒤로는 정말 편해집니다.