与 AWS 集成
了解如何集成 GitLab 和 AWS。
本内容面向 GitLab 团队成员以及更广泛的社区成员。
除非另有说明,所有内容均适用于 GitLab.com 和 GitLab 自托管实例。
本页面尝试索引 GitLab 与 AWS 的集成方式。无论集成是通过配置现有功能、内置在 AWS 或 GitLab 中,还是作为解决方案提供,都会收录。
| 文本标签 | 配置 / 内置 / 解决方案 | 支持/维护 |
|---|---|---|
[AWS Configuration] |
通过配置现有 AWS 功能实现集成 | AWS |
[GitLab Configuration] |
通过配置现有 GitLab 功能实现集成 | GitLab |
[AWS Built] |
由产品团队内置到 AWS 中以解决 AWS 集成需求 | AWS |
[GitLab Built] |
由产品团队内置到 GitLab 中以解决 AWS 集成需求 | GitLab |
[AWS Solution] |
由 AWS 或 AWS 合作伙伴构建的解决方案示例 | Community/Example |
[GitLab Solution] |
由 GitLab 或 GitLab 合作伙伴构建的解决方案示例 | Community/Example |
[CI Solution] |
至少部分使用 GitLab CI 构建,因此 更具客户自定义性。 |
标有 [CI Solution] 的项目 也会带有其他标签 以指示维护状态。 |
开发活动集成
这些集成涉及使用 GitLab 构建应用程序工作负载并将其部署到 AWS。
SCM 集成
AWS CodeStar Connection 集成
8/14/2023 AWS 对 GitLab.com SaaS 的发布公告
AWS CodeStar Connections - 支持与多个 AWS 服务的 SCM 连接。
配置 GitLab。
支持的提供商。
支持的 AWS 服务 -
每个服务可能需要更新以支持 GitLab,因此这里是支持 GitLab 的子集。
此功能适用于 GitLab.com SaaS、GitLab 自托管和 GitLab 专属版本。
AWS CodeStar 连接并非在所有 AWS 区域都可用 - 排除列表
在此处记录。
(12/28/2023) [AWS Built]
AWS CodeStar Connection 集成视频说明(1分钟)
AWS 账户中直接支持 CodeStar Connection 的 AWS 服务:
- AWS Service Catalog 直接继承 CodeStar Connections,没有关于 GitLab 的特定文档,因为它只使用账户中创建的任何 GitLab CodeStar Connection。(12/28/2023)
[AWS Built] - AWS Proton 直接继承 CodeStar Connections,没有关于 GitLab 的特定文档,因为它只使用账户中创建的任何 GitLab CodeStar Connection。(12/28/2023)
[AWS Built] - AWS CodeBuild - 适用于 GitLab.com、自托管和专属版本 - 点击此处文档标签。(03/26/2024)
[AWS Built]
文档和参考资料:
- 创建到 GitLab.com 项目的 GitLab CodeStar Connection
- 为 GitLab 自托管或 GitLab 专属版本创建 AWS CodeStar Connection(必须允许来自 AWS 的互联网入站流量或使用 VPC 连接)
AWS CodePipeline 集成
AWS CodePipeline 集成 - 通过使用 GitLab 作为 CodePipeline 的 CodeStar Connections 源,可使用额外的 AWS 服务集成。(12/28/2023) [AWS Built]
AWS CodePipeline 集成支持的 AWS 服务:
- Amazon SageMaker MLOps Projects 通过 CodePipeline 创建(如此处所述),没有关于 GitLab 的特定文档,因为它只使用账户中创建的任何 GitLab CodeStar Connection。(12/28/2023)
[AWS Built]
文档和参考资料:
- 创建到 GitLab.com 项目的 GitLab CodePipeline 集成
- 为 GitLab 自托管或 GitLab 专属版本创建 AWS CodePipeline 集成(必须允许来自 AWS 的互联网入站流量或使用 VPC 连接)
尚未支持 GitLab 的 CodeStar Connection 启用的 AWS 服务
- AWS CloudFormation 公开扩展的发布 - 尚不支持。
[AWS Built] - Amazon CodeGuru Reviewer 仓库 - 尚不支持。
[AWS Built] - AWS App Runner - 尚不支持。
[AWS Built]
AWS 服务中的自定义 GitLab 集成
- Amazon SageMaker Notebooks 允许通过 Git clone URL 指定 Git 仓库 和机密配置 - 因此 GitLab 是可配置的。(12/28/2023)
[AWS Configuration] - AWS Amplify - 使用由 AWS Amplify 团队设计的 Git 集成机制。
[AWS Built] - AWS Glue Notebook Jobs 支持 GitLab 仓库 URL 和个人访问令牌 (PAT) 身份验证,在 “job” 级别配置。(10/03/2022) 关于配置 GitLab 的 AWS 文档
[AWS Configuration]
其他 SCM 集成选项
- GitLab 推送镜像到 CodeCommit 此方法使 GitLab 仓库能够利用 CodePipeline SCM 触发器。GitLab 已经可以利用 S3 和容器触发器用于 CodePipeline。此方法自记录以来已启用 CodePipeline 功能。(06/06/2020)
[GitLab Configuration]
有关持续部署 (CD) 特定的集成,请参阅下方的 CD 和运营集成。
CI 集成
- 直接 CI 集成,使用密钥、IAM 或 OIDC/JWT 向 AWS 服务进行身份验证
- 使用 GitLab CI 的 Amazon CodeGuru Reviewer CI 工作流 - 可以实现,尚未记录。
[AWS Solution][CI Solution] - 使用 GitLab CI 的 Amazon CodeGuru 安全扫描 (06/13/2022)
[AWS Solution][CI Solution]
CD 和运营集成
- AWS CodeDeploy 集成 - 通过前面 SCM 集成中讨论的 CodePipeline 支持。此功能允许 GitLab 与 AWS 中的高级部署子系统列表 接口。(12/28/2023)
[AWS Built] - AWS SAM Pipelines - 支持 GitLab 的管道。(7/31/2021)
- 集成 EKS 集群进行应用程序部署。
[GitLab Built] - GitLab 将构建工件推送到 CodePipeline 监控的 S3 位置
[AWS Built] - GitLab 将容器推送到 CodePipeline 监控的 AWS ECR
[AWS Built] - 使用 GitLab.com 的容器注册表作为 AWS ECR 的上游注册表,通过拉取缓存规则 配置教程
[AWS Built]
特定开发框架或生态系统的端到端开发和部署解决方案
通常,解决方案展示开发框架的端到端功能 - 利用所有相关集成技术,展示 GitLab 和 AWS 协同使用的最大价值。
Serverless
- 企业 DevOps 蓝图:AWS 上的 Serverless Framework 应用 - 工作示例代码和教程。
[GitLab Solution][CI Solution]- 教程:使用 GitLab Serverless SAST 扫描将 Serverless Framework 部署到 AWS
[GitLab Solution][CI Solution] - 教程:使用 GitLab 安全策略审批规则和托管 DevOps 环境进行安全的 Serverless Framework 开发
[GitLab Solution][CI Solution]
- 教程:使用 GitLab Serverless SAST 扫描将 Serverless Framework 部署到 AWS
Terraform
- 企业 DevOps 蓝图:Terraform 部署到 AWS
- 教程:使用 GitLab IaC SAST 扫描将 Terraform 部署到 AWS
[GitLab Solution][CI Solution] - 使用 GitLab 安全策略审批规则和托管 DevOps 环境将 Terraform 部署到 AWS
[GitLab Solution][CI Solution]
- 教程:使用 GitLab IaC SAST 扫描将 Terraform 部署到 AWS
CloudFormation
使用 GitLab 生命周期托管 DevOps 环境进行 CloudFormation 开发和部署的工作代码 [GitLab Solution] [CI Solution]
CDK
- 使用 AWS CDK 在 GitLab 管道中构建跨账户部署
[AWS Solution][CI Solution]
.NET on AWS
- 在 AWS 上扩展 .NET Framework 4.x Runner 的工作示例代码
[GitLab Solution][CI Solution] - 代码视频演练和构建 .NET Framework 4.x 项目
[GitLab Solution][CI Solution]
GitLab 和 AWS 的系统集成
AWS 身份提供商 (IDP) 可以配置为对 GitLab 进行身份验证,或者 GitLab 可以作为 AWS 账户的 IDP。
GitLab.com 顶级组也称为 “命名空间”,将其中一个命名空间命名为您的公司是在 GitLab.com 上为您的组织设置租户的第一步。命名空间可以配置特殊功能(如 SSO),然后将您的 IDP 集成到 GitLab 中。
GitLab 和 AWS 之间的用户身份验证和授权
- GitLab.com 组的 SAML SSO
[GitLab Configuration]- 仅限 GitLab.com - 将 LDAP 与 GitLab 集成
[GitLab Configuration]- 仅限 GitLab 自托管
Runner 工作负载身份验证和授权集成
- 使用 Open ID 和 JWT 身份验证进行 Runner 作业身份验证。
[GitLab Built]- 配置 GitLab 和 AWS 之间的 OpenID Connect
[GitLab Solution][CI Solution] - GitLab 和 ECS 的 OIDC 和多账户部署
[GitLab Solution][CI Solution]
- 配置 GitLab 和 AWS 之间的 OpenID Connect
在 AWS 上部署的 GitLab 基础设施工作负载
虽然 GitLab 可以在单台机器上部署以支持最多 500 个用户,但当它为大量用户(如 50,000)进行水平扩展时,它会扩展为一个复杂的多层平台,受益于部署到 AWS。GitLab 支持并定期测试由 AWS 服务提供支持。GitLab 可以部署到 Ec2 进行传统扩展,也可以部署到 AWS EKS 进行云原生混合实现。之所以称为混合,是因为由于 Git(以及 Git 处理工作负载变化的方式)的常见工作负载形状,特定服务层无法放置在容器集群中。
GitLab 实例计算与运营集成
-
在 AWS 上安装 GitLab 自托管版本
-
GitLab 单个 EC2 实例。
[GitLab Built]- 使用 5 座位 AWS 市场订阅
- 使用准备好的 AMI - 企业版需自带许可证。
-
在 AWS EKS 和 PaaS 上进行云原生混合扩展的 GitLab。
[GitLab Built]- 使用 GitLab 环境工具包 (GET) -
[GitLab Solution]
- 使用 GitLab 环境工具包 (GET) -
-
在 AWS EC2 和 PaaS 上扩展的 GitLab 实例。
[GitLab Built]- 使用 GitLab 环境工具包 (GET) -
[GitLab Solution]
- 使用 GitLab 环境工具包 (GET) -
-
Amazon Managed Grafana 用于 GitLab 自托管版本的 Prometheus 指标。
[AWS Built]
AWS 计算上的 GitLab Runner
- GitLab Runner 自动扩展器 - 由 GitLab Runner 团队构建的核心技术。
[GitLab Built] - GitLab Runner 基础设施工具包 (GRIT) - 由 GitLab Runner 团队管理的即基础设施即代码。用于部署 GitLab Runner 自动扩展器等项目。
[GitLab Built] - 在 AWS EC2 上自动扩展 GitLab Runner。
[GitLab Built] - AWS EC2 ASG 的 GitLab HA 扩展 Runner 自动售货机。
[GitLab Solution]- Runner 自动售货机培训资源。
- GitLab EKS Fargate Runners。
[GitLab Solution]