새로운 러너 등록 워크플로우로의 마이그레이션

Tier: Free, Premium, Ultimate
Offering: GitLab.com, Self-Managed, GitLab Dedicated

이 페이지에는 예정된 제품, 기능 및 기능과 관련된 정보가 포함되어 있습니다.
이제시스 정보는 참고용으로만 제공되었음을 강조합니다. 구매 또는 계획 목적으로 이 정보에 의존해서는 안 됩니다.
제품, 기능 또는 기능의 개발, 릴리스 및 타이밍은 변경되거나 지연될 수 있으며 GitLab Inc.의 전적인 재량에 따라 결정됩니다.

GitLab 16.0에서 러너 생성 워크플로우를 수정했습니다. 이제 러너를 등록하기 위해 러너 인증 토큰을 사용하는 새로운 워크플로우를 소개했습니다. 등록 토큰을 사용하는 레거시 워크플로우는 폐기되며 GitLab 18.0에서 제거될 예정입니다.

새 워크플로우의 현재 개발 상태에 대한 정보는 epic 7663를 참조하세요.

새 아키텍처에 대한 기술적 설계 및 이유에 대한 정보는 Next GitLab Runner Token Architecture를 참조하세요.

새 러너 등록 워크플로우에 문제가 있거나 아래 정보가 충분하지 않다면 피드백 이슈를 통해 알려주세요.

새 러너 등록 워크플로우

새 러너 등록 워크플로우에서:

  1. GitLab UI에서 러너를 직접 생성하거나 프로그래밍적으로 생성합니다.
  2. 러너 인증 토큰을 받습니다.
  3. 러너를 이 구성으로 등록할 때 등록 토큰 대신 러너 인증 토큰을 사용합니다. 여러 호스트에 등록된 러너 관리자는 동일한 러너로 GitLab UI에서 나타나지만 식별하는 시스템 ID가 있습니다.

새 러너 등록 워크플로우의 이점은 다음과 같습니다:

  • 러너에 대한 소유권 레코드 유지 및 사용자에 미치는 영향 최소화
  • 고유한 시스템 ID의 추가로 동일한 인증 토큰을 여러 러너에서 재사용할 수 있습니다. 자세한 내용은 GitLab 러너 구성 재사용을 참조하세요.

계획된 변경에 대한 예상 시간표

  • GitLab 15.10 이후에 새 러너 등록 워크플로우를 사용할 수 있습니다.
  • GitLab 17.0에서 러너 등록 토큰 사용을 비활성화하려고 합니다.
  • GitLab 18.0에서 러너 등록 토큰 지원을 완전히 제거할 계획입니다.

러너 등록 워크플로우가 정지되지 않도록 하기

GitLab 17.0 이전까지는 여전히 레거시 러너 등록 워크플로우를 사용할 수 있습니다.

GitLab 17.0에서 레거시 러너 등록 워크플로우가 자동으로 비활성화됩니다. 제한된 시간 동안 매뉴얼으로 다시 활성화할 수 있습니다. 자세한 내용은 GitLab 17.0 이후 등록 토큰 사용을 참조하세요.

GitLab 인스턴스가 GitLab 17.0으로 업그레이드되기 전에 조치를 취하지 않으면 러너 등록 워크플로우가 중단되고 gitlab-runner register 명령에 410 Gone - runner registration disallowed 오류가 발생합니다.

문제 없는 워크플로우를 유지하기 위해 다음을 수행해야 합니다:

  1. 러너를 생성하고 인증 토큰을 가져옵니다.
  2. 러너 등록 워크플로우에서 등록 토큰을 인증 토큰으로 대체합니다.

GitLab 17.0 이후 등록 토큰 사용

GitLab 17.0 이후에 등록 토큰을 계속 사용하려면:

issue 411923에서 등록 토큰을 다시 활성화하는 UI 설정 구현 계획이 제안되었습니다.

기존 러너에 대한 영향

기존 러너는 18.0 이후에도 계속 정상적으로 작동할 것입니다. 이 변경은 새 러너 등록에만 영향을 미칩니다.

gitlab-runner register 명령 구문 변경

gitlab-runner register 명령은 등록 토큰을 더 이상 허용하지 않고 대신 GitLab 러너 관리 페이지에서 생성된 새 러너 인증 토큰을 허용합니다. 러너 인증 토큰은 glrt- 접두사로 식별됩니다.

GitLab UI에서 러너를 생성할 때 이전에 gitlab-runner register 명령에서 프롬프트되던 구성 값을 지정합니다. 이러한 명령행 옵션은 폐기되었으며 새로운 구성을 register에 전달하지 않습니다.

다음과 같이 러너 인증 토큰을 지정하는 경우:

  • --token 명령행 옵션으로 러너 인증 토큰을 지정한 경우, gitlab-runner register 명령은 구성 값을 허용하지 않습니다.
  • --registration-token 명령행 옵션으로 러너 인증 토큰을 지정한 경우, gitlab-runner register 명령은 구성 값을 무시합니다.
토큰 등록 명령
러너 인증 토큰 gitlab-runner register --token $RUNNER_AUTHENTICATION_TOKEN
러너 등록 토큰 (폐기됨) gitlab-runner register --registration-token $RUNNER_REGISTRATION_TOKEN <runner configuration arguments>

