아키텍처
우리는 세 가지 계층의 컴포넌트를 지원할 계획입니다:
- Docker 컨테이너
- 스케줄러 (Kubernetes)
- 고수준 구성 도구 (Helm)
고객들이 설치하는 주요 방법은 이 저장소의 Helm 차트입니다. 향후에는 Amazon CloudFormation이나 Docker Swarm과 같은 다른 배포 방법을 제공할 수도 있습니다.
Docker 컨테이너 이미지
기초로 각 서비스에 대한 Docker 컨테이너를 생성할 것입니다. 이는 이미지 크기와 복잡성을 줄이면서 수평 확장이 쉬워질 것입니다. 구성은 Docker에 표준 방식으로 전달되어야 하며, 아마도 환경 변수나 마운트된 파일을 사용할 수 있습니다. 이는 스케줄러 소프트웨어와의 깨끗한 공통 인터페이스를 제공합니다.
GitLab Docker 이미지
GitLab 애플리케이션은 GitLab 특정 서비스를 포함하는 Docker 이미지를 사용하여 구축됩니다. 이러한 이미지의 빌드 환경은 CNG 저장소에서 찾을 수 있습니다.
다음 GitLab 구성 요소에는 CNG 저장소에 이미지가 있습니다.
- Gitaly
- GitLab Elasticsearch Indexer
- mail_room
- GitLab Exporter
- GitLab Shell
- Sidekiq
- GitLab Toolbox
- Webservice
- Workhorse
다음은 GitLab 특정 Docker 이미지를 사용하는 배포된 차트입니다.
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를 활용할지.
- 로드 밸런서를 사용할지, 아니면 전용 Ingress를 사용할지.
빠르고 쉽게 시작하고 싶은 고객들은 이 차트를 먼저 시작해야 합니다.
이러한 차트의 구조
주요 GitLab 차트는 많은 다른 차트로 이루어진 우산 차트입니다. 각 하위 차트는 개별적으로 문서화되어 있으며, charts 디렉토리 구조와 일치하는 구조로 배치되어 있습니다.
GitLab이 아닌 컴포넌트는 최상위 항목에 패키지화되어 문서화되어 있습니다. GitLab 컴포넌트 서비스는 GitLab 차트 하에서 문서화되어 있습니다:
- NGINX
- MinIO
- Registry
- GitLab/Gitaly
- GitLab/GitLab Exporter
- GitLab/GitLab Shell
- GitLab/Migrations
- GitLab/Sidekiq
- GitLab/Webservice
컴포넌트 목록
차트를 사용할 때 배포되는 구성 요소 목록 및 필요한 경우 구성 지침은 architecture components list 페이지에서 확인할 수 있습니다.
설계 결정
이 차트의 아키텍처에 관한 결정 사항에 대한 문서화는 Design Decisions 문서에서 찾을 수 있습니다.
도움말