본문으로 건너뛰기

서비스 등록

KIWI 플랫폼에 서비스를 등록하여 빌드와 배포를 관리할 수 있습니다. KIWI는 GitLab, GitHub, Docker Hub 세 가지 소스 타입을 지원하며, 소스 타입에 따라 등록 절차가 다릅니다.

서비스 등록 모달

왜 서비스를 등록하나요?

서비스를 등록하면 다음과 같은 DevSecOps 워크플로우를 자동화할 수 있습니다:

코드 푸시 → 자동 빌드 → 보안 스캔 → 테스트 → 배포
  • Git 저장소와 연동하여 코드 변경 시 자동 빌드
  • SAST, SCA, DAST 등 보안 취약점 자동 분석
  • 클릭 한 번으로 Kubernetes 또는 Docker에 배포
DevSecOps란?

DevSecOps는 개발(Development), 보안(Security), 운영(Operations)을 통합한 접근 방식입니다. 개발 초기 단계부터 보안을 고려하여 더 안전한 소프트웨어를 빠르게 제공할 수 있습니다.

사전 요구사항

서비스를 등록하기 전에 다음 조건이 충족되어야 합니다:

  • 소스 타입에 따라 준비물이 다릅니다:
    • GitLab: GitLab 저장소 URL과 접근 권한
    • GitHub: GitHub Personal Access Token (PAT)
    • Docker Hub: 사용할 이미지 이름 (공개 이미지는 인증 불필요, 프라이빗 이미지는 Docker Hub Access Token 필요)
  • 서비스를 배포할 **런타임(K8s 클러스터 또는 Docker)**이 이미 등록되어 있어야 합니다.
런타임이 아직 없으신가요?

서비스를 등록하기 전에 런타임을 먼저 등록해야 합니다:


등록 절차

Step 1: 서비스 관리 페이지 이동

  1. 좌측 메뉴에서 [서비스 관리] 페이지를 클릭합니다.
  2. 우측 상단의 추가하기 버튼을 클릭합니다.

Step 2: 소스 타입 선택

서비스 등록 모달이 열리면 소스 타입을 선택합니다:

  • GitLab: GitLab 저장소의 프로젝트를 등록합니다. 기존 프로젝트 등록, 새 프로젝트 생성, URL 직접 입력을 지원합니다.
  • GitHub: GitHub 리포지토리를 등록합니다. Personal Access Token으로 인증하여 리포지토리 목록에서 선택합니다.
  • Docker Hub: Docker Hub의 공개/프라이빗 이미지를 직접 배포합니다. 소스코드 빌드 없이 이미지를 바로 사용할 수 있습니다.
어떤 소스 타입을 선택해야 할까요?
  • 직접 개발한 코드가 있으면 → GitLab 또는 GitHub (코드가 있는 저장소 선택)
  • 이미 만들어진 이미지를 배포하려면 → Docker Hub (MySQL, Redis 같은 공개 이미지나 직접 빌드한 이미지)

GitLab 서비스 등록

등록 방식 선택

GitLab을 선택하면 다음 방식 중 하나를 선택합니다:

  • 기존 프로젝트 등록: 이미 GitLab에 있는 프로젝트를 KIWI에 연결합니다.
  • 새 프로젝트 생성: GitLab에 새 프로젝트를 생성하고 KIWI에 등록합니다.
  • URL 설정: Git 저장소 URL을 직접 입력합니다.

