Introduce
jenkins를 이용해서 이미지를 빌드해서 argocd를 이용해 k8s 환경에 자동 배포 되도록 ci/cd 파이프라인을 만들어 보고자 합니다.
sonarqube는 소스코드 취약점 분석 오픈소스이고 harbor는 private image reagistry이고 trivy를 통해 이미지 취약점 분석을 할 수 있습니다.
Jenkins 띄우기
- 컨테이너를 만들면서 플러그인도 함께 설치 해줬습니다.
//gcp 무료 크레딧을 이용해 서버를 띄웠습니다.
//Dockerfile
FROM jenkins/jenkins:lts
COPY plugins.txt /usr/share/jenkins/ref/plugins/plugins.txt
USER root
RUN jenkins-plugin-cli -f /usr/share/jenkins/ref/plugins/plugins.txt --verbose
USER jenkins
//plugins.txt
git:latest
gitlab-branch-source:latest
github-branch-source:latest
workflow-multibranch:latest
build-timeout:latest
credentials-binding:latest
antisamy-markup-formatter:latest
cloudbees-folder:latest
timestamper:latest
ws-cleanup:latest
gradle:latest
junit:latest
workflow-aggregator:latest
pipeline-graph-view:latest
email-ext:latest
kubernetes-cli:latest
docker-plugin:latest
docker-workflow:latest
sonar:latest
// 실행
$ docker run -d --env JENKINS_OPTS=--httpPort=8000 --env JAVA_OPTS=-Xmx2g -v /etc/localtime:/etc/localtime:ro -e TZ=Asia/Seoul -p 8000:8000 -p 50000:50000 -u root -v jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker-compose:/usr/bin/docker-compose -u jenkins --name custom-jenkins jenkins/jenkins:lts
### jenkins 비밀번호 확인
$ docker logs {jenkins 컨테이너 명}
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:
{여기에 있는 값이 비밀번호}
This may also be found at: /var/jenkins_home/secrets/initialAdminPassword
jenkins를 띄우는 것까지는 성공했으니 파이프라인을 생성해보겠습니다.
jenkins Tools에서 gradle을 추가해줍니다.
파이프라인 생성하기
새로운 아이템을 누른뒤 파이프라인을 선택해서 파이프라인을 생성합니다.
이제 configuration을 작성해야 하는데 gitlab에서 코드를 가져와서 사용하기 때문에 gitlab에서 토큰을 발급받아 연동해줍니다.
일단 jenkins에 gitlab plugin이 설치 되어 있어야 합니다.
gitlab에서 jenkins에서 사용할 토큰을 생성해줍니다.
jenkins에서 gitlab에 대한 credentials를 추가해줍니다.
username에는 gitlab 유저 이름을 넣고 password에는 아까 발급받은 토큰을 넣어줍니다.
아까 만들었던 파이프라인 구성에서 git repo를 등록해줍니다. credentials 누르면 방금 생성한 자격증명이 있습니다.
그리고 build trigger를 설정해줍니다. 마지막 secret token을 생성합니다.
gitlab webhook 생성하고 jenkins build trigger에서 나온 url과 secret token을 적어줍니다.
test로 push event를 날려보면 정상적으로 빌드되는 것을 확인할 수 있습니다.
Next
이제 파이프라인을 구성했으니 spring server를 빌드 할 수 있도록 script를 작성하고 sonarqube, harbor, trivy를 연동하고 argocd를 통해 k8s 환경에 자동 배포 되도록 해보겠습니다.
'Ops' 카테고리의 다른 글
Jenkins로 ci/cd 파이프라인 구축하기(3) (0) | 2024.12.04 |
---|---|
Jenkins로 ci/cd 파이프라인 구축하기(2) (0) | 2024.12.04 |
k8s 환경에 내 서비스 띄워보기 (0) | 2024.12.04 |
kind 이용해서 k8s 다뤄보기 (0) | 2024.12.04 |
컨테이너 환경 로그 수집해보기 (0) | 2024.12.04 |