GitLab Runner Autoscaling
공개 클라우드 인스턴스에서 GitLab Runner 자동 스케일링을 사용할 수 있습니다. 러너를 오토스케일러로 구성하면 클라우드 인프라를 활용하여 CI/CD 작업 부하 증가를 관리할 수 있습니다.
공개 클라우드 인스턴스용 오토스케일링 옵션 외에도 다음 컨테이너 오케스트레이션 솔루션을 사용하여 러너 플릿을 호스팅하고 확장할 수 있습니다.
- Red Hat OpenShift Kubernetes 클러스터
- Kubernetes 클러스터: AWS EKS, Azure, 온프레미스
- AWS Fargate에서 Amazon Elastic Container Services 클러스터
GitLab Runner 오토스케일러
GitLab Runner 오토스케일러는 Docker Machine을 기반으로 한 오토스케일링 기술의 후속 제품입니다. GitLab Runner 오토스케일러의 구성 요소는 다음과 같습니다.
- Taskscaler: 오토스케일링 로직, 부기록 관리, 클라우드 제공업체 오토스케일링 인스턴스의 플릿을 생성합니다.
- Fleeting: 클라우드 제공업체 가상 머신의 추상화
- 클라우드 제공업체 플러그인: 대상 클라우드 플랫폼에 대한 API 호출을 처리하며 플러그인 개발 프레임워크를 사용하여 구현됩니다.
GitLab Runner 오토스케일러 지원 공개 클라우드 인스턴스
다음 오토스케일링 옵션은 공개 클라우드 컴퓨팅 인스턴스에 대해 지원됩니다.
Next Runner Autoscaler | GitLab Runner Docker Machine Autoscaler | |
---|---|---|
Amazon Web Services EC2 인스턴스 | 예 | 예 |
Google Compute Engine | 예 | 예 |
Microsoft Azure Virtual Machines | 예 | 예 |
GitLab Runner 오토스케일러 지원 플랫폼
Executor | Linux | macOS | Windows |
---|---|---|---|
인스턴스 executor | 예 | 예 | 예 |
Docker Autoscaler executor | 예 | 아니요 | 예 |
러너 관리자 구성
러너 관리자를 GitLab Runner 오토스케일링 및 GitLab Runner 오토스케일러에 모두 구성해야 합니다.
러너 관리자는 여러 러너를 생성하는 유형의 러너입니다. GitLab에서 작업을 지속적으로 폴링하고 새 인스턴스를 만들어 작업을 실행하기 위해 공개 클라우드 인프라와 상호작용합니다. 러너 관리자는 GitLab Runner가 설치된 호스트 머신에서 실행해야 합니다. Ubuntu, Debian, CentOS 또는 RHEL과 호환되는 배포판을 선택하세요.
- 러너 관리자를 호스트하는 인스턴스를 생성하세요. 이 인스턴스는 스팟 인스턴스(AWS)나 스팟 가상 머신(GCP, Azure)이 아니어야 합니다.
- 인스턴스에 GitLab Runner 설치하세요.
- 클라우드 제공업체 자격 증명을 Runner Manager 호스트 머신에 추가하세요.
참고: 러너 관리자를 컨테이너에 호스팅할 수 있습니다. GitLab 호스팅 러너의 경우, 러너 관리자는 가상 머신 인스턴스에 호스팅됩니다.
GitLab Runner 오토스케일러를 위한 자격 증명 구성 예
## credentials_file
[default]
aws_access_key_id=__REDACTED__
aws_secret_access_key=__REDACTED__
GitLab Runner Docker Machine 오토스케일러를 위한 자격 증명 구성 예
이 스니펫은 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",
]
참고: 자격 증명 파일은 선택 사항입니다. AWS 환경에서 러너 관리자에 AWS Identity and Access Management (IAM) 인스턴스 프로필을 사용할 수 있습니다. 러너 관리자를 AWS에서 호스팅하고 싶지 않은 경우 자격 증명 파일을 사용할 수 있습니다.
견고한 설계 구현
런너 관리자 호스트 장애의 위험을 완화하고 장애 허용 설계를 구현하려면 동일한 러너 태그로 구성된 최소 두 개의 러너 관리자부터 시작하세요.
예를 들어, GitLab.com에서는 Linux에 호스팅된 러너를 위해 여러 러너 관리자가 구성됩니다. 각 러너 관리자는 saas-linux-small-amd64
태그를 가지고 있습니다.
가시성 및 러너 플릿 메트릭으로 조정하여 조직의 전형적인 CI/CD 작업 부하에 대한 효율성과 성능 사이의 균형을 찾을 수 있습니다.
러너 자동 스케일링 실행기 구성
러너 관리자를 구성한 후에 자동 스케일링에 특정한 실행기를 구성하세요:
참고: 도커 머신 오토스케일러를 대체할 기술로 인스턴스 실행기 및 도커 자동 스케일링 실행기를 사용해야 합니다.