GitLab 인스턴스를 AWS에 프로비저닝하기
AWS에 GitLab 인스턴스 설치를 위한 사용 가능한 인프라로서의 코드
GitLab 환경 툴킷 (GET)은 의견이 반영된 Terraform 및 Ansible 스크립트의 집합입니다. 이러한 스크립트는 선택된 클라우드 공급자에서 Linux 패키지 또는 클라우드 네이티브 하이브리드 환경의 배포를 도와주며 GitLab 개발자들이 GitLab 전용 (예: )에 사용됩니다.
GitLab 환경 툴킷을 사용하여 AWS에 클라우드 네이티브 하이브리드 환경을 배포할 수 있습니다. 그러나 필수 사항은 아니며 모든 유효한 조합을 지원하지 않을 수도 있습니다. 그렇긴 해도, 스크립트는 있는 그대로 제공되며 필요에 따라 조정할 수 있습니다.
2 및 3 존 고가용성
GitLab 참조 아키텍처는 일반적으로 3존 중복성을 권장하지만, AWS Well Architected 프레임워크에서는 2존 중복성을 AWS Well Architected로 간주합니다. 개별 구현은 최종 구성을 위해 2존 및 3존 구성의 비용을 자신의 고가용성 요구 사항과 비교해야 합니다.
Gitaly 클러스터는 동기화된 노드 간의 강력한 일관성을 구현하기 위해 일관성 투표 시스템을 사용합니다. 구현된 가용성 존의 수와 관계없이 클러스터에는 항상 최소 3개의 Gitaly 노드와 3개의 Praefect 노드가 필요하여 짝수 노드로 인한 투표 교착 상태를 피해야 합니다.
모든 GitLab 구현에 대해 AWS PaaS 자격
Linux 패키지 또는 클라우드 네이티브 하이브리드 구현을 사용하는 두 구현 모두에 대해 다음 GitLab 서비스 역할을 AWS 서비스(PaaS)가 수행할 수 있습니다. 인스턴스의 규모에 따라 사전 구성된 크기가 필요한 모든 PaaS 솔루션도 인스턴스 크기 자재 목록에 나열됩니다. 특정 크기가 필요 없는 PaaS는 BOM 목록에 반복되지 않습니다 (예: AWS Certificate Manager).
이러한 서비스는 GitLab과 함께 테스트되었습니다.
로그 집계, 아웃바운드 이메일과 같은 일부 서비스는 GitLab에서 지정하지 않지만 제공된 경우 언급됩니다.
GitLab 서비스 | AWS PaaS (테스트됨) |
---|---|
참조 아키텍처에서 언급된 테스트된 PaaS | |
PostgreSQL 데이터베이스 | Amazon RDS PostgreSQL |
Redis 캐싱 | Redis ElastiCache |
Gitaly 클러스터 (Git 저장소 저장소) (Praefect 및 PostgreSQL 포함) |
ASG 및 인스턴스 |
Git 저장소 저장소 이외의 모든 GitLab 저장소 (Git-LFS 포함 S3 호환) |
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 |
오토스케일링 Kubernetes | EKS AutoScaling Agent |