极狐GitLab Runner 弹性伸缩
您可以使用极狐GitLab Runner 弹性伸缩在公共云实例上自动伸缩 Runner。 当您将 Runner 配置为使用 Autoscaler 时,您可以使用您的云基础设施同时运行多个作业来管理 CI/CD 作业负载的增加。
除了公共云实例的弹性伸缩选项外,您还可以使用以下容器编排解决方案来托管和伸缩 Runner 队列。
- Red Hat OpenShift Kubernetes 集群
- Kubernetes 集群:AWS EKS、Azure、本地
- AWS Fargate 上的 Amazon Elastic Container Services 集群
极狐GitLab Runner Autoscaler
极狐GitLab Runner Autoscaler 是基于 Docker Machine 的弹性伸缩技术的继承者。极狐GitLab Runner Autoscaler 的组件是:
- Taskscaler:管理弹性伸缩逻辑、记录,并为使用云提供商弹性伸缩实例组的 Runner 实例创建队列。
- Fleeting:云提供商虚拟机的抽象。
- Cloud provider plugin:处理对目标云平台的 API 调用,使用插件开发框架实现。
极狐GitLab Runner Autoscaler 支持的公有云实例
公共云计算实例支持以下弹性伸缩选项。
Next Runner Autoscaler(实验性) | 极狐GitLab Runner Docker Machine Autoscaler (GA) | |
---|---|---|
Amazon Web Services EC2 实例 | 是 | 是 |
Google Compute Engine | 是 | 是 |
Microsoft Azure Virtual Machines | 是 | 是 |
极狐GitLab Runner Autoscaler 支持的平台
执行器 | Linux | macOS | Windows |
---|---|---|---|
实例执行器 | 是 | 是 | 是 |
Docker Autoscaler 执行器 | 是 | 否 | 是 |
配置 Runner 管理器
您必须配置 Runner 管理器 以使用极狐GitLab Runner Autoscaling,Docker Machine Autoscaling 解决方案和极狐GitLab Runner Autoscaler。
Runner 管理器 是一种 Runner,可以创建多个 Runner 以进行弹性伸缩。它不断轮询极狐GitLab 的作业并与公共云基础设施交互以创建新实例来执行作业。 Runner 管理器 必须在安装了极狐GitLab Runner 的主机上运行。 选择一个 Docker 和极狐GitLab Runner 支持的发行版,如 Ubuntu、Debian、CentOS 或 RHEL。
- 创建一个实例来托管 Runner 管理器不可以是点实例 (AWS) 或点虚拟机(GCP、Azure)。
- 在实例上安装极狐GitLab Runner。
- 将云提供商凭证添加到 Runner 管理器 主机。
极狐GitLab Runner Autoscaler 的凭证配置示例
## credentials_file
[default]
aws_access_key_id=__REDACTED__
aws_secret_access_key=__REDACTED__
极狐GitLab Runner Docker Machine Autoscaling 的凭证配置示例
此代码段位于 config.toml
文件的 runners.machine 部分。
[runners.machine]
IdleCount = 1
IdleTime = 1800
MaxBuilds = 10
MachineDriver = "amazonec2"
MachineName = "gitlab-docker-machine-%s"
MachineOptions = [
"amazonec2-access-key=XXXX",
"amazonec2-secret-key=XXXX",
"amazonec2-region=us-central-1",
"amazonec2-vpc-id=vpc-xxxxx",
"amazonec2-subnet-id=subnet-xxxxx",
"amazonec2-zone=x",
"amazonec2-use-private-address=true",
"amazonec2-security-group=xxxxx",
]
容错设计的实现
为了实现容错设计并减轻 runner 管理器主机故障的风险,请从至少两个配置了相同 runner 标签的 runner 管理器开始。
比如,在 jihulab.com 上,配置了多个 runner 管理器以用于托管的 Linux runner。每个 runner 管理器都有 saas-linux-small-amd64
标签。
为了观测性和 runner fleet 指标,您可以调整弹性伸缩参数以找到适合您组织的典型 CI/CD 工作负载的效率和性能之间的平衡。
配置 Runner 弹性伸缩执行器
配置 Runner Manager 后,配置特定于弹性伸缩的执行器: