아키텍처
우리는 세 가지 계층의 구성 요소를 지원할 계획입니다:
-
Docker 컨테이너
-
스케줄러 (Kubernetes)
-
상위 수준 구성 도구 (Helm)
고객이 설치하는 주요 방법은 이 저장소의 Helm 차트가 될 것입니다.
미래의 어떤 시점에는 Amazon CloudFormation 또는 Docker Swarm과 같은 다른 배포 방법도 제공할 수 있습니다.
Docker 컨테이너 이미지
기초로서, 우리는 각 서비스에 대한 Docker 컨테이너를 생성할 것입니다.
이렇게 하면 이미지 크기와 복잡성이 줄어들면서 수평 확장이 용이해집니다.
구성은 Docker에 대해 표준 방식으로 전달되어야 하며, 아마도 환경 변수나 마운트된 파일을 사용할 것입니다.
이렇게 하면 스케줄러 소프트웨어와의 깔끔한 공통 인터페이스가 제공됩니다.
GitLab Docker 이미지
GitLab 애플리케이션은 GitLab 특정 서비스를 포함하는 Docker 이미지를 사용하여 구축됩니다.
이 이미지의 빌드 환경은 CNG 저장소에서 찾을 수 있습니다.
다음 GitLab 구성 요소는 CNG 저장소에 이미지가 있습니다.
- Gitaly
- GitLab Elasticsearch 인덱서
- mail_room
- GitLab Exporter
- GitLab Shell
- Sidekiq
- GitLab Toolbox
- Webservice
- Workhorse
다음은 GitLab 특정 Docker 이미지를 사용하는 포크된 차트입니다.
initContainers
및 다양한 Job
에 사용되는 Docker 이미지입니다.
- alpine-certificates
- kubectl
공식 Docker 이미지
우리는 기반 서비스에 대해 다음의 기존 공식 컨테이너를 활용합니다:
- Docker 배포 (Docker Registry 2.0)
- Prometheus
- NGINX Ingress
- cert-manager
- Redis
- PostgreSQL
GitLab 차트
이것은 모든 리소스를 완전하게 구성하는 상위 수준 GitLab 차트(gitlab
)입니다.
여기에는 GitLab, PostgreSQL, Redis, Ingress, 그리고 인증서 관리 차트가 포함됩니다.
이 높은 수준에서 고객은 다음과 같은 결정을 내릴 수 있습니다:
-
내장된 PostgreSQL 차트를 사용할지, 아니면 Amazon RDS for PostgreSQL과 같은 외부 데이터베이스를 사용할지 여부.
-
자체 SSL 인증서를 제공할지, 아니면 Let’s Encrypt를 활용할지.
-
로드 밸런서를 사용할지, 아니면 전용 Ingress를 사용할지.
빠르고 쉽게 시작하고 싶은 고객은 이 차트로 시작해야 합니다.
이 차트의 구조
주요 GitLab 차트는 여러 다른 차트로 구성된 우산 차트입니다.
각 서브 차트는 개별적으로 문서화되며, 차트 디렉토리 구조와 일치하는 구조로 배치됩니다.
비-GitLab 구성 요소는 최상위 수준에서 패키징되고 문서화됩니다.
GitLab 구성 요소 서비스는 GitLab 차트 아래에서 문서화됩니다:
- NGINX
- MinIO
- Registry
- GitLab/Gitaly
- GitLab/GitLab Exporter
- GitLab/GitLab Shell
- GitLab/Migrations
- GitLab/Sidekiq
- GitLab/Webservice
구성 요소 목록
차트를 사용할 때 배포되는 구성 요소 목록과 필요한 경우 구성 지침은 아키텍처 구성 요소 목록 페이지에서 확인할 수 있습니다.
설계 결정
이러한 차트의 아키텍처와 관련하여 내린 결정에 대한 문서는 설계 결정 문서에서 확인할 수 있습니다.