반응형
개요
쿠버네티스를 통한 DevOps 인프라 환경을 구축할 때,
Application 빌드와 배포 자동화를 위해 CI/CD 환경은 필수로 갖춰져야 한다.
이를 위한 대표적인 기술인 Jenkins를 VM에 설치하고, 이를 이용하여 CI/CD 환경을 구축해 보자.
참고로 본 글은 Virtualbox, Vagrant를 이용하여 만들어진 아래 스크립트를 기준으로 세부 내용을 설명한다.
해당 스크립트는 크게 VirtualBox로 OS를 생성하는 파트와 CI/CD를 위한 프로그램들을 설치하는 파트로 구분된다.
https://raw.githubusercontent.com/k8s-1pro/install/main/ground/cicd-server/vagrant-2.4.3/Vagrantfile
Vagrant 설치 스크립트

참고로 VM 접속을 위한 Host-Only Network는 필수로 인프라 환경의 VM과 다른 IP를 구성해야 한다.
또한 해당 VM이 외부 인터넷에 접속하기 위한 NAT는 IP가 자동으로 할당되는데,
인터넷만 사용하기 위한 용도여서 인프라 환경의 NAT와 IP가 같아도 문제는 없다.
스크립트의 기본 구성과 절차는 아래와 같다.
- Linux 기본 설정
- Jenkins에서 배포할 때 사용할 kubectl 설치
- Jenkins에서 컨테이너 빌드 및 Docker Hub로 이미지를 업로드할 Docker 설치
- 소스 빌드를 위한 OpenJDK 설치
- 소스 빌드를 위한 Gradle 설치
- 빌드에 사용할 소스 코드 및 릴리즈 파일을 가져오기 위한 Git 설치
- CI/CD에 사용할 Jenkins 설치
CI/CD 환경 구축 전 사전 준비
CI/CD 환경 구축을 위해서는 아래와 같은 사전 준비가 필요하다.

- CI/CD 서버 설치
- 서버 접속
- Jenkins 초기 세팅(사용자 생성, 플러그인 설치 등)
- Jenkins 전역 설정 (직접 설치한 Gradle 및 JDK 등을 Jenkins에서 사용할 수 있도록 설정)
- 빌드된 컨테이너 이미지 저장을 위한 Docker Hub 가입
- Docker Hub 사용 설정
- Docker Hub로 이미지를 업로드할 수 있도록 CI/CD 서버에서 Docker Login
- Jenkins에서 Docker를 사용할 수 있도록 권한 부여
- 인프라 서버에 존재하는 인증서를 CI/CD 서버에 복사
- GitHub 가입 및 설정
- 빌드할 Application의 소스 코드가 있는 GitHub Repository 구성
- 컨테이너 빌드를 위한 Dockerfile, 쿠버네티스 배포에 필요한 yaml 파일을 저장할 GitHub Repository 구성
- 빌드/배포 설정 및 실행
Jenkins Item 구성
준비가 되었으면 아래 절차가 되도록 Jenkins로 CI/CD 환경을 구축해 보자.
각 절차 당 하나의 Jenkins Item으로 구성할 수 있다.
- 브라우저에서 Jenkins 대시보드에 접속하여 소스 빌드 실행
- 빌드할 Application의 소스 코드가 있는 GitHub Repository와 연동하여 소스 다운로드
- Jenkins에서 컨테이너 빌드를 통해 위에서 만들어진 jar 파일을 포함한 이미지 빌드 및 Docker Hub에 업로드
- 컨테이너 빌드를 위한 Dockerfile이 존재하는 GitHub Repository와 연동하여 이미지 빌드
- Jenkins에서 배포 명령 실행하여 해당 이미지를 기반으로 쿠버네티스 배포
- 쿠버네티스 배포에 필요한 yaml 파일이 존재하는 GitHub Repository와 연동하여 배포
출처
https://inf.run/Ncohz
쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2 강의 | 일프로 - 인프런
일프로 | ⚓쿠버네티스(Kuberentes, Containerd, Docker Hub, Helm, Jenkins, Kustomize, ArgoCD) 🙇♀️아직 망설이시나요? 🙋♂️저만 믿고 따라오세요! 이론과 실습으로 당신의 실력을 ⭐어나더 레벨로 만
www.inflearn.com
반응형
'Kubernetes' 카테고리의 다른 글
[Kubernetes] Jenkins를 활용한 Blue/Green 배포 (0) | 2025.06.14 |
---|---|
[Kubernetes] 배포를 시작하기 전에 반드시 알아야 할 것들 (0) | 2025.06.12 |
[Kubernetes] DevOps 한 방 정리 (4) | 2025.06.08 |
[Kubernetes] Component 동작으로 이해하기 (1) | 2025.06.06 |
[Kubernetes] Application 기능으로 이해하는 PV/PVC, Deployment, Service, HPA (1) | 2025.06.05 |