Skip to main content

빌드/배포 시나리오

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: 이미지 레지스트리 설정

  • 입력 항목:
    항목설명예시
    레지스트리 URLHarbor/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 요소: 빌드로그뷰어 - 실시간 빌드 로그 확인
  • 단계별 로그:
    1. 소스 클론
    2. Dockerfile 분석
    3. 레이어 빌드
    4. 이미지 푸시

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 요청최소 CPU100m
    CPU 제한최대 CPU500m
    메모리 요청최소 메모리128Mi
    메모리 제한최대 메모리512Mi

Step 7: 환경 변수 설정 (선택사항)

  • 설정 방식:
    방식설명
    직접 입력키-값 쌍 직접 입력
    ConfigMapK8s ConfigMap 참조
    SecretK8s 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가 시작되지 않습니다리소스 제한 및 이미지 경로 확인[서비스 관리]
롤백이 안 됩니다이전 이미지가 레지스트리에 존재하는지 확인[서비스 관리]

다음 단계

빌드/배포 설정이 완료되면 다음 작업을 진행하세요:

  • 보안 스캔 설정 - 빌드 시 자동 보안 스캔
  • 모니터링 대시보드에서 배포 상태 확인
  • 자동 배포 파이프라인 구성