GitLab Dedicated 的托管 runner
- Tier: Ultimate
- Offering: GitLab Dedicated
- Status: 有限可用
要使用此功能,您必须购买 GitLab Dedicated 托管 runner 的订阅。如要参与托管 runner 的有限可用性计划,请联系您的客户成功经理或客户代表。
您可以在 GitLab 托管的 runner 上运行您的 CI/CD 作业。这些 runner 由 GitLab 管理,并与您的 GitLab Dedicated 实例完全集成。 GitLab Dedicated 的托管 runner 是自动扩缩容的 实例 runner, 在与 GitLab Dedicated 实例同一区域的 AWS EC2 上运行。
当您使用托管 runner 时:
- 每个作业都在一个新配置的虚拟机 (VM) 中运行,该虚拟机专用于该特定作业。
- 运行您作业的 VM 拥有无密码的
sudo访问权限。 - 存储空间由操作系统、预装软件的镜像以及您克隆的仓库副本共享。这意味着您作业可用的可用磁盘空间会减少。
- 默认情况下,无标签作业在小型 Linux x86-64 runner 上运行。GitLab 管理员可以在 GitLab 中更改运行无标签作业的选项。
Linux 托管 runner
GitLab Dedicated 的 Linux 托管 runner 使用 Docker Autoscaler 执行器。每个作业在一个完全隔离的临时虚拟机 (VM) 中获得一个 Docker 环境,并在最新版本的 Docker Engine 上运行。
Linux 机型 - x86-64
Linux x86-64 托管 runner 提供以下机型。
| 规格 | Runner 标签 | vCPU | 内存 | 存储 |
|---|---|---|---|---|
| Small | linux-small-amd64 (默认) |
2 | 8 GB | 30 GB |
| Medium | linux-medium-amd64 |
4 | 16 GB | 50 GB |
| Large | linux-large-amd64 |
8 | 32 GB | 100 GB |
| X-Large | linux-xlarge-amd64 |
16 | 64 GB | 200 GB |
| 2X-Large | linux-2xlarge-amd64 |
32 | 128 GB | 200 GB |
Linux 机型 - Arm64
Linux Arm64 托管 runner 提供以下机型。
| 规格 | Runner 标签 | vCPU | 内存 | 存储 |
|---|---|---|---|---|
| Small | linux-small-arm64 |
2 | 8 GB | 30 GB |
| Medium | linux-medium-arm64 |
4 | 16 GB | 50 GB |
| Large | linux-large-arm64 |
8 | 32 GB | 100 GB |
| X-Large | linux-xlarge-arm64 |
16 | 64 GB | 200 GB |
| 2X-Large | linux-2xlarge-arm64 |
32 | 128 GB | 200 GB |
机型和底层处理器类型可能会发生变化。针对特定处理器设计优化的作业可能会表现不一致。
默认的 runner 标签在创建时分配。管理员随后可以为其实例 runner 修改标签设置。
容器镜像
由于 Linux runner 使用 Docker Autoscaler 执行器,您可以通过在 .gitlab-ci.yml 文件中定义镜像来选择任何容器镜像。请确保所选的 Docker 镜像与底层处理器架构兼容。请参阅 .gitlab-ci.yml 文件示例。
如果未设置镜像,则默认为 ruby:3.1。
如果您使用来自 Docker Hub 容器镜像库的镜像,可能会遇到速率限制。这是因为 GitLab Dedicated 使用单一的网络地址转换 (NAT) IP 地址。
为避免速率限制,请改用:
- 存储在 GitLab 容器镜像库 中的镜像。
- 存储在其他无速率限制的公共镜像库中的镜像。
- 依赖代理,它充当一个拉取缓存 (pull-through cache)。
Docker in Docker 支持
runner 被配置为在特权模式下运行,以支持 Docker in Docker,从而原生地构建 Docker 镜像或在您的隔离作业中运行多个容器。
管理托管 runner
在 Switchboard 中管理托管 runner
您可以使用 Switchboard 为您的 GitLab Dedicated 实例创建和查看托管 runner。
前提条件:
- 您必须购买 GitLab Dedicated 托管 runner 的订阅。
在 Switchboard 中创建托管 runner
对于每个实例,您可以创建每种类型和大小组合的一个 runner。Switchboard 会显示可用的 runner 选项。
要创建托管 runner:
- 登录 Switchboard。
- 在页面顶部,选择 Hosted runners。
- 选择 New hosted runner。
- 为 runner 选择一个规格,然后选择 Create hosted runner。
当您的托管 runner 准备就绪后,您将收到一封电子邮件通知。
在 Switchboard 中查看托管 runner
要查看托管 runner:
- 登录 Switchboard。
- 在页面顶部,选择 Hosted runners。
- 可选。从托管 runner 列表中,复制您想要在 GitLab 中访问的 runner 的 Runner ID。
在 GitLab 中查看和配置托管 runner
GitLab 管理员可以从 管理员区域 为其 GitLab Dedicated 实例管理托管 runner。
在 GitLab 中查看托管 runner
您可以在 Runners 页面和 Fleet dashboard 中查看您 GitLab Dedicated 实例的托管 runner。
前提条件:
- 您必须是管理员。
目前暂不提供计算使用情况的可视化,但有一个 epic 计划在正式发布 (GA) 时添加此功能。
要在 GitLab 中查看托管 runner:
- 在左侧边栏的底部,选择 管理员。
- 选择 CI/CD > Runners。
- 可选。选择 Fleet dashboard。
在 GitLab 中配置托管 runner
前提条件:
- 您必须是管理员。
您可以为您的 GitLab Dedicated 实例配置托管 runner,包括更改 runner 标签的默认值。
可用的配置选项包括:
对 runner 描述和 runner 标签的任何更改都不受 GitLab 控制。
在 GitLab 中为组或项目禁用托管 runner
默认情况下,托管 runner 可用于您 GitLab Dedicated 实例中的所有项目和组。GitLab 维护者可以为项目或组禁用托管 runner。
安全与网络
GitLab Dedicated 的托管 runner 具有内置的安全层,可增强 GitLab Runner 构建环境的安全性。
GitLab Dedicated 的托管 runner 具有以下配置:
- 防火墙规则仅允许从临时 VM 到公共互联网的出站通信。
- 防火墙规则不允许从公共互联网到临时 VM 的入站通信。
- 防火墙规则不允许 VM 之间的通信。
- 只有 runner 管理器才能与临时 VM 通信。
- 临时 runner VM 仅服务于单个作业,并在作业执行后被删除。
您还可以启用从托管 runner 到您 AWS 账户的私有连接。
有关更多信息,请参阅 GitLab Dedicated 托管 runner 的架构图。
出站私有链接
出站私有链接在 GitLab Dedicated 的托管 runner 与您 AWS VPC 中的服务之间建立安全连接。此连接不会将任何流量暴露给公共互联网,并允许托管 runner:
- 访问私有服务,例如自定义密钥管理器。
- 检索存储在您基础设施中的制品或作业镜像。
- 部署到您的基础设施。
在 GitLab 管理的 runner 账户中,所有 runner 默认存在两个出站私有链接:
- 指向您 GitLab 实例的链接
- 指向 GitLab 控制的 Prometheus 实例的链接
这些链接是预配置的,无法修改。租户的 Prometheus 实例由 GitLab 管理,用户无法访问。
要将出站私有链接与其他 VPC 服务配合用于托管 runner,需要通过支持请求进行手动配置。有关更多信息,请参阅出站私有链接。
IP 范围
GitLab Dedicated 托管 runner 的 IP 范围可根据要求提供。IP 范围按尽力而为 (best-effort) 的方式进行维护,并可能因基础设施的变更而随时更改。有关更多信息,请联系您的客户成功经理或客户代表。
使用托管 runner
在您在 Switchboard 中创建托管 runner且 runner 准备就绪后,即可使用它们。
要使用 runner,请调整 .gitlab-ci.yml 文件中作业配置里的标签,使其与您想要使用的托管 runner 相匹配。
对于 Linux 中型 x86-64 runner,按如下方式配置您的作业:
job_name:
tags:
- linux-medium-amd64 # 使用中型 Linux runner默认情况下,无标签作业由小型 Linux x86-64 runner 接收。GitLab 管理员可以在 GitLab 中配置实例 runner 使其不运行无标签作业。
要在不更改作业配置的情况下迁移作业,请修改托管 runner 标签,使其与您现有作业配置中使用的标签相匹配。
如果您看到您的作业卡住并显示错误消息 no runners that match all of the job's tags:
- 检查您是否选择了正确的标签
- 确认是否已为您的项目或组启用了实例 runner。
升级
Runner 版本升级需要短暂的停机时间。Runner 会在 GitLab Dedicated 租户的计划维护窗口期内进行升级。目前有一个 issue 正在致力于实现零停机升级。
定价
有关定价详情,请联系您的客户代表。
我们为 GitLab Dedicated 客户提供 30 天免费试用。试用版包括:
- 小型、中型和大型 Linux x86-64 runner
- 小型和中型 Linux Arm runner
- 有限的自动扩缩容配置,最多支持 100 个并发作业