InfoGrab DocsInfoGrab Docs

튜토리얼: 러너 어드미션 컨트롤러 빌드하기

CI/CD job 실행에 커스텀 정책을 적용하는 러너 어드미션 컨트롤러를 빌드하는 방법을 설명합니다.

이 튜토리얼에서는 CI/CD job 실행에 대한 커스텀 정책을 적용하는 러너 어드미션 컨트롤러를 빌드하는 과정을 안내합니다. job 라우터에 연결하고 이미지 허용 목록 정책을 구현하는 컨트롤러를 Go로 작성합니다. 이 튜토리얼의 코드 예시는 runner-controller-example 리포지터리를 기반으로 작성되었으며, 이 리포지터리는 시작점으로 사용할 수 있는 완전한 참조 구현을 제공합니다. 이 튜토리얼을 마치면 다음을 수행하는 동작하는 어드미션 컨트롤러를 갖추게 됩니다. gRPC를 사용해 job 라우터에 연결합니다 GitLab에 자신을 등록합니다 job 어드미션 요청을 수신합니다 커스텀 정책에 따라 job을 평가합니다 어드미션 결정을 반환합니다 러너 어드미션 컨트롤러를 빌드하려면 다음을 수행합니다. GitLab에서 러너 컨트롤러 생성하기 러너 컨트롤러 범위 지정하기 러너 컨트롤러 토큰 생성하기 Go 프로젝트 설정하기 protobuf 정의에서 클라이언트 코드 생성하기 인증 구현하기 에이전트 등록 구현하기 어드미션 루프 구현하기 어드미션 정책 구현하기 dry run 상태로 테스트하기 프로덕션에서 활성화하기 시작하기 전에 # 다음을 준비합니다. Ultimate 티어의 GitLab Self-Managed 또는 GitLab Dedicated GitLab 인스턴스에 대한 관리자 액세스 권한 GitLab API와 상호작용하기 위한 다음 중 하나: glab auth login 으로 인증된 GitLab CLI ( glab ) 1.85.0 이상 curl 또는 다른 HTTP 클라이언트 Go 1.21 이상 설치 Protobuf 코드 생성을 위한 buf CLI 설치 GitLab 인스턴스에서 활성화된 다음 기능 플래그: job_router job_router_admission_control FF_USE_JOB_ROUTER 환경 변수가 true 로 설정된 GitLab Runner 18.9 이상. GitLab에서 러너 컨트롤러 생성하기 # 러너 컨트롤러를 생성하려면 runner controllers API 를 사용합니다. 강제 적용을 활성화하기 전에 컨트롤러 동작을 검증하려면 dry_run 상태로 시작합니다. GitLab CLI curl glab runner-controller create --description "Image allowlist controller" --state dry_run curl --request POST \ --header "PRIVATE-TOKEN: <your_access_token>" \ --header "Content-Type: application/json" \ --data '{"description": "Image allowlist controller", "state": "dry_run"}' \ --url "https://gitlab.example.com/api/v4/runner_controllers" 다음 단계를 위해 반환된 id 를 저장합니다. 러너 컨트롤러 범위 지정하기 # 러너 컨트롤러는 어드미션 요청을 수신하