튜토리얼: 러너 생성 및 등록 자동화
이 튜토리얼은 러너 생성 및 등록을 자동화하는 방법을 설명합니다. 이 튜토리얼의 지침은 지원 중단된 등록 토큰을 사용하는 등록 방법을 대체한 러너 인증 토큰을 사용한 러너 생성 및 등록을 설명합니다. 러너를 생성하기 위해 REST API를 사용할 수 있도록 접근 토큰을 생성합니다.
이 튜토리얼은 러너 생성 및 등록을 자동화하는 방법을 설명합니다.
러너 생성 및 등록을 자동화하려면:
이 튜토리얼의 지침은 지원 중단된 등록 토큰을 사용하는 등록 방법을 대체한 러너 인증 토큰을 사용한 러너 생성 및 등록을 설명합니다. 자세한 내용은 새 러너 등록 워크플로를 참조하세요.
시작하기 전에#
- GitLab Runner가 GitLab 인스턴스에 설치되어 있어야 합니다.
- 인스턴스 러너를 생성하려면 관리자여야 합니다.
- 그룹 러너를 생성하려면 관리자이거나 그룹에 대한 Owner 권한이 있어야 합니다.
- 프로젝트 러너를 생성하려면 관리자이거나 프로젝트에 대한 Maintainer 권한이 있어야 합니다.
접근 토큰 생성#
러너를 생성하기 위해 REST API를 사용할 수 있도록 접근 토큰을 생성합니다.
다음을 생성할 수 있습니다:
- 공유, 그룹 및 프로젝트 러너와 함께 사용할 개인 접근 토큰.
- 그룹 및 프로젝트 러너와 함께 사용할 그룹 또는 프로젝트 접근 토큰.
접근 토큰은 GitLab UI에서 한 번만 볼 수 있습니다. 페이지를 벗어나면 더 이상 토큰에 접근할 수 없습니다. HashiCorp Vault 또는 Keeper Secrets Manager Terraform 플러그인과 같은 시크릿 관리 솔루션을 사용하여 토큰을 저장해야 합니다.
개인 접근 토큰 생성#
히스토리
확장된 최대 허용 수명 제한의 가용성은 기능 플래그로 제어됩니다. 자세한 내용은 기록을 참조하세요.
- 오른쪽 상단 모서리에서 아바타를 선택합니다.
- Edit profile을 선택합니다.
- 왼쪽 사이드바에서 Access > Personal access tokens를 선택합니다.
- Add new token을 선택합니다.
- 토큰의 이름과 만료 날짜를 입력합니다.
- 토큰은 해당 날짜의 UTC 자정에 만료됩니다. 만료 날짜가 2024-01-01인 토큰은 2024-01-01의 00:00:00 UTC에 만료됩니다.
- 만료 날짜를 입력하지 않으면 만료 날짜가 현재 날짜보다 365일 후로 자동으로 설정됩니다.
- 기본적으로 이 날짜는 현재 날짜보다 최대 365일 후일 수 있습니다. GitLab 17.6 이상에서는 이 제한을 400일로 연장할 수 있습니다.
- Select scopes 섹션에서 create_runner 체크박스를 선택합니다.
- Create personal access token을 선택합니다.
프로젝트 또는 그룹 접근 토큰 생성#
히스토리
확장된 최대 허용 수명 제한의 가용성은 기능 플래그로 제어됩니다. 자세한 내용은 기록을 참조하세요.
프로젝트 접근 토큰은 단 하나의 프로젝트에 접근 권한을 부여하는 반면 그룹 접근 토큰은 그룹의 모든 프로젝트에 접근 권한을 부여합니다.
프로젝트 접근 토큰은 내부 사용자로 처리됩니다. 내부 사용자가 프로젝트 접근 토큰을 생성하면 해당 토큰은 가시성 수준이 Internal로 설정된 모든 프로젝트에 접근할 수 있습니다.
프로젝트 접근 토큰을 생성하려면:
- 상단 바에서 Search or go to를 선택하고 프로젝트 또는 그룹을 찾습니다.
- 왼쪽 사이드바에서 Settings > Access tokens를 선택합니다.
- Add new token을 선택합니다.
- 이름을 입력합니다. 토큰 이름은 그룹 또는 프로젝트를 볼 권한이 있는 모든 사용자에게 표시됩니다.
- 토큰의 만료 날짜를 입력합니다.
- 토큰은 해당 날짜의 UTC 자정에 만료됩니다. 만료 날짜가 2024-01-01인 토큰은 2024-01-01의 00:00:00 UTC에 만료됩니다.
- 만료 날짜를 입력하지 않으면 만료 날짜가 현재 날짜보다 365일 후로 자동으로 설정됩니다.
- 기본적으로 이 날짜는 현재 날짜보다 최대 365일 후일 수 있습니다. GitLab 17.6 이상에서는 이 제한을 400일로 연장할 수 있습니다.
- 인스턴스 전체 최대 수명 설정이 GitLab Self-Managed 인스턴스의 최대 허용 수명을 제한할 수 있습니다.
- Select a role 드롭다운 목록에서:
- 프로젝트 접근 토큰의 경우 Maintainer를 선택합니다.
- 그룹 접근 토큰의 경우 Owner를 선택합니다.
- Select scopes 섹션에서 create_runner 체크박스를 선택합니다.
- Create project access token을 선택합니다.
러너 구성 생성#
러너 구성은 요구 사항에 맞게 러너를 구성하는 곳입니다.
러너 구성을 생성하면 러너를 등록하기 위한 러너 인증을 받습니다. 러너가 동일한 러너 인증
토큰으로 등록될 때 하나 이상의 러너를 동일한 구성에 연결할 수 있습니다. 러너 구성은 config.toml 파일에 저장됩니다.
러너 구성을 생성하려면 다음을 사용할 수 있습니다:
- GitLab REST API.
gitlab_user_runnerTerraform 리소스.
GitLab REST API 사용#
시작하기 전에 다음이 필요합니다:
- GitLab 인스턴스의 URL. 예를 들어 프로젝트가
gitlab.example.com/yourname/yourproject에 호스팅된 경우 GitLab 인스턴스 URL은https://gitlab.example.com입니다. - 그룹 또는 프로젝트 러너의 경우 그룹 또는 프로젝트의 ID 번호. ID 번호는 프로젝트 또는 그룹 이름 아래 프로젝트 또는 그룹 개요 페이지에 표시됩니다.
POST /user/runners
REST 엔드포인트의 접근 토큰을 사용하여 러너를 생성합니다:
-
curl을 사용하여 엔드포인트를 호출하여 러너를 생성합니다:curl --silent --request POST --url "https://gitlab.example.com/api/v4/user/runners" --data "runner_type=project_type" --data "project_id=<project_id>" --data "description=<your_runner_description>" --data "tag_list=<your_comma_separated_job_tags>" --header "PRIVATE-TOKEN: <project_access_token>"curl --silent --request POST --url "https://gitlab.example.com/api/v4/user/runners" --data "runner_type=group_type" --data "group_id=<group_id>" --data "description=<your_runner_description>" --data "tag_list=<your_comma_separated_job_tags>" --header "PRIVATE-TOKEN: <group_access_token>"curl --silent --request POST --url "https://gitlab.example.com/api/v4/user/runners" --data "runner_type=instance_type" --data "description=<your_runner_description>" --data "tag_list=<your_comma_separated_job_tags>" --header "PRIVATE-TOKEN: <personal_access_token>"- 반환된
token값을 안전한 장소 또는 시크릿 관리 솔루션에 저장합니다.token값은 API 응답에서 한 번만 반환됩니다.
gitlab_user_runnerTerraform 리소스 사용#Terraform으로 러너 구성을 생성하려면 GitLab Terraform 공급자의
gitlab_user_runnerTerraform 리소스를 사용합니다.구성 블록의 예시:
resource "gitlab_user_runner" "example_runner" { runner_type = "instance_type" description = "my-runner" tag_list = ["shell", "docker"] }러너 설치 및 등록 자동화#
퍼블릭 클라우드의 가상 머신 인스턴스에서 러너를 호스팅하는 경우 러너 설치 및 등록을 자동화할 수 있습니다.
러너와 해당 구성을 생성한 후 동일한 러너 인증 토큰을 사용하여 동일한 구성으로 여러 러너를 등록할 수 있습니다. 예를 들어 동일한 실행기 유형과 잡 태그를 가진 여러 인스턴스 러너를 대상 컴퓨팅 호스트에 배포할 수 있습니다. 동일한 러너 인증 토큰으로 등록된 각 러너는 GitLab Runner가 무작위로 생성하고 로컬 파일 시스템에 저장하는 고유한
system_id를 가집니다.Google Compute Engine에 러너를 등록하고 배포하는 데 사용할 수 있는 자동화 워크플로의 예시:
-
Terraform infrastructure as code를 사용하여 Google Cloud Platform(GCP)에 호스팅된 가상 머신에 러너 애플리케이션을 설치합니다.
-
GCP Terraform 공급자에서
metadata키를 사용하여 GCP 가상 머신의 러너 구성 파일에 러너 인증 토큰을 추가합니다. -
대상 GitLab 인스턴스에 러너를 등록하려면 GCP Terraform 공급자에서 채워진
cloud-init스크립트를 사용합니다. 예시:#!/bin/bash apt update curl --location "https://packages.gitlab.com/install/repositories/runner/ gitlab-runner/script.deb.sh" | bash GL_NAME=$(curl 169.254.169.254/computeMetadata/v1/instance/name --header "Metadata-Flavor:Google") GL_EXECUTOR=$(curl 169.254.169.254/computeMetadata/v1/instance/attributes/ gl_executor --header "Metadata-Flavor:Google") apt update apt install -y gitlab-runner gitlab-runner register --non-interactive --name="$GL_NAME" --url="https://gitlab.com" --token="$RUNNER_TOKEN" --request-concurrency="12" --executor="$GL_EXECUTOR" --docker-image="alpine:latest" systemctl restart gitlab-runner
동일한 구성을 가진 러너 보기#
러너 생성 및 등록을 자동화했으므로 이제 GitLab UI에서 동일한 구성을 사용하는 러너를 볼 수 있습니다.
- 오른쪽 상단 모서리에서 Admin을 선택합니다.
- 왼쪽 사이드바에서 CI/CD > Runners를 선택합니다.
- 검색 박스에 러너 설명을 입력하거나 러너 목록을 검색합니다.
- 동일한 구성을 사용하는 러너를 보려면 Details 탭에서 Runners 옆에 있는 Show details를 선택합니다.
- 반환된
