极狐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。
- 创建一个实例来托管 runner 管理器。这个实例不能是 spot 实例(AWS)或 spot 虚拟机(GCP、Azure)。
- 在实例上安装极狐GitLab Runner。
- 将云提供商凭证添加到 Runner Manager 主机。
你可以在容器中托管 runner 管理器。对于[极狐GitLab 托管的 runner](https://gitlab.cn/docs/jh/ci/runners/),runner 管理器托管在虚拟机实例上。
极狐GitLab Runner Docker Machine 自动缩放的示例凭证配置
此代码片段位于 config.toml 文件的 runners.machine 部分。
toml1 [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 自动缩放器的技术。