GitLab Runner Autoscaling

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-Managed

공개 클라우드 인스턴스에서 GitLab Runner 자동 스케일링을 사용할 수 있습니다. 러너(runner)를 오토스케일러로 구성하면 클라우드 인프라를 활용하여 CI/CD 작업 부하를 증가시킬 수 있으며 동시에 여러 작업을 실행할 수 있습니다.

공개 클라우드 인스턴스를 위한 오토스케일링 옵션 외에도 다음 컨테이너 오케스트레이션 솔루션을 사용하여 러너 플릿을 호스팅하고 확장할 수 있습니다.

  • Red Hat OpenShift Kubernetes 클러스터
  • Kubernetes 클러스터: AWS EKS, Azure, 온프레미스
  • Amazon Elastic Container Services (AWS Fargate) 클러스터

GitLab Runner Autoscaler

GitLab Runner Autoscaler는 Docker Machine에 기반한 오토스케일링 기술의 후속 제품입니다. GitLab Runner Autoscaler의 컴포넌트는 다음과 같습니다.

  • Taskscaler: 오토스케일링 로직, 부기록 관리 및 클라우드 제공자 인스턴스 오토스케일링 그룹 생성을 관리합니다.
  • Fleeting: 클라우드 제공자 가상 머신의 추상화입니다.
  • 클라우드 제공자 플러그인: 대상 클라우드 플랫폼의 API 호출을 처리하며 플러그인 개발 프레임워크를 사용하여 구현됩니다.

다음 GitLab Runner 자동 스케일링 개요

GitLab Runner Autoscaler 지원 공개 클라우드 인스턴스

다음 오토스케일링 옵션은 공개 클라우드 컴퓨팅 인스턴스에서 지원됩니다.

  다음 GitLab Runner Autoscaler (Status: Beta) GitLab Runner Docker Machine Autoscaler (GA)
Amazon Web Services EC2 인스턴스
Google Compute Engine
Microsoft Azure 가상 머신

GitLab Runner Autoscaler 지원 플랫폼

Executor Linux macOS Windows
인스턴스 executor
Docker Autoscaler executor 아니오

러너 관리자 구성

Docker Machine Autoscaling 솔루션 및 GitLab Runner Autoscaler를 모두 사용하도록 러너 관리자를 구성해야 합니다.

러너 관리자는 오토스케일링을 위해 여러 러너를 생성하는 유형의 러너입니다. GitLab에서 지속적으로 작업을 폴링하고 새 인스턴스를 생성하여 작업을 실행하기 위해 공개 클라우드 인프라와 상호 작용합니다. 러너 관리자는 GitLab Runner가 설치된 호스트 머신에서 실행해야 합니다. Ubuntu, Debian, CentOS 또는 RHEL과 같이 Docker 및 GitLab Runner에서 지원하는 배포판을 선택하십시오.

  1. 러너 관리자를 호스트하기 위한 인스턴스를 생성하세요. 이 반드시 (AWS 기준) 스pod 인스턴스나 (GCP, Azure 기준) 스pod 가상 머신이어서는 안 됩니다.
  2. 인스턴스에 GitLab Runner를 설치하세요.
  3. 클라우드 제공자 자격 증명을 러너 관리자 호스트 머신에 추가하세요.

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",
    ]

러너 자동 스케일링 executor 구성

러너 관리자를 구성한 후에 오토스케일링에 특화된 executor를 구성하세요:

note
Docker Machine 오토스케일러를 대체하는 기술로 인스턴스 및 Docker Autoscaling executor를 사용해야 합니다.