极狐GitLab Runner 弹性伸缩

  • Tier: 基础版,专业版,旗舰版
  • Offering: JihuLab.com,私有化部署

你可以使用极狐GitLab Runner 自动缩放功能在公共云实例上自动缩放 runner。当你配置 runner 使用自动缩放器时,可以通过在云基础设施上同时运行多个作业来处理增加的 CI/CD 作业负载。

除了公共云实例的自动缩放选项之外,你还可以使用以下容器编排解决方案来托管和缩放 runner 集群。

  • Red Hat OpenShift Kubernetes 集群
  • Kubernetes 集群:AWS EKS、Azure、内部部署
  • AWS Fargate 上的 Amazon Elastic Container Services 集群

配置 runner 管理器#

你必须配置 runner 管理器以使用极狐GitLab Runner 自动缩放功能,包括 Docker Machine 自动缩放解决方案和极狐GitLab Runner 自动缩放器。

runner 管理器是一种创建多个 runner 以进行自动缩放的 runner 类型。它不断轮询极狐GitLab 以获取作业并与公共云基础设施交互以创建新的实例来执行作业。runner 管理器必须在安装了极狐GitLab Runner 的主机上运行。选择 Docker 和极狐GitLab Runner 支持的发行版,如 Ubuntu、Debian、CentOS 或 RHEL。

  1. 创建一个实例来托管 runner 管理器。这个实例不能是 spot 实例(AWS)或 spot 虚拟机(GCP、Azure)。
  2. 在实例上安装极狐GitLab Runner
  3. 将云提供商凭证添加到 Runner Manager 主机。
你可以在容器中托管 runner 管理器。对于[极狐GitLab 托管的 runner](https://gitlab.cn/docs/jh/ci/runners/),runner 管理器托管在虚拟机实例上。

极狐GitLab Runner Docker Machine 自动缩放的示例凭证配置#

此代码片段位于 config.toml 文件的 runners.machine 部分。

toml
1 [runners.machine] 2 IdleCount = 1 3 IdleTime = 1800 4 MaxBuilds = 10 5 MachineDriver = "amazonec2" 6 MachineName = "gitlab-docker-machine-%s" 7 MachineOptions = [ 8 "amazonec2-access-key=XXXX", 9 "amazonec2-secret-key=XXXX", 10 "amazonec2-region=us-central-1", 11 "amazonec2-vpc-id=vpc-xxxxx", 12 "amazonec2-subnet-id=subnet-xxxxx", 13 "amazonec2-zone=x", 14 "amazonec2-use-private-address=true", 15 "amazonec2-security-group=xxxxx", 16 ]
凭证文件是可选的。你可以在 AWS 环境中为 runner 管理器使用 AWS Identity and Access Management (IAM) 实例配置文件。如果你不想在 AWS 中托管 runner 管理器,可以使用凭证文件。

实现容错设计#

至少使用两个 runner 管理器,它们使用相同的 runner 标签来创建一个容错设计并防止 runner 管理器主机故障。

例如,在 JihuLab.com 上,为托管在 Linux 上的 runner配置了多个 runner 管理器。每个 runner 管理器都有标签 saas-linux-small-amd64

在调整自动缩放参数以平衡组织的 CI/CD 工作负载的效率和性能时,使用可观察性和 runner 集群指标。

配置 runner 自动缩放执行器#

配置 runner 管理器后,配置特定于自动缩放的执行器:

你应该使用实例和 Docker 自动缩放执行器,因为这些是替代 Docker Machine 自动缩放器的技术。