cisco-open/forge
GitHub: cisco-open/forge
ForgeMT 是一个面向 AWS 的安全、可扩展的多租户 GitHub Actions 临时 Runner 管理平台,解决企业大规模 CI/CD 中的成本、隔离与运维问题。
Stars: 205 | Forks: 8
# ForgeMT
[](https://github.com/cisco-open/forge/releases/latest/)
[](LICENSE.md)
[](https://opensource.cisco.com)


[](https://github.com/cisco-open/forge/graphs/contributors)
## 什么是 ForgeMT
ForgeMT 是一个**面向 AWS 的企业级 GitHub Actions runner 平台**。
它提供:
- 使用 IAM/OIDC 和网络分段的**安全多租户架构**
- 用于高性价比扩展的**临时 EC2 和 Kubernetes runner**
- 用于入驻、GitHub App 管理和生命周期更新的**全面自动化**
- **内置可观测性**和治理
ForgeMT 允许**每天运行数千个 CI/CD 流水线**的组织进行扩展,而不会遇到性能、成本或安全限制。

## 谁应该使用 ForgeMT?
ForgeMT 非常适合以下组织:
- 每天跨多个团队运行 100 多个 CI/CD 作业
- 需要比 GitHub 托管 runner 更严格的安全控制
- 希望在保持性能的同时降低 runner 成本
- 需要自定义环境或访问内部 AWS 资源
## 主要优势
- **安全的多租户隔离:** 强大的边界保障,且无需对基础设施进行碎片化处理。通过 OIDC 获取的短期 IAM 角色取代了静态密钥。
- **成本优化:** Spot 实例、缩容至零、预热池和优化的 Pod 大小。
- **全面自动化:** 入驻、更新和配置实现零接触运维。
- **开源:** 完全透明、适应性强且与供应商无关。
## 方案对比
| 解决方案 | 成本 | 安全性 | 维护 | 自定义环境 |
| ---------------- | ------------ | ------------ | ------------ | ---------- |
| GitHub 托管 | 大容量成本 | 标准 | 无 | 有限 |
| 基础自托管 | EC2 成本 | 手动设置 | 高 | 完全 |
| **ForgeMT** | 已优化 | 企业级 | 低 | 完全 |
## 架构概述
ForgeMT 将**控制平面**与**租户平面**分开:
- **控制平面:**
管理所有 runner 的部署、预置、扩展和监控。它使用 OpenTofu/Terraform、Helm (ARC) 和集中的 IAM/OIDC 构建,确保跨租户的自动化和安全运营。
- **租户平面:**
运行临时 CI/CD 作业。租户通过使用 OIDC 信任关系的**短期 IAM 角色**访问其 AWS 资源。所有 runner 均**由控制平面自动部署**,租户无需直接管理它们。
支持的 runner 类型:
- **EC2 runner:** 完整的 VM 控制、自定义 AMI、每个租户的沙盒。
- **EKS runner (ARC):** 位于每个租户的命名空间中的容器化工作负载。使用 Calico CNI 优化大规模部署的 IP 分配。
**架构图:**

*ForgeMT 多租户架构的高级概览。*

*EC2 runner 的部署和生命周期。*

*EKS (ARC) runner 的部署和生命周期。*

*展示临时 runner 使用情况和 IAM/OIDC 访问的租户平面。*
## Runner 类型
| 类型 | 用例 | 隔离 | 扩展 |
| -------------- | -------------------------- | ----------------------------------------------- | ------------------------- |
| **EC2** | 完整的 VM 控制,自定义 AMI | 通过 IAM/OIDC 在共享 AWS 账户中实现租户专属沙盒 | EC2 ASG + Spot/按需 |
| **EKS (ARC)** | 容器中的突发工作负载 | 租户专属命名空间(可选节点隔离) | Karpenter + ARC |
## 两类用户角色
### 🔧 **平台管理员**
- **角色:** 部署和维护 ForgeMT 基础设施
- **职责:** AWS 账户设置、租户预置、平台更新
- **工具:** OpenTofu, AWS CLI, kubectl, helm
- **工作流:** 部署控制平面 → 入驻租户 → 监控平台
### 👩💻 **开发团队(租户)**
- **角色:** 将 ForgeMT runner 用于 CI/CD 流水线
- **职责:** 配置工作流,管理 GitHub App,使用 runner
- **工具:** GitHub Actions YAML,GitHub CLI(可选)
- **工作流:** 请求访问权限 → 配置工作流 → 运行 CI/CD 作业
## 快速入门
### 面向平台管理员
部署和管理 ForgeMT 基础设施:
- **[部署你的第一个租户](./docs/configurations/deployments/forge_tenant.md)** — 用于引导 ForgeMT 的最小化设置。
- **[所有部署场景](./docs/configurations/deployments/index.md)** — 包括 EKS、Splunk、自带 (BYO) AMI 和高级模式。
**前提条件:** 已配置 AWS CLI、OpenTofu 1.11+、kubectl、helm
### 面向开发团队(租户)
在你的 GitHub Actions 工作流中使用 ForgeMT runner:
- **[租户使用指南](./docs/tenant-usage/index.md)** — 入驻、GitHub App 设置和 day-2 运维。
## 租户使用示例
一旦管理员完成入驻,租户就可以像这样使用 ForgeMT runner:
```
# .github/workflows/ci.yml
name: CI Pipeline
on: [push, pull_request]
jobs:
test:
runs-on: forge-ec2-medium # Your ForgeMT runner
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ vars.AWS_ROLE_ARN }}
aws-region: us-west-2
- name: Run tests with AWS access
run: |
# Your CI/CD commands here
# Full access to AWS resources via OIDC
aws s3 ls
docker build -t myapp .
```
**租户的主要优势:**
- 🔒 **安全的 AWS 访问**,无需存储密钥
- ⚡ **自定义实例类型** (EC2) 或**快速容器启动** (EKS)
- 💰 **高性价比**,具备自动扩展和 Spot 实例功能
- 🛠️ **零维护** - 管理员负责处理所有基础设施
## 核心功能
| 功能 | 描述 |
| ---------------------- | ------------------------------------------------ |
| 临时 Runner | 具有零空闲成本的自动扩展 EC2/EKS runner |
| 租户隔离 | 每个租户/项目安全的 IAM + OIDC + VPC |
| 零接触运维 | 自动修补、升级、偏差修复 |
| 可观测性 | 每个租户的日志、指标、仪表盘 |
| 成本优化 | Spot 实例、缩容至零、预热池 |
| 灵活的基础设施 | 自带 AMI、VPC、子网、实例类型 |
| 多 Runner 支持 | 在一次部署中混合使用 EC2 和 EKS |
| GitHub Cloud 与 GHES | 适用于 SaaS 和本地部署的 GitHub 环境 |
## 了解更多
- [技术案例研究](https://www.linkedin.com/pulse/forge-scalable-secure-multi-tenant-github-runner-brilhante--fyxbf)
- [完整文档](./docs/configurations/index.md)
## 许可证
Apache 2.0 — 请参阅 [许可证](LICENSE)
## 联系方式
在 GitHub 上跟踪进度或提交 issue:
[https://github.com/cisco-open/forge/issues](https://github.com/cisco-open/forge/issues)
标签:AWS, DPI, GitHub Actions, 子域名突变, 自动化运维, 自动笔记