AWS에서 GitLab 인스턴스 프로비저닝하기

AWS에서 GitLab 인스턴스 설치를 위한 인프라스트럭처 코드 사용 가능

GitLab Environment Toolkit (GET)은 의견이 분분한 Terraform 및 Ansible 스크립트 모음입니다. 이러한 스크립트는 선택한 클라우드 제공업체에서 Linux 패키지 또는 클라우드 네이티브 하이브리드 환경을 배포하는 데 도움을 주며 GitLab 개발자들이 GitLab Dedicated에 사용합니다.

GitLab Environment Toolkit을 사용하여 AWS에 클라우드 네이티브 하이브리드 환경을 배포할 수 있습니다. 그러나 필수는 아니며 모든 유효한 순열을 지원하지 않을 수 있습니다. 이에도 불구하고 이러한 스크립트는 있는 그대로 제시되며 적절하게 조정할 수 있습니다.

두 가지와 세 가지 가용성

일반적으로 GitLab 참조 아키텍처는 세 가용성 영역을 권장하지만, AWS Well Architected 프레임워크는 두 영역의 중복성을 AWS Well Architected로 고려합니다. 각 구현은 최종 구성에 대한 자체 고가용성 요구 사항에 대한 비용을 고려해야 합니다.

Gitaly Cluster는 동기화된 노드 간의 강력한 일관성을 구현하기 위해 일치 투표 시스템을 사용합니다. 구현된 가용성 영역 수에 상관없이 클러스터에는 투표 막힘이 발생하지 않도록 최소 3개의 Gitaly 및 3개의 Praefect 노드가 있어야 합니다.

모든 GitLab 구현에 적합한 AWS PaaS

리눅스 패키지 또는 클라우드 네이티브 하이브리드 구현에 사용되는 구현에 대해 AWS 서비스 (PaaS)가 다음 GitLab 서비스 역할을 수행할 수 있습니다. 인스턴스의 규모에 기반한 사전 구성 크기가 필요한 일부 PaaS 솔루션도 인스턴스 당 크기 디렉터리의 재료 디렉터리에 나와 있습니다. 특정 크기가 필요하지 않은 경우 재료 디렉터리에 반복되지 않습니다(예: AWS 인증 관리자).

이러한 서비스들은 GitLab과 함께 테스트되었습니다.

로그 집계, 외부 이메일과 같은 일부 서비스는 GitLab에서 지정되지 않았지만 제공되는 경우에는 기입되어 있습니다.

GitLab 서비스 AWS PaaS (테스트됨)
참조 아키텍처에 언급된 테스트된 PaaS  
PostgreSQL 데이터베이스 Amazon RDS PostgreSQL
Redis 캐싱 Redis ElastiCache
Gitaly 클러스터 (Git 리포지터리 저장)
(Praefect 및 PostgreSQL 포함)
ASG 및 인스턴스
Git 리포지터리 저장을 포함한 모든 GitLab 리포지터리
(S3 호환인 Git-LFS를 포함)
AWS S3
   
보충 서비스를 위한 테스트된 PaaS  
프런트엔드 로드 밸런싱 AWS ELB
내부 로드 밸런싱 AWS ELB
외부 이메일 서비스 AWS Simple Email Service (SES)
인증 기관 및 관리 AWS Certificate Manager (ACM)
DNS AWS Route53 (테스트됨)
GitLab 및 인프라스트럭처 로그 집계 AWS CloudWatch Logs
인프라스트럭처 성능 메트릭 AWS CloudWatch Metrics
   
보충 서비스 및 구성  
GitLab을 위한 Prometheus AWS EKS (클라우드 네이티브 전용)
GitLab을 위한 Grafana AWS EKS (클라우드 네이티브 전용)
암호화 (전송 중/휴식 중) AWS KMS
프로비저닝을 위한 비밀 리포지터리 AWS Secrets Manager
프로비저닝을 위한 구성 데이터 AWS Parameter Store
자동 크기 조정 쿠버네티스 EKS 자동 크기 조정 에이전트