GitLab Runner Autoscaling

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

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

  • 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: 오토스케일링 로직, 북키퍼 기능의 관리 및 클라우드 제공자 자동 스케일링 그룹의 러너 인스턴스를 위해 플릿을 생성합니다.
  • Fleeting: 클라우드 제공자 가상 머신의 추상화입니다.
  • 클라우드 제공자 플러그인: 대상 클라우드 플랫폼에 대한 API 호출을 처리하며 플러그인 개발 프레임워크를 사용하여 구현됩니다.

GitLab Next Runner Autoscaling 개요

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 지원 플랫폼

Executor Linux macOS Windows
인스턴스 executor 지원 지원 지원
도커 오토스케일링 executor 지원 미지원 지원

러너 관리자 구성

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

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

  1. 러너 관리자를 호스트하기 위한 인스턴스를 생성합니다. 이 반드시 스팟 인스턴스(AWS)나 스팟 가상 머신(GCP, Azure)이 아니어야 합니다.
  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를 구성해야 합니다.

참고: 도커 머신 오토스케일러를 대체할 기술로 인스턴스와 도커 오토스케일링 executor를 사용해야 합니다.