cisco-open/forge

GitHub: cisco-open/forge

ForgeMT 是一个面向 AWS 的安全、可扩展的多租户 GitHub Actions 临时 Runner 管理平台,解决企业大规模 CI/CD 中的成本、隔离与运维问题。

Stars: 205 | Forks: 8

# ForgeMT [![发布](https://img.shields.io/github/v/release/cisco-open/forge?display_name=tag)](https://github.com/cisco-open/forge/releases/latest/) [![许可证](https://img.shields.io/github/license/cisco-open/forge)](LICENSE.md) [![维护者](https://img.shields.io/badge/Maintainer-Cisco-00bceb.svg)](https://opensource.cisco.com) ![CI](https://img.shields.io/github/check-runs/cisco-open/forge/main) ![最新发布以来的提交](https://img.shields.io/github/commits-since/cisco-open/forge/latest) [![贡献者](https://img.shields.io/github/contributors/cisco-open/forge)](https://github.com/cisco-open/forge/graphs/contributors) ## 什么是 ForgeMT ForgeMT 是一个**面向 AWS 的企业级 GitHub Actions runner 平台**。 它提供: - 使用 IAM/OIDC 和网络分段的**安全多租户架构** - 用于高性价比扩展的**临时 EC2 和 Kubernetes runner** - 用于入驻、GitHub App 管理和生命周期更新的**全面自动化** - **内置可观测性**和治理 ForgeMT 允许**每天运行数千个 CI/CD 流水线**的组织进行扩展,而不会遇到性能、成本或安全限制。 ![架构图](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/1e51baaf0c123301.jpg) ## 谁应该使用 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 分配。 **架构图:** ![多租户概览](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/b74502cedb123307.jpg) *ForgeMT 多租户架构的高级概览。* ![EC2 Runner 架构](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/37e4795be0123311.jpg) *EC2 runner 的部署和生命周期。* ![EKS Runner 架构](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/16fbb05589123316.jpg) *EKS (ARC) runner 的部署和生命周期。* ![租户概览](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/ee10c99199123321.jpg) *展示临时 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, 子域名突变, 自动化运维, 自动笔记