본문으로 건너뛰기

서비스 등록

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

서비스 등록 모달

왜 서비스를 등록하나요?

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

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

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

사전 요구사항

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

  • 서비스를 배포할 런타임(K8s 클러스터 또는 Docker) 이 이미 등록되어 있어야 합니다.
  • GitLab/GitHub 사용 시: admin이 기관 단위 토큰을 미리 등록해야 합니다. 일반 사용자는 모달에서 토큰을 직접 입력하지 않습니다.
  • Docker Hub 사용 시: 공개 이미지는 인증 불필요, 프라이빗 이미지는 Docker Hub Access Token이 필요합니다.
런타임이 아직 없으신가요?

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


소스 타입별 admin 전용 메뉴와 사용자 메뉴

서비스 등록 모달의 동작은 소스 타입과 사용자 역할(admin/일반) 에 따라 달라집니다. 각 소스 타입은 admin 전용 설정 메뉴를 가지며, 일반 사용자는 admin이 미리 등록한 토큰을 자동으로 사용합니다.

GitLab 액션 메뉴 (총 4개)

  • GitLab 설정 [admin] - GitLab 서버 URL과 액세스 토큰을 기관 단위로 등록
  • GitLab 계정 생성 [admin] - 기관 사용자용 GitLab 계정 일괄 생성
  • 기존 프로젝트 등록 - 기관 토큰으로 조회된 GitLab 프로젝트 중 선택
  • 새 프로젝트 생성 - 기관 토큰을 사용해 GitLab에 새 프로젝트를 생성하고 KIOPS에 등록

일반 사용자에게는 기존 프로젝트 등록새 프로젝트 생성 2개 메뉴만 보입니다.

GitHub 액션 메뉴

  • GitHub 설정 [admin] - GitHub Personal Access Token을 기관 단위로 등록
  • 기존 프로젝트 등록 - 기관 토큰으로 조회된 GitHub 리포지토리 중 선택
  • 새 프로젝트 생성 - 기관 토큰을 사용해 GitHub에 새 리포지토리를 생성하고 KIOPS에 등록

일반 사용자에게는 기존 프로젝트 등록새 프로젝트 생성 2개 메뉴만 보입니다.

기관 토큰 자동 사용

서비스 등록 시 토큰을 별도로 입력하지 않습니다. 백엔드는 등록 요청 시 gitApi.getGitAdminTokens로 기관에 저장된 admin 토큰을 조회하여 자동으로 사용합니다. 토큰이 등록되어 있지 않으면 admin에게 "GitLab 설정" 또는 "GitHub 설정"을 요청하세요.

Docker Hub 액션 메뉴

  • Docker Hub 이미지 등록 - 이미지 이름과 태그를 직접 입력하여 등록 (소스 빌드 없이 바로 배포)

등록 절차

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

  1. 좌측 메뉴에서 [서비스 관리] 페이지를 클릭합니다.
  2. 우측 상단의 서비스 등록/생성 버튼을 클릭합니다.

Step 2: 소스 타입 선택

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

  • GitLab: 기존 프로젝트 등록 / 새 프로젝트 생성
  • GitHub: 기존 프로젝트 등록 / 새 프로젝트 생성
  • Docker Hub: 이미 빌드된 이미지를 직접 배포
어떤 소스 타입을 선택해야 할까요?
  • 직접 개발한 코드가 있으면 → GitLab 또는 GitHub (코드가 있는 저장소 선택)
  • 이미 만들어진 이미지를 배포하려면 → Docker Hub (MySQL, Redis 같은 공개 이미지나 직접 빌드한 이미지)

GitLab 서비스 등록

기존 프로젝트 등록

기관 admin이 등록한 GitLab 토큰으로 자동 조회된 프로젝트 목록에서 선택합니다.

  • 프로젝트 선택: 조회된 GitLab 프로젝트 중 등록할 프로젝트를 선택합니다.
  • 브랜치 (필수): 빌드에 사용할 브랜치 (예: main, develop)
  • 서비스명 (필수): KIOPS에서 사용할 서비스 이름 (영문 소문자, 숫자, 하이픈 권장)

새 프로젝트 생성

GitLab 서버에 새 프로젝트를 만들고 동시에 KIOPS 서비스로 등록합니다.

  • 그룹/네임스페이스 선택: 새 프로젝트를 생성할 GitLab 그룹
  • 프로젝트 이름 (필수)
  • 서비스명 (필수): KIOPS 서비스 이름
  • 브랜치: 기본값은 main
admin이 등록한 토큰 권한

admin이 "GitLab 설정"에서 토큰을 등록할 때 다음 권한이 필요합니다.

  • api (필수): 빌드, 배포, Auto CI, 프로젝트 생성 등 전체 기능
  • read_repository (필수): 소스코드 조회
  • read_api (Auto CI 사용 시): Webhook 기반 자동 빌드

GitHub 서비스 등록

기존 프로젝트 등록

기관 admin이 등록한 GitHub PAT로 자동 조회된 리포지토리 목록에서 선택합니다.

  • 리포지토리 선택: 조회된 리포지토리 중 등록할 항목 선택
  • 브랜치 (필수): 선택한 리포지토리의 브랜치 목록에서 선택
  • 서비스명 (필수): KIOPS에서 사용할 서비스 이름

새 프로젝트 생성

GitHub에 새 리포지토리를 만들고 동시에 KIOPS 서비스로 등록합니다.

  • 조직/사용자 선택: 새 리포지토리를 생성할 GitHub 소유자
  • 리포지토리 이름 (필수)
  • 서비스명 (필수)
  • 브랜치: 기본값은 main
GitHub 서비스의 namespace = service_name

GitHub 소스 타입으로 등록된 서비스는 K8s 배포 시 namespace가 자동으로 service_name과 동일하게 설정됩니다. 별도로 namespace를 지정할 필요가 없습니다.


Docker Hub 서비스 등록

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

Step 1: 배포 인프라 선택

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

Step 2: 이미지 구성

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

  • 컨테이너 이름 (필수): 컨테이너를 식별할 이름 (예: web, db)
  • 이미지 (필수): Docker Hub 이미지 이름. 공식 이미지(mysql, nginx 등) 또는 사용자 이미지(username/repo)
  • 태그 (필수): 선택한 이미지의 사용 가능한 태그 (예: latest, 8.0, alpine)
  • 포트 (선택): 컨테이너가 사용하는 포트 번호
  • 환경 변수 (선택): 키-값 형식
  • 볼륨 (선택): 마운트 경로 및 크기
  • ingressPath (선택, K8s 배포 시): Ingress에서 사용할 경로 (예: /api)
  • isInternal (선택, K8s 배포 시): 내부 전용 서비스(ClusterIP) 여부
다중 이미지 서비스 예시

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

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

Step 3: Docker Hub 인증 (선택)

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

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

공개 이미지를 사용하는 경우 인증 정보는 필요하지 않습니다.

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 이벤트 발생 시 자동 빌드.
  • Build Wizard: Dockerfile이 없는 프로젝트의 자동 Dockerfile 생성.
  • 보안 스캔: SAST/SCA/DAST.
  • 배포: K8s 또는 Docker 환경에 배포 (RollingUpdate, 롤백 지원).

다음 단계

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