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

왜 서비스를 등록하나요?
서비스를 등록하면 다음과 같은 DevSecOps 워크플로우를 자동화할 수 있습니다:
코드 푸시 → 자동 빌드 → 보안 스캔 → 테스트 → 배포
- Git 저장소와 연동하여 코드 변경 시 자동 빌드
- SAST, SCA, DAST 등 보안 취약점 자동 분석
- 클릭 한 번으로 Kubernetes 또는 Docker에 배포
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: 서비스 관리 페이지 이동
- 좌측 메뉴에서 [서비스 관리] 페이지를 클릭합니다.
- 우측 상단의 서비스 등록/생성 버튼을 클릭합니다.
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이 "GitLab 설정"에서 토큰을 등록할 때 다음 권한이 필요합니다.
api(필수): 빌드, 배포, Auto CI, 프로젝트 생성 등 전체 기능read_repository(필수): 소스코드 조회read_api(Auto CI 사용 시): Webhook 기반 자동 빌드
GitHub 서비스 등록
기존 프로젝트 등록
기관 admin이 등록한 GitHub PAT로 자동 조회된 리포지토리 목록에서 선택합니다.
- 리포지토리 선택: 조회된 리포지토리 중 등록할 항목 선택
- 브랜치 (필수): 선택한 리포지토리의 브랜치 목록에서 선택
- 서비스명 (필수): KIOPS에서 사용할 서비스 이름
새 프로젝트 생성
GitHub에 새 리포지토리를 만들고 동시에 KIOPS 서비스로 등록합니다.
- 조직/사용자 선택: 새 리포지토리를 생성할 GitHub 소유자
- 리포지토리 이름 (필수)
- 서비스명 (필수)
- 브랜치: 기본값은
main
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 파이프라인을 구축할 차례입니다.
- Auto CI 설정 - Git Push 시 자동 빌드 설정하기
- Build Wizard - Dockerfile 자동 생성하기
- 보안 스캔 설정 - SAST/SCA/DAST 분석 설정하기