Help us learn about your current experience with the documentation. Take the survey.

在 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 (Praefect) 使用一致性投票系统来实现同步节点间的一致性。无论实现多少个可用区,集群中始终至少需要三个 Gitaly 和三个 Praefect 节点,以避免因节点数量为偶数而导致的投票僵局。

适用于所有 GitLab 实现的 AWS PaaS

对于使用 Linux 包或云原生混合实现的两种方案,以下 GitLab 服务角色可以由 AWS 服务 (PaaS) 执行。任何需要根据实例规模进行预配置调整的 PaaS 解决方案也会列在每个实例规模的物料清单中。那些不需要特定调整的 PaaS 不会在物料清单中重复列出(例如,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 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