본문 바로가기
문서 목차
ORKESTRIX설치

GitLab (SCM/CI)

소스코드 버전 관리(SCM) 및 자동 빌드/테스트(CI) 를 지원하는 GitLab CE를 구성합니다. 내장 PostgreSQL/Redis/MinIO/Container Registry/Pages와 GitLab Runner(Kubernetes executor)까지 함께 배포됩니다.

QUANTUM C&S

소스코드 버전 관리(SCM) 및 자동 빌드/테스트(CI)를 지원하는 GitLab CE를 구성합니다. 내장 PostgreSQL/Redis/MinIO/Container Registry/Pages와 GitLab Runner(Kubernetes executor)까지 함께 배포됩니다.

GitLab Runner는 Kubernetes executor로 동작하며, 파이프라인 잡마다 임시 빌드 파드를 새로 띄워 실행합니다.

설정값

inventory/qks/group_vars/all/all-k8s.yaml:

qks_gitlab_enabled: true
qks_gitlab_version: 9.11.4
qks_gitlab_fqdn: "ci.{{ kube_default_domain }}"
qks_gitlab_namespace: qks-cicd
qks_gitlab_release: qks-ci
qks_gitlab_initial_group: QKS

버전을 10.0.0 이상으로 올리려면

차트 v10.0.0부터 내장 PostgreSQL/Redis/오브젝트스토리지가 제거되고, 아래 세 가지를 외부 서비스로 직접 연결해야 합니다.

  1. PostgreSQL: global.psql.host, global.psql.password.secret 등에 기존 Patroni 클러스터(qks-patroni) 접속 정보 지정
  2. Redis: global.redis.host에 기존 Redis(qks-redis) 접속 정보 지정
  3. 오브젝트 스토리지: global.appConfig.object_store에 기존 Ceph RGW(S3) 접속 정보 지정 (Milvus/기타 컴포넌트가 쓰는 것과 동일한 방식)

세 가지 연결을 모두 마친 뒤 qks_gitlab_version을 10.x 이상으로 올려 재실행합니다. 자세한 값 경로는 공식 마이그레이션 가이드(https://docs.gitlab.com/charts/installation/migration/bundled_chart_migration/)를 참고하세요.

실행

./install.sh ubuntu plays/qks-gitlab.yaml

설치 흐름

./install.sh ubuntu plays/qks-gitlab.yaml
  ├─ 1. 접속 도메인을 각 노드 /etc/hosts에 등록
  ├─ 2. Helm 저장소 등록 ('gitlab')
  ├─ 3. Root 계정/OIDC/커스텀 CA 인증서 Secret 생성
  ├─ 4. Helm으로 GitLab 배포 (webservice+gitaly+gitlab-shell+registry+pages+runner+postgresql+redis+minio)
  ├─ 5. 오브젝트 스토리지(MinIO) 연동 설정
  └─ 6. CI/CD용 그룹(QKS, CICD) 및 API 토큰 생성

설치 확인

kubectl get pods -n <qks_gitlab_namespace>

webservice · gitaly · gitlab-shell · registry · gitlab-pages · gitlab-runner · postgresql · redis-master · minio · sidekiq · toolbox 파드가 모두 Running이어야 합니다.

실제 동작 확인

웹 접속:

curl -k -s -o /dev/null -w "%{http_code}\n" https://<qks_gitlab_fqdn>/users/sign_in

200이 나오면 정상입니다.

SCM(소스코드 버전 관리) 확인:

# 프로젝트 생성
curl -k -X POST -H "PRIVATE-TOKEN: <토큰>" \
  --data 'name=test-project&initialize_with_readme=true' \
  https://<qks_gitlab_fqdn>/api/v4/projects

# git clone/push
git clone https://root:<토큰>@<qks_gitlab_fqdn>/root/test-project.git
cd test-project
echo "test" > test.txt && git add . && git commit -m "test"
git push origin main

push 결과에 커밋 해시가 정상적으로 갱신되면 SCM 정상입니다.

CI(자동 빌드/테스트) 확인:

cat > .gitlab-ci.yml <<'EOF'
variables:
  GIT_SSL_NO_VERIFY: "true"

test_job:
  stage: test
  script:
    - echo CI_TEST_SUCCESS
EOF
git add .gitlab-ci.yml && git commit -m "add ci" && git push origin main
curl -k -H "PRIVATE-TOKEN: <토큰>" https://<qks_gitlab_fqdn>/api/v4/projects/<id>/pipelines

가장 최근 파이프라인의 status가 success이면 정상입니다. GitLab Runner가 Kubernetes executor로 임시 빌드 파드를 띄워 잡을 실행하고 자동으로 정리합니다.

자체 서명 인증서 환경이라 CI 잡의 git clone 단계가 SSL 인증서 신뢰 문제로 실패할 수 있습니다. 위 예시처럼 프로젝트의 .gitlab-ci.yml에 GIT_SSL_NO_VERIFY: "true"를 추가하면 됩니다.

다음 단계