인증 토큰은 glrt- 접두사로 식별됩니다.

자동화 워크플로우를 최소한으로 방해하도록하기 위해, 러너 인증 토큰이 레거시 매개변수인 --registration-token에 지정된 경우 레거시 호환 등록 처리가 트리거됩니다.

GitLab 15.9의 예제 명령입니다:

gitlab-runner register \
    --non-interactive \
    --executor "shell" \
    --url "https://gitlab.com/" \
    --tag-list "shell,mac,gdk,test" \
    --run-untagged "false" \
    --locked "false" \
    --access-level "not_protected" \
    --registration-token "GR1348941C6YcZVddc8kjtdU-yWYD"

GitLab 15.10 이후에, UI에서 러너 및 태그 디렉터리, 잠금 상태, 액세스 수준과 같은 일부 속성을 생성하고 register에 전달하지 않습니다. GitLab 15.11 이후에는 이러한 속성을 register의 인수로 사용할 수 없습니다.

다음 예제는 새 명령입니다:

gitlab-runner register \
    --non-interactive \
    --executor "shell" \
    --url "https://gitlab.com/" \
    --token "glrt-2CR8_eVxiioB1QmzPZwa"

오토스케일링에 대한 영향

GitLab Runner Operator나 GitLab Runner Helm Chart와 같은 오토스케일링 시나리오에서 등록 토큰을 UI에서 생성된 러너 인증 토큰으로 대체합니다. 이렇게 하면 작업마다 러너를 만드는 대신 동일한 러너 구성이 작업 전체에 재사용됩니다. 특정 러너는 러너 프로세스가 시작될 때 생성된 고유한 시스템 ID로 식별할 수 있습니다.

프로그래밍적으로 러너 생성

GitLab 15.11 이후에 사용자로 서 러너를 생성하려면 POST /user/runners REST API를 사용할 수 있습니다. 이는 러너 구성이 동적이거나 재사용할 수 없을 때에만 사용해야 합니다. 러너 구성이 정적인 경우 기존 러너의 러너 인증 토큰을 재사용해야 합니다.

러너 생성 및 등록을 자동화하는 방법에 대한 지침은 러너 생성 및 등록 자동화 튜토리얼을 참조하세요.

Helm 차트를 사용하여 GitLab Runner 설치

러너 구성 옵션 중 일부는 러너 등록 중에 설정할 수 없습니다. 이러한 옵션은 다음과 같이 구성할 수 있습니다.

  • UI에서 러너를 생성할 때
  • user/runners REST API 엔드포인트를 사용하여

다음 구성 옵션들은 더 이상 values.yaml에서 지원되지 않습니다:

## 이러한 필드들은 사용이 중단되었으며, GitLab Runner 18.0 이상에서 이를 지정하면 러너가 시작하지 못할 수 있습니다.
## runnerRegistrationToken에 러너 인증 토큰이 지정된 경우 등록은 성공하지만, 다른 값들은 무시됩니다.
runnerRegistrationToken: ""
locked: true
tags: ""
maximumTimeout: ""
runUntagged: true
protected: true

러너 인증 토큰을 secrets에 저장하는 경우 해당 값도 수정해야 합니다.

이전 러너 등록 작업 흐름에서는 다음과 같이 필드를 지정했습니다:

apiVersion: v1
kind: Secret
metadata:
  name: gitlab-runner-secret
type: Opaque
data:
  runner-registration-token: "REDACTED" # 사용 중단됨, ""로 설정
  runner-token: ""

새로운 러너 등록 작업 흐름에서는 runner-token을 사용해야 합니다:

apiVersion: v1
kind: Secret
metadata:
  name: gitlab-runner-secret
type: Opaque
data:
  runner-registration-token: "" # 호환성을 위해 빈 문자열로 남겨둬야 함
  runner-token: "REDACTED"
note
비밀 관리 솔루션이 runner-registration-token에 빈 문자열을 지정할 수 없는 경우, 아무 문자열로 설정할 수 있습니다. runner-token이 있을 때는 무시될 것입니다.

알려진 문제

Pod 이름이 러너 세부 정보 페이지에 표시되지 않음

Helm 차트를 사용하여 러너를 등록할 때, 새로운 등록 작업 흐름을 사용하면 러너 세부 정보 페이지에 Pod 이름이 표시되지 않습니다. 자세한 내용은 issue 423523를 참조하세요.

러너 인증 토큰이 회전될 때 업데이트되지 않음

GitLab Operator를 사용하여 러너를 등록할 때, Custom Resource Definition에서 참조하는 러너 인증 토큰이 토큰이 회전되어도 업데이트되지 않습니다. 이는 다음과 같은 경우 발생합니다:

  • 커스텀 리소스 정의에서 참조하는 시크릿에 러너 인증 토큰(prefixed with glrt-)을 사용 중입니다 참조된 시크릿에서.
  • 러너 인증 토큰이 만료될 예정입니다. 러너 인증 토큰 만료에 대한 자세한 내용은 인증 토큰 보안을 참조하세요.

자세한 내용은 issue 186를 참조하세요.