AWS/CICD

Gitlab runner 란?, AWS EC2 인스턴스 Gitlab Runner 등록하기

Jaden Park 2021. 10. 12. 01:22

Gitlab Runner 란?

Gitlab Runner 동작과정

AWS EC2 인스턴스를 생성해 Gitlab Specific Runner 등록하기


 

Gitlab Runner 란?

Gitlab CI를 실행하기 위한 별도의 프로세스

Shared, Group, Specific 의 3가지 러너로 구성 가능

사용량에 따라 Runner의 Configration을 변경하여 사용

Gitlab이 구성되어 있는 Instance에는 Runner 구성 권장하지 않음

 

Shared runner

기본적으로 Gitlab에서 제공. 한 달에 2,000분 무료 사용 가능

Gitlab 인스턴스의 모든 그룹 및 프로젝트에서 사용 가능

Job 수가 가장 적은 프로젝트부터 Job을 처리

 

Group runner 

그룹의 모든 프로젝트가 Runner 세트에 액세스 할 수 있도록 하려면 그룹 러너를 사용

그룹 러너는 FIFO 대기열을 사용해 Job을 처리

 

 

Specific runner

특정 프로젝트에 특정 러너를 사용할 때 사용

  • ex) 자격 증명이 필요한 배포 Job처럼 특정 요구사항이 있을 때 혹은 다른 러너와 분리하여 이점을 얻을 수 있는 CI 활동이 많은 프로젝트

여러 프로젝트에서 사용할 특정 러너 설정 가능. 각 프로젝트에서 명시적으로 활성화 해야함. 방법은 이후에 설명.

FIFO 대기열을 사용하여 job을 처리

 

 

 


 

Gitlab Runner 동작과정

1. 소스 작성

2. 작성한 소스를 Gitlab에 Push

3. 변경된 소스를 확인하고 .gitlab-ci.yml 을 통해 Runner 트리거

4. .gitlab-ci.yml 에 작성된 내용을 바탕으로 Runner에서 해당 작업 실행

 

 


 

AWS EC2 인스턴스를 생성해 Gitlab Specific Runner 등록하기

등록 전 알아둘 것

1. 관리자만 등록 가능

2. Shared, Group, Specific Runner 등록 가능

3. Runner 등록에 필요한 URL Token 정보 확인

4. Runner 등록 시 Tag를 지정하여 등록

5. 등록된 Tag 기반으로 Runner 동작 (미기재시 Default 로 설정되고 동작)

 

 

1. AWS EC2 인스턴스 생성

AMI: Amazon Linux 2 AMI (HVM), SSD Volume Type - ami-0e4a9ad2eb120e054 (64비트 x86)

AMI를 원하는 리눅스를 사용해도 되지만 해당 글을 Amazon Linux 2 를 베이스로 작성했습니다.

나머지 설정은 Default로 해도 무방.

 

 

2. 인스턴스 SSH 접근 후 Docker 설치

Docker Executor 를 사용하려면 Gitlab Runner를 사용하기 전에 Docker를 설치해야한다.해당 설치는 AWS 개발자 안내서를 참고함.만약, 다른 AMI 를 사용했다면 Docker docs를 참고하여 이미지 설치.

 

a. 인스턴스에 설치한 패키지 및 패키지 캐시를 업데이트

sudo yum -y update

 

 

 

b. 최신 도커 엔진 패키지 설치

sudo yum install docker

 

 

c. 도커 서비스 시작

sudo service docker start

 

 

d. ec2-user가 사용할 수 있도록 docker 그룹 추가

sudo usermod -aG docker ec2-user

 

 

e. 재부팅 후에도 Active 하도록 등록

sudo chkconfig docker on

 

 

3. Gitlab runner 설치

해당 설치는 Gitlab runner 공식 문서를 참고함.

다른 AMI 를(리눅스) 사용한다면 공식 문서를 참고

 

a. 공식 Gitlab 리포지토리 추가

curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | sudo bash

 

 

b. Gitlab runner 설치

sudo yum install gitlab-runner

특정 버전을 설치하고 싶다면 Gitlab runner 공식 문서를 참고바람

 

 

 

4. 프로젝트 생성 후 대시보드에서 Settings - CI/CD - Runners 확인

토큰값을 사용해야 하므로 복사해놓기

 

 

5. Gitlab Runner 등록

명령형으로 등록도 가능하지만

편의성을 위해 대화형으로 등록.

 

추가적으로 확인해야 할 것이 있다면 gitlab 공식문서 확인

sudo gitlab-runner register

## 프로젝트와 연결을 위한 URL 입력

## 토큰값 입력

## 러너 설명 입력

## 러너 tag 입력

## executor 입력

## default Docker image 입력

URL & Token: 4번 항목을 참고

러너 설명: 러너 이름 혹은 세부정보를 사용자가 구분하게끔 입력

러너 tag: .gitlab-ci.yml 에서 tag 를 통해 러너를 지정할 수 있음. 공란일 때는 default Runner가 됌.

executor: 시나리오에서 빌드를 실행하는데 사용할 수 있는 여러 실행기를 구현. 추가적인 설명은 gitlab 공식 문서 참고.

 

 

 

6. 프로젝트에 재대로 등록됐는지 확인

 

재대로 등록됐다면 초록불이 왼쪽에 나옴.

 

 

만일, "New runner. Has not connected yet." 와 함께 경고느낌표가 뜬다면

5. gitlab-runner 등록 시 sudo 명령 실행해야한다.

일반 사용자로 실행 시 ~/.gitlab-runner/config.toml 이 사용되지 않고 /etc/gitlab-runner/config.toml 이 사용되었기 때문

만약, 일반사용자로 gitlab-runner를 등록하여 사용하고 싶다면 toml 파일을 /etc에 복사해야한다.

sudo cp ~/.gitlab-runner/config.toml /etc/gitlab-runner/config.toml

 

 

추가로 참고하면 좋은 페이지

https://www.devopshint.com/how-to-install-gitlab-runner-on-amazon-linux-2