GitLab에서 CI/CD 및 배포를 설정하려면 두 가지 옵션이 있습니다. 먼저, 기본적으로 GitLab에서 제공되는 GitLab shared runner를 사용하는 것입니다. 이 경우 한 달에 2,000분의 무료 CI 파이프라인을 사용할 수 있습니다. 다음으로는, 자신의 GitLab runner를 설정하는 것입니다. GitLab은 이미 GCP와 AWS와 잘 통합되도록 설정 할 수 있게 준비되어 있습니다. 설정 대시보드에서 간단히 Google Kubernetes 클러스터와 Amazon에 GitLab runner를 설정하고 배포 할 수 있습니다. 하지만 이럴 경우 runner를 몇 번 사용하지 않았음에도 불구하고 한 달 후에 받는 비용청구서의 금액은 상상한 것보다 많을 것입니다.
Spot Instance?
스팟 인스턴스는 온디맨드 가격보다 저렴한 비용으로 사용할 수 있는 미사용 EC2 인스턴스입니다. 스팟 인스턴스는 큰 할인율로 미사용 EC2 인스턴스를 요청할 수 있게 해주므로 사용자는 Amazon EC2 비용을 대폭 낮출 수 있습니다. 스팟 인스턴스의 시간당 가격을 스팟 가격이라고 합니다. 각 가용 영역 내 인스턴스 유형별 스팟 가격은 Amazon EC2에서 설정하며, 스팟 인스턴스의 장기적 공급 및 수요에 따라 점진적으로 조정됩니다. 스팟 인스턴스는 용량이 가용 상태이고 요청에 대한 시간당 최고 가격이 스팟 가격보다 더 높을 때마다 실행됩니다.
스팟 인스턴스는 애플리케이션이 실행되는 시간을 유연하게 조정할 수 있고 애플리케이션을 중단할 수 있는 경우에 선택하는 비용 효율적인 방법입니다. 예를 들어 스팟 인스턴스는 데이터 분석, 배치 작업, 백그라운드 프로세싱 및 선택적 작업에 적합합니다.
출처: https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/using-spot-instances.html
GitLab Runner 구성하기
1. Autoscaler 인스턴스 생성
이 인스턴스는 단지 작업을 실행하는 역할이 아니라 필요에 따라 AWS 스팟 인스턴스를 가동 및 중지하는 역할을 수행하여 인스턴스를 관리합니다. 24시간 작동해야 하는 인스턴스이므로 여기서는 2.micro linux (ubuntu) 인스턴스를 생성하였습니다.
- AmazonEC2FullAccess 및 AmazonS3FullAccess가 부여된 GitLab 사용자 권한 생성
- Gitlab Runner 관리자 인스턴스로 사용할 t2.micro 우분투 인스턴스를 만듭니다. 설정은 기본 옵션으로 하겠습니다.
2. 인스턴스에 Docker 설치
먼저 ssh를 통해 인스턴스에 접속합니다.
- apt-get 업데이트 및 필요 패키지 설치
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
- Docker의 공식 GPG 키 추가 및 저장소 설정
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
- apt 패키지 업데이트 및 Docker 설치
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
- Docker 머신 설치
base=https://github.com/docker/machine/releases/download/v0.16.0 &&
curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
sudo mv /tmp/docker-machine /usr/local/bin/docker-machine &&
chmod +x /usr/local/bin/docker-machine
공식 문서 참고: https://docs.docker.com/machine/install-machine/
3. Gitlab Runner 설치
-
GitLab 공식 저장소 추가
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
-
GitLab Runner 설치
sudo apt-get install gitlab-runner
4. Gitlab Runner 등록
Gitlab Runner는 그룹 레벨과 프로젝트 레벨로 나눠서 등록할 수 있습니다. 그룹 레벨은 그룹의 모든 프로젝트에서 사용할 수 있고, 프로젝트 레벨은 단일 저장소의 프로젝트 안에서만 사용할 수 있습니다.
프로젝트 또는 그룹에서 **Settings >> Runners
**로 이동하여 Runner 섹션에서 표시된 토큰을 복사합니다.
그리고 인스턴스에 접속하여 다음을 실행합니다.
gitlab-runner register
gitlab Runner 등록 절차 및 등록 취소 방법에 대한 자세한 내용은 공식 문서를 확인하세요.
5. Gitlab Runner 구성
이제 마지막으로 runner를 구성해야 합니다.
vi /etc/gitlab-runner/config.toml
GitLab Runner 구성에 대한 자세한 내용은 공식 문서를 확인하거나 인포그랩에 문의해 주세요.