새로운 러너 등록 워크플로우로의 이관

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으로 업그레이드되기 전에 조치를 취하지 않으면 러너 등록 워크플로우가 손상됩니다.

러너 워크플로우가 손상되지 않도록하려면 다음을 수행해야합니다:

  1. 인스턴스 러너 생성 및 인증 토큰 획들르어야 합니다.
  2. 러너 등록 워크플로우의 등록 토큰을 인증 토큰으로 바꿉니다.

GitLab 17.0 이후 등록 토큰 사용

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

  • GitLab.com에서 GitLab 18.0까지 최상위 그룹 설정에서 레거시 러너 등록 프로세스를 수동으로 다시 활성화할 수 있습니다.
  • GitLab self-managed에서 GitLab 18.0까지 관리자 영역 설정에서 레거시 러너 등록 프로세스를 수동으로 다시 활성화할 수 있습니다.

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

기존 러너에 미치는 영향

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

gitlab-runner register 명령 구문의 변경

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

GitLab UI에서 러너를 생성할 때 이전에 gitlab-runner 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에서 러너를 생성하고 태그 목록, 잠긴 상태 및 액세스 수준과 같은 일부 속성을 지정합니다. GitLab 15.11 이후에는 이러한 속성은 러너 인증 토큰 및 glrt- 접두사와 함께 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"

참고: 시크릿 관리 솔루션이 runner-registration-token에 빈 문자열을 설정하는 것을 허용하지 않는 경우 아무 문자열이라도 설정할 수 있습니다. runner-token이 있는 경우에는 무시될 것입니다.

알려진 문제

Pod 이름이 러너 상세 페이지에 표시되지 않음

Helm 차트로 러너를 등록할 때 새로운 등록 워크플로를 사용하는 경우, 러너 상세 페이지에는 pod 이름이 표시되지 않습니다. 자세한 내용은 이슈 423523를 참조하십시오.

러너 인증 토큰이 로테이션될 때 업데이트되지 않음

GitLab Operator를 사용하여 러너를 등록할 때 새로운 등록 워크플로를 사용하는 경우, 사용자 정의 리소스 정의에서 참조하는 러너 인증 토큰은 토큰이 로테이션될 때 업데이트되지 않습니다. 이는 다음과 같은 경우 발생합니다: - 사용자 정의 리소스 정의에서 시크릿을 참조하는 러너 인증 토큰(glrt-로 시작)을 사용하는 경우 참조 문서에 설명된대로 - 러너 인증 토큰이 만료될 예정인 경우 러너 인증 토큰 만료에 대한 자세한 내용은 러너 인증 토큰 보안을 참조하십시오.

자세한 내용은 이슈 186를 참조하십시오.