빌드/배포 시나리오
KIWI에서 CI 설정, 컨테이너 이미지 빌드, Kubernetes 및 Docker 배포를 설정하는 방법을 안내합니다.
빌드/배포 개요
| 단계 | 설명 | 도구 |
|---|---|---|
| 빌드 설정 | Dockerfile, 빌드 옵션 구성 | Kaniko |
| 이미지 빌드 | 컨테이너 이미지 생성 | Kaniko |
| 이미지 푸시 | 레지스트리에 이미지 저장 | Harbor/DockerHub |
| 배포 | 런타임 환경에 배포 | Kubernetes/Docker |
시나리오 1: CI 빌드 설정하기
Q. 서비스의 CI 빌드 파이프라인을 설정하고 싶습니다
사전 조건: 서비스가 **[서비스 관리]**에 등록되어 있어야 합니다.
단계별 안내:
Step 1: 서비스 상세 페이지 이동
- 이동 경로: [서비스 관리]
- 동작: 빌드할 서비스 클릭하여 상세 페이지 이동
Step 2: 빌드 탭 선택
- UI 요소:
빌드탭- 상단 탭에서 "빌드" 클릭
Step 3: 빌드 설정 구성
- UI 요소:
빌드설정버튼- "빌드 설정" 버튼 클릭
Step 4: Dockerfile 설정
- 옵션:
방식 설명 사용 시점 자동 감지 저장소 내 Dockerfile 자동 탐지 기본 권장 경로 지정 Dockerfile 경로 직접 입력 다중 Dockerfile 빌드 마법사 Dockerfile 자동 생성 Dockerfile 없을 때 - 경로 예시:
./Dockerfile또는./docker/Dockerfile.prod
Step 5: 빌드 인자 설정 (선택사항)
- 입력 항목:
항목 설명 예시 빌드 컨텍스트 빌드 시작 디렉토리 .빌드 인자 (ARG) Dockerfile ARG 값 NODE_ENV=production타겟 스테이지 멀티스테이지 타겟 production
Step 6: 이미지 레지스트리 설정
- 입력 항목:
항목 설명 예시 레지스트리 URL Harbor/DockerHub 주소 harbor.company.com프로젝트/네임스페이스 이미지 저장 위치 library이미지 이름 이미지 이름 my-web-app태그 규칙 버전 태깅 방식 ${BRANCH}-${SHORT_SHA}
Step 7: 빌드 트리거 설정
- 옵션:
트리거 설명 수동 수동 빌드 버튼 클릭 시 커밋 푸시 특정 브랜치에 푸시 시 태그 생성 태그 생성 시 스케줄 cron 스케줄 기반
Step 8: 설정 저장
- UI 요소: "저장" 버튼 클릭
- 확인: 빌드 설정 완료 메시지
시나리오 2: 컨테이너 이미지 빌드하기
Q. 설정된 빌드 파이프라인으로 이미지를 빌드하고 싶습니다
단계별 안내:
Step 1: 서비스 상세 페이지 이동
- 이동 경로: [서비스 관리] → 서비스 선택
Step 2: 빌드 탭 선택
- UI 요소:
빌드탭- "빌드" 탭 클릭
Step 3: 빌드 브랜치 선택
- UI 요소:
브랜치선택드롭다운- 빌드할 브랜치 선택 - 참고: 기본값은 서비스 등록 시 설정한 기본 브랜치
Step 4: 빌드 실행
- UI 요소:
빌드시작버튼- "빌드 시작" 버튼 클릭
Step 5: 빌드 로그 확인
- UI 요소:
빌드로그뷰어- 실시간 빌드 로그 확인 - 단계별 로그:
- 소스 클론
- Dockerfile 분석
- 레이어 빌드
- 이미지 푸시
Step 6: 빌드 완료 확인
- 확인 사항:
- 빌드 상태: 성공/실패
- 생성된 이미지 태그
- 이미지 크기
- 빌드 소요 시간
시나리오 3: Kubernetes에 배포하기
Q. 빌드된 이미지를 Kubernetes 클러스터에 배포하고 싶습니다
사전 조건:
- Kubernetes 클러스터가 **[런타임 환경]**에 등록되어 있어야 합니다
- 이미지가 빌드되어 레지스트리에 푸시되어 있어야 합니다
단계별 안내:
Step 1: 서비스 상세 페이지 이동
- 이동 경로: [서비스 관리] → 서비스 선택
Step 2: 배포 탭 선택
- UI 요소:
배포탭- "배포" 탭 클릭
Step 3: 배포 환경 선택
- UI 요소:
환경선택드롭다운- 배포할 환경 선택 - 환경 구분:
환경 설명 Development 개발 환경 Staging 스테이징 환경 Production 운영 환경
Step 4: 배포 대상 클러스터 선택
- UI 요소:
클러스터선택드롭다운- K8s 클러스터 선택
Step 5: 배포 설정 구성
- 입력 항목:
항목 설명 예시 네임스페이스 K8s 네임스페이스 production이미지 태그 배포할 이미지 버전 main-abc123레플리카 수 Pod 복제본 개수 3
Step 6: 리소스 설정
- 입력 항목:
항목 설명 예시 CPU 요청 최소 CPU 100mCPU 제한 최대 CPU 500m메모리 요청 최소 메모리 128Mi메모리 제한 최대 메모리 512Mi
Step 7: 환경 변수 설정 (선택사항)
- 설정 방식:
방식 설명 직접 입력 키-값 쌍 직접 입력 ConfigMap K8s ConfigMap 참조 Secret K8s Secret 참조
Step 8: 배포 전략 선택
- 옵션:
전략 설명 Rolling Update 점진적 업데이트 (기본) Recreate 전체 재시작 Blue-Green 무중단 전환
Step 9: 배포 실행
- UI 요소:
배포버튼- "배포" 버튼 클릭 - 확인: 배포 진행 상태 모니터링
Step 10: 배포 상태 확인
- 확인 사항:
- Pod 상태: Running/Pending/Failed
- 레플리카 수: Ready/Total
- 이벤트 로그
시나리오 4: Docker/Podman에 배포하기
Q. 빌드된 이미지를 Docker 런타임에 배포하고 싶습니다
사전 조건: Docker/Podman 런타임이 **[런타임 환경]**에 등록되어 있어야 합니다.
단계별 안내:
Step 1: 서비스 상세 페이지 이동
- 이동 경로: [서비스 관리] → 서비스 선택
Step 2: 배포 탭 선택
- UI 요소:
배포탭- "배포" 탭 클릭
Step 3: Docker 배포 선택
- UI 요소: 배포 유형에서 "Docker" 선택
Step 4: 배포 대상 런타임 선택
- UI 요소:
런타임선택드롭다운- Docker 런타임 선택
Step 5: 컨테이너 설정
- 입력 항목:
항목 설명 예시 컨테이너 이름 컨테이너 식별 이름 my-web-app이미지 태그 배포할 이미지 harbor.company.com/library/app:latest포트 매핑 호스트:컨테이너 8080:80
Step 6: 볼륨 마운트 설정 (선택사항)
- 입력 항목:
항목 설명 예시 호스트 경로 호스트 디렉토리 /data/app컨테이너 경로 컨테이너 내 경로 /app/data읽기 전용 읽기만 허용 false
Step 7: 환경 변수 설정
- UI 요소:
환경변수입력- 환경 변수 키-값 입력
Step 8: 배포 실행
- UI 요소: "배포" 버튼 클릭
Step 9: 컨테이너 상태 확인
- 확인 사항:
- 컨테이너 상태: Running/Stopped/Error
- 로그 출력
- 리소스 사용량
시나리오 5: 빌드 이력 및 롤백
Q. 이전 버전으로 롤백하고 싶습니다
단계별 안내:
Step 1: 서비스 상세 페이지 이동
- 이동 경로: [서비스 관리] → 서비스 선택
Step 2: 배포 탭 선택
- UI 요소:
배포탭- "배포" 탭 클릭
Step 3: 배포 이력 확인
- UI 요소:
배포이력테이블- 배포 이력 목록 확인 - 정보 포함:
- 배포 시간
- 이미지 태그
- 배포 상태
- 배포자
Step 4: 롤백할 버전 선택
- 동작: 롤백할 배포 항목의 "롤백" 버튼 클릭
Step 5: 롤백 확인
- UI 요소: 확인 모달에서 "롤백 실행" 클릭
- 주의: 현재 배포가 이전 버전으로 교체됩니다
Step 6: 롤백 완료 확인
- 확인: 서비스 상태 및 Pod 상태 확인
시나리오 6: 빌드 캐시 및 최적화
Q. 빌드 시간을 단축하고 싶습니다
단계별 안내:
Step 1: 빌드 설정 이동
- 이동 경로: [서비스 관리] → 서비스 선택 → 빌드 탭 → 빌드 설정
Step 2: 캐시 설정 활성화
- 옵션:
캐시 유형 설명 레이어 캐시 Docker 레이어 캐시 활용 레지스트리 캐시 레지스트리의 기존 이미지 활용 로컬 캐시 빌드 노드의 로컬 캐시
Step 3: Dockerfile 최적화 팁
- 권장사항:
- 변경이 적은 레이어를 앞에 배치
- 멀티스테이지 빌드 사용
- .dockerignore 파일 활용
- 불필요한 파일 제외
관련 질문
자주 묻는 질문
| 질문 | 답변 | 관련 페이지 |
|---|---|---|
| 빌드가 실패합니다 | Dockerfile 문법 및 의존성 확인 | [서비스 관리] |
| 이미지 푸시가 실패합니다 | 레지스트리 인증 정보 확인 | [서비스 관리] |
| 배포 후 Pod가 시작되지 않습니다 | 리소스 제한 및 이미지 경로 확인 | [서비스 관리] |
| 롤백이 안 됩니다 | 이전 이미지가 레지스트리에 존재하는지 확인 | [서비스 관리] |
다음 단계
빌드/배포 설정이 완료되면 다음 작업을 진행하세요:
- 보안 스캔 설정 - 빌드 시 자동 보안 스캔
- 모니터링 대시보드에서 배포 상태 확인
- 자동 배포 파이프라인 구성