AWS에서 GitLab 인스턴스 프로비저닝하기
GitLab 인스턴스를 AWS에 설치하기 위한 인프라스트럭처 코드
GitLab Environment Toolkit (GET)은 의견이 분분한 Terraform 및 Ansible 스크립트 모음입니다. 이러한 스크립트는 특정 클라우드 제공업체에서 Linux 패키지 또는 클라우드 네이티브 하이브리드 환경을 배포하는 데 도움이 되며 GitLab 개발자들이 GitLab Dedicated에서 사용합니다.
GitLab Environment Toolkit을 사용하여 AWS에 클라우드 네이티브 하이브리드 환경을 배포할 수 있습니다. 하지만 필수는 아니며 모든 유효한 순열을 지원하지 않을 수 있습니다. 그렇지만 이러한 스크립트는 있는 그대로 제시되며 필요에 맞게 조정할 수 있습니다.
두 가지 및 세 가지 존 고가용성
GitLab 참조 아키텍처는 일반적으로 세 가지 존의 중복성을 장려하지만, AWS Well Architected 프레임워크에서는 두 가지 존의 중복성을 AWS Well Architected로 고려합니다. 각각의 구현은 최종 구성을 위해 두 가지 및 세 가지 존 구성의 비용을 고가용성 요구 사항과 대조해야 합니다.
Gitaly 클러스터는 동기화된 노드 간의 강력한 일관성을 구현하기 위해 일관성 투표 시스템을 사용합니다. 구현된 가용 영역의 수에 관계없이, 투표 정지 현상을 피하기 위해 클러스터에는 항상 최소 세 개의 Gitaly 노드 및 세 개의 Praefect 노드가 있어야 합니다.
모든 GitLab 구현에 대한 AWS PaaS 자격
리눅스 패키지 또는 클라우드 네이티브 하이브리드 구현에 사용된 구현에 대해 다음 GitLab 서비스 역할은 AWS 서비스(PaaS)에서 수행될 수 있습니다. 인스턴스 규모별로 사전 구성된 크기를 필요로 하는 일부 PaaS 솔루션은 인스턴스당 크기 BOM 목록에도 나열됩니다. 특정 크기를 필요로 하지 않는 PaaS는 BOM 목록에 반복되지 않습니다(예: AWS Certification Manager).
이러한 서비스들은 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 심플 이메일 서비스(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 AutoScaling Agent |