아키텍처

우리는 구성요소의 세 가지 티어를 지원할 계획입니다.

  1. Docker Containers
  2. 스케줄러 (Kubernetes)
  3. 상위 수준 구성 도구 (Helm)

고객이 설치하는 주요 방법은 이 리포지토리의 Helm 차트일 것입니다. 앞으로 우리는 아마존 클라우드포메이션이나 도커 스웜과 같은 다른 배포 방법도 제공할 수도 있습니다.

도커 컨테이너 이미지

기초로, 각 서비스에 대해 Docker 컨테이너를 생성할 것입니다. 이는 이미지 크기와 복잡성을 줄이면서 수평적 확장이 더 쉬워질 것입니다. 구성은 Docker에 대해 표준적인 방법으로 전달되어야 합니다. 아마 환경 변수나 마운트된 파일일 것입니다. 이는 스케줄러 소프트웨어와 깔끔한 공통 인터페이스를 제공할 것입니다.

GitLab 도커 이미지

GitLab 애플리케이션은 GitLab 특정 서비스를 포함하는 Docker 이미지를 사용하여 구축되었습니다. 이 이미지들의 빌드 환경은 CNG 리포지토리에서 찾을 수 있습니다.

다음 GitLab 구성 요소는 CNG 리포지토리에 이미지가 있습니다.

  • Gitaly
  • GitLab Elasticsearch Indexer
  • mail_room
  • GitLab Exporter
  • GitLab Shell
  • Sidekiq
  • GitLab Toolbox
  • Webservice
  • Workhorse

다음은 GitLab 특정 도커 이미지를 사용하는 포크된 차트입니다.

initContainers 및 다양한 Job에 사용되는 Docker 이미지.

  • alpine-certificates
  • kubectl

공식 Docker 이미지

아래 기존의 공식 컨테이너를 활용합니다. 기존 서비스용

  • Docker Distribution (Docker Registry 2.0)
  • Prometheus
  • NGINX Ingress
  • cert-manager
  • Redis
  • PostgreSQL

GitLab 차트

이것은 모든 필요한 리소스를 구성하는 최상위 GitLab 차트(gitlab)로, GitLab의 완전한 구성을 위한 것입니다. 이것에는 GitLab, PostgreSQL, Redis, Ingress 및 인증서 관리 차트가 포함됩니다.

이 최상위 수준에서 고객은 다음과 같은 결정을 내릴 수 있습니다.

  • 내장된 PostgreSQL 차트를 사용할 것인지, 아니면 Amazon RDS for PostgreSQL과 같은 외부 데이터베이스를 사용할 것인지.
  • 자체 SSL 인증서를 가져올 것인지, 아니면 Let’s Encrypt를 활용할 것인지.
  • 로드 밸런서를 사용할 것인지, 아니면 전용 인그레스를 사용할 것인지.

빠르고 쉽게 시작하고 싶은 고객은 이 차트부터 시작해야 합니다.

이러한 차트의 구조

주요 GitLab 차트는 많은 다른 차트로 이루어진 통합 차트입니다. 각 하위 차트는 개별적으로 문서화되었으며 charts 디렉토리 구조와 일치하는 구조로 배치되었습니다.

GitLab 이외의 구성 요소는 최상위에서 패키지화되고 문서화되었습니다. GitLab 구성 요소 서비스는 GitLab 차트 아래에 문서화되어 있습니다.

구성 요소 목록

차트 사용 시 배포되는 구성 요소 목록 및 필요한 경우 구성 지시사항은 architecture components list 페이지에서 확인할 수 있습니다.

설계 결정

이러한 차트의 아키텍처에 관한 결정에 대한 문서화는 Design Decisions 문서에서 찾을 수 있습니다.