기본 정보 입력

  • 서비스명 (필수): 서비스를 식별할 수 있는 고유한 이름입니다. 영문 소문자, 숫자, 하이픈(-)만 사용하는 것을 권장합니다.
  • Git URL (필수): 저장소 주소입니다 (예: https://gitlab.com/org/repo.git)
  • 브랜치 (필수): 빌드에 사용할 기본 브랜치입니다 (예: main, develop)
  • 인증 토큰: 프라이빗 저장소의 경우 GitLab Personal Access Token (glpat-xxxx...)을 입력합니다.
Personal Access Token 권한

GitLab → Settings → Access Tokens에서 토큰을 생성할 때 다음 권한을 선택하세요:

  • api (필수): KIWI의 전체 기능(빌드, 배포, Auto CI, 프로젝트 생성 등)을 사용하기 위해 필요합니다.
  • read_repository (필수): 소스코드를 가져와 빌드하기 위해 필요합니다.
  • read_api (Auto CI 사용 시 필요): Webhook을 통한 자동 빌드에 필요합니다.

GitHub 서비스 등록

Step 1: GitHub 연결

  • Personal Access Token (필수): GitHub에서 발급한 PAT를 입력합니다 (ghp_xxxx...)
    • GitHub → Settings → Developer settings → Personal access tokens에서 생성합니다.
    • repo 스코프 권한이 필요합니다.
  • PAT를 입력하고 연결 버튼을 클릭하면 리포지토리 목록이 조회됩니다.

Step 2: 리포지토리 선택

  • 연결된 GitHub 계정의 리포지토리 목록에서 등록할 리포지토리를 선택합니다.
  • 선택하면 해당 리포지토리의 브랜치 목록이 자동으로 조회됩니다.

Step 3: 브랜치 및 서비스명 입력

  • 브랜치 (필수): 빌드에 사용할 브랜치를 선택합니다.
  • 서비스명 (필수): KIWI에서 사용할 서비스 이름을 입력합니다.

Step 4: 등록 완료

등록 버튼을 클릭하면 GitHub 리포지토리가 KIWI 서비스로 등록됩니다.


Docker Hub 서비스 등록

Docker Hub 서비스 등록은 소스코드 빌드 없이 이미 빌드된 Docker 이미지를 직접 배포할 때 사용합니다.

Step 1: 배포 인프라 선택

  • 배포 인프라 (필수): 이미지를 배포할 런타임을 선택합니다 (K8s 또는 Docker)
  • 서비스명 (필수): 서비스 이름을 입력합니다.

Step 2: 이미지 구성

하나의 서비스에 여러 컨테이너 이미지를 포함할 수 있습니다. 각 이미지별로 다음 정보를 입력합니다:

  • 컨테이너 이름 (필수): 컨테이너를 식별할 이름입니다 (예: web, db)
  • 이미지 (필수): Docker Hub 이미지 이름입니다. 검색 기능으로 공개 이미지를 찾거나 직접 입력할 수 있습니다.
    • 공식 이미지: mysql, nginx, redis, postgres
    • 사용자 이미지: username/repo
  • 태그 (필수): 이미지 버전입니다. 선택한 이미지의 사용 가능한 태그가 자동으로 조회됩니다 (예: latest, 8.0, alpine)
  • 포트 (선택): 컨테이너가 사용하는 포트 번호입니다.
  • 환경 변수 (선택): 컨테이너에 전달할 환경 변수입니다 (키-값 형식)
  • 볼륨 (선택): 영구 저장소 마운트 설정입니다 (마운트 경로, 크기)
다중 이미지 서비스 예시

웹 애플리케이션 + 데이터베이스를 하나의 서비스로 구성할 수 있습니다:

  • 이미지 1: nginx:alpine (웹 서버, 포트 80)
  • 이미지 2: mysql:8.0 (데이터베이스, 포트 3306, 볼륨 /var/lib/mysql)

Step 3: Docker Hub 인증 (선택)

프라이빗 리포지토리의 이미지를 사용하는 경우에만 인증 정보를 입력합니다:

  • Username: Docker Hub 사용자명
  • Access Token: Docker Hub Access Token

공개 이미지(mysql, nginx 등)를 사용하는 경우 인증 정보는 필요하지 않습니다.

Step 4: 등록 완료

등록 버튼을 클릭하면 Docker Hub 서비스가 등록됩니다. Docker Hub 서비스는 빌드 단계 없이 바로 배포할 수 있습니다.


소스 타입별 기능 비교

  • GitLab/GitHub (Git 소스)

    • 소스코드 빌드 (Dockerfile 또는 Build Wizard)
    • Auto CI (Git Push 시 자동 빌드)
    • 보안 스캔 (SAST, SCA, DAST)
    • 빌드된 이미지를 K8s/Docker에 배포
  • Docker Hub (이미지 소스)

    • 빌드 없이 이미지 직접 배포
    • 다중 컨테이너 구성 가능
    • 공개/프라이빗 이미지 모두 지원
    • K8s/Docker에 배포

등록 후 사용 가능한 기능

서비스 등록이 완료되면 다음 기능을 사용할 수 있습니다:

  • 수동 빌드: 버튼 클릭으로 즉시 Docker 이미지를 빌드합니다.

  • Auto CI: Git Push 이벤트 발생 시 자동으로 빌드를 실행합니다.

    • Webhook을 통해 코드 푸시를 감지합니다.
    • 설정한 브랜치에 푸시될 때만 빌드가 트리거됩니다.
  • Build Wizard: Dockerfile이 없는 프로젝트를 위해 자동으로 Dockerfile을 생성합니다.

    • Node.js, Python, Java, Go 등 다양한 언어/프레임워크 지원
  • 보안 스캔: SAST, SCA, DAST 등 다양한 보안 분석을 실행합니다.

    • 코드 취약점 분석 (SAST)
    • 오픈소스 라이브러리 취약점 분석 (SCA)
    • 실행 중인 애플리케이션 취약점 분석 (DAST)
  • 배포: 빌드된 이미지를 Kubernetes 또는 Docker 환경에 배포합니다.

    • 무중단 배포 (Rolling Update) 지원
    • 배포 이력 관리 및 롤백 기능

다음 단계

서비스 등록이 완료되었습니다! 이제 CI/CD 파이프라인을 구축할 차례입니다: