InfoGrab Docs

러너 컨트롤러

요약

이 기능의 가용성은 Feature flag로 제어됩니다. 러너 컨트롤러는 잡 라우터를 통해 라우팅되는 CI/CD 잡에 대한 승인 제어를 활성화합니다. 러너 컨트롤러는 인스턴스 레벨이며 범위 지정에 따라 잡에 적용됩니다.

Feature flag

이 기능의 가용성은 Feature flag로 제어됩니다. 자세한 내용은 기록을 참조하세요. 이 기능은 테스트용으로 사용 가능하지만 프로덕션 사용을 위한 준비가 되어 있지 않습니다.

히스토리

러너 컨트롤러는 잡 라우터를 통해 라우팅되는 CI/CD 잡에 대한 승인 제어를 활성화합니다. 잡이 실행되려고 할 때 잡 라우터는 연결된 러너 컨트롤러에 승인 요청을 보내고 커스텀 정책에 따라 잡을 승인하거나 거부할 수 있습니다.

러너 컨트롤러는 인스턴스 레벨이며 범위 지정에 따라 잡에 적용됩니다.

러너 컨트롤러를 사용하여:

  • 이미지 허용 목록, 리소스 할당량 또는 보안 요구 사항과 같은 커스텀 승인 정책을 시행합니다.
  • 용량 관리를 위한 잡 대기열 및 리소스 할당을 제어합니다.
  • 컴플라이언스 적용을 위해 실행 전에 잡이 조직 정책을 충족하는지 확인합니다.
  • 비용 제어를 위해 예산 또는 리소스 제한을 기반으로 잡 실행을 제한합니다.

승인 제어 워크플로우#

잡 라우터로 러너 컨트롤러를 구성하면 승인 제어 워크플로우는 다음과 같이 작동합니다:

  1. 러너 컨트롤러가 잡 라우터에 연결합니다.
  2. 컨트롤러가 자신을 등록하고 승인 요청 처리를 시작합니다.
  3. 잡이 승인이 필요할 때 잡 라우터는 연결된 컨트롤러에 잡 세부 정보를 보냅니다.
  4. 컨트롤러가 커스텀 정책에 대해 잡을 평가합니다.
  5. 컨트롤러가 승인 결정(이유와 함께 승인 또는 거부)을 보냅니다.
  6. 잡 라우터가 잡 실행을 진행하거나 거부를 보고합니다.

거부 이유 보기#

러너 컨트롤러가 잡을 거부하면 잡은 job_router_failure 실패 이유로 실패합니다. 잡 세부 정보 페이지에는 다음을 포함하는 메시지가 표시됩니다:

  • 잡 라우터 정보
  • 러너 컨트롤러 정보
  • 러너 컨트롤러가 제공한 거부 이유

러너 컨트롤러 거부 이유를 보여주는 잡 거부 메시지

드라이 런 모드 로깅#

러너 컨트롤러가 dry_run 상태인 경우 거부 결정은 적용되지 않지만 잡 라우터(KAS) 백엔드 로그에 정보 메시지로 기록됩니다. 이 로그를 사용하여 적용을 활성화하기 전에 컨트롤러의 동작을 유효성 검사합니다.

러너 컨트롤러 상태#

러너 컨트롤러는 세 가지 상태 중 하나일 수 있습니다:

상태 설명
disabled 러너 컨트롤러가 승인 요청을 받지 않습니다. 기본 상태입니다.
enabled 러너 컨트롤러가 승인 요청을 받고 그 결정이 잡 실행에 영향을 미칩니다.
dry_run 러너 컨트롤러가 승인 요청을 받습니다. 잡 라우터가 결정을 로그에 기록하지만 결정이 적용되지 않습니다. 이 상태를 사용하여 전략적 롤아웃을 위해 컨트롤러 동작을 유효성 검사하고 적용을 활성화하기 전에 배포 위험을 낮춥니다.

범위 지정#

러너 컨트롤러는 활성화되려면 범위가 지정되어야 합니다. 범위가 없는 러너 컨트롤러는 enabled 또는 dry_run 상태인 경우에도 승인 요청을 받지 않습니다.

러너 컨트롤러는 두 가지 상호 배타적인 범위 유형을 지원합니다:

범위 설명
인스턴스 러너 컨트롤러가 GitLab 인스턴스의 모든 러너에 대한 잡을 평가합니다. 이 범위는 러너 범위와 결합할 수 없습니다.
러너 러너 컨트롤러가 특정 러너에 대한 잡만 평가합니다. 컨트롤러를 하나 이상의 러너로 범위를 지정할 수 있습니다. 러너는 인스턴스 러너여야 합니다.

추가 범위 유형(그룹, 프로젝트)이 이슈 586419에서 제안되었습니다.

러너 컨트롤러 범위 지정을 관리하려면 러너 컨트롤러 API를 참조하세요.

러너 컨트롤러 관리#

러너 컨트롤러는 REST API를 통해 관리됩니다. 아직 러너 컨트롤러를 관리하는 UI가 없습니다.

사전 조건:

  • GitLab 인스턴스에 대한 관리자 액세스 권한이 있어야 합니다.

러너 컨트롤러 구현#

단계별 가이드는 튜토리얼: 러너 승인 컨트롤러 빌드를 참조하세요.

자체 러너 컨트롤러를 구현하려면 다음을 수행해야 합니다:

  1. GitLab에서 러너 컨트롤러를 만듭니다.
  2. 러너 컨트롤러의 범위를 지정합니다.
  3. 러너 컨트롤러 토큰을 얻습니다.
  4. 토큰으로 잡 라우터에 연결합니다.
  5. 잡 라우터에 컨트롤러를 등록합니다.
  6. 승인 요청을 처리하고 결정을 보냅니다.

기술 사양 및 protobuf 정의는 GitLab Agent for Kubernetes 저장소의 러너 컨트롤러 문서를 참조하세요.

관련 항목#

러너 컨트롤러

Tier: Ultimate
Offering: GitLab Self-Managed, GitLab Dedicated
원문 보기
요약

이 기능의 가용성은 Feature flag로 제어됩니다. 러너 컨트롤러는 잡 라우터를 통해 라우팅되는 CI/CD 잡에 대한 승인 제어를 활성화합니다. 러너 컨트롤러는 인스턴스 레벨이며 범위 지정에 따라 잡에 적용됩니다.

Feature flag

이 기능의 가용성은 Feature flag로 제어됩니다. 자세한 내용은 기록을 참조하세요. 이 기능은 테스트용으로 사용 가능하지만 프로덕션 사용을 위한 준비가 되어 있지 않습니다.

히스토리

러너 컨트롤러는 잡 라우터를 통해 라우팅되는 CI/CD 잡에 대한 승인 제어를 활성화합니다. 잡이 실행되려고 할 때 잡 라우터는 연결된 러너 컨트롤러에 승인 요청을 보내고 커스텀 정책에 따라 잡을 승인하거나 거부할 수 있습니다.

러너 컨트롤러는 인스턴스 레벨이며 범위 지정에 따라 잡에 적용됩니다.

러너 컨트롤러를 사용하여:

  • 이미지 허용 목록, 리소스 할당량 또는 보안 요구 사항과 같은 커스텀 승인 정책을 시행합니다.
  • 용량 관리를 위한 잡 대기열 및 리소스 할당을 제어합니다.
  • 컴플라이언스 적용을 위해 실행 전에 잡이 조직 정책을 충족하는지 확인합니다.
  • 비용 제어를 위해 예산 또는 리소스 제한을 기반으로 잡 실행을 제한합니다.

승인 제어 워크플로우#

잡 라우터로 러너 컨트롤러를 구성하면 승인 제어 워크플로우는 다음과 같이 작동합니다:

  1. 러너 컨트롤러가 잡 라우터에 연결합니다.
  2. 컨트롤러가 자신을 등록하고 승인 요청 처리를 시작합니다.
  3. 잡이 승인이 필요할 때 잡 라우터는 연결된 컨트롤러에 잡 세부 정보를 보냅니다.
  4. 컨트롤러가 커스텀 정책에 대해 잡을 평가합니다.
  5. 컨트롤러가 승인 결정(이유와 함께 승인 또는 거부)을 보냅니다.
  6. 잡 라우터가 잡 실행을 진행하거나 거부를 보고합니다.

거부 이유 보기#

러너 컨트롤러가 잡을 거부하면 잡은 job_router_failure 실패 이유로 실패합니다. 잡 세부 정보 페이지에는 다음을 포함하는 메시지가 표시됩니다:

  • 잡 라우터 정보
  • 러너 컨트롤러 정보
  • 러너 컨트롤러가 제공한 거부 이유

러너 컨트롤러 거부 이유를 보여주는 잡 거부 메시지

드라이 런 모드 로깅#

러너 컨트롤러가 dry_run 상태인 경우 거부 결정은 적용되지 않지만 잡 라우터(KAS) 백엔드 로그에 정보 메시지로 기록됩니다. 이 로그를 사용하여 적용을 활성화하기 전에 컨트롤러의 동작을 유효성 검사합니다.

러너 컨트롤러 상태#

러너 컨트롤러는 세 가지 상태 중 하나일 수 있습니다:

상태 설명
disabled 러너 컨트롤러가 승인 요청을 받지 않습니다. 기본 상태입니다.
enabled 러너 컨트롤러가 승인 요청을 받고 그 결정이 잡 실행에 영향을 미칩니다.
dry_run 러너 컨트롤러가 승인 요청을 받습니다. 잡 라우터가 결정을 로그에 기록하지만 결정이 적용되지 않습니다. 이 상태를 사용하여 전략적 롤아웃을 위해 컨트롤러 동작을 유효성 검사하고 적용을 활성화하기 전에 배포 위험을 낮춥니다.

범위 지정#

러너 컨트롤러는 활성화되려면 범위가 지정되어야 합니다. 범위가 없는 러너 컨트롤러는 enabled 또는 dry_run 상태인 경우에도 승인 요청을 받지 않습니다.

러너 컨트롤러는 두 가지 상호 배타적인 범위 유형을 지원합니다:

범위 설명
인스턴스 러너 컨트롤러가 GitLab 인스턴스의 모든 러너에 대한 잡을 평가합니다. 이 범위는 러너 범위와 결합할 수 없습니다.
러너 러너 컨트롤러가 특정 러너에 대한 잡만 평가합니다. 컨트롤러를 하나 이상의 러너로 범위를 지정할 수 있습니다. 러너는 인스턴스 러너여야 합니다.

추가 범위 유형(그룹, 프로젝트)이 이슈 586419에서 제안되었습니다.

러너 컨트롤러 범위 지정을 관리하려면 러너 컨트롤러 API를 참조하세요.

러너 컨트롤러 관리#

러너 컨트롤러는 REST API를 통해 관리됩니다. 아직 러너 컨트롤러를 관리하는 UI가 없습니다.

사전 조건:

  • GitLab 인스턴스에 대한 관리자 액세스 권한이 있어야 합니다.

러너 컨트롤러 구현#

단계별 가이드는 튜토리얼: 러너 승인 컨트롤러 빌드를 참조하세요.

자체 러너 컨트롤러를 구현하려면 다음을 수행해야 합니다:

  1. GitLab에서 러너 컨트롤러를 만듭니다.
  2. 러너 컨트롤러의 범위를 지정합니다.
  3. 러너 컨트롤러 토큰을 얻습니다.
  4. 토큰으로 잡 라우터에 연결합니다.
  5. 잡 라우터에 컨트롤러를 등록합니다.
  6. 승인 요청을 처리하고 결정을 보냅니다.

기술 사양 및 protobuf 정의는 GitLab Agent for Kubernetes 저장소의 러너 컨트롤러 문서를 참조하세요.

관련 항목#