튜토리얼: 러너 어드미션 컨트롤러 구축
튜토리얼: 러너 어드미션 컨트롤러 구축에 대해 설명합니다.
이 튜토리얼은 CI/CD 작업 실행에 대한 사용자 정의 정책을 적용하는 러너 어드미션 컨트롤러를 구축하는 방법을 안내합니다. 작업 라우터에 연결하고 이미지 허용 목록 정책을 구현하는 Go로 컨트롤러를 만들 것입니다. 이 튜토리얼의 코드 예제는 시작점으로 사용할 수 있는 완전한 참조 구현을 제공하는 runner-controller-example 저장소에서 가져온 것입니다. 이 튜토리얼을 마치면 다음과 같은 작동하는 어드미션 컨트롤러를 갖게 됩니다: gRPC를 사용하여 작업 라우터에 연결 GitLab에 자체 등록 작업 어드미션 요청 수신 사용자 정의 정책에 따라 작업 평가 어드미션 결정 반환 러너 어드미션 컨트롤러를 구축하려면: GitLab에서 러너 컨트롤러 만들기 러너 컨트롤러 범위 지정 러너 컨트롤러 토큰 만들기 Go 프로젝트 설정 protobuf 정의에서 클라이언트 코드 생성 인증 구현 에이전트 등록 구현 어드미션 루프 구현 어드미션 정책 구현 드라이 런 상태로 테스트 프로덕션에서 활성화 시작하기 전에 # 다음이 있어야 합니다: 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에서 러너 컨트롤러 만들기 # 러너 컨트롤러 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 를 다음 단계를 위해 저장합니다. 러너 컨트롤러 범위 지정 # 러너 컨트롤러는 어드미션 요청을 수신하기 위해 범위가 지정되어야 합니다. 범위가 없으면 컨트롤러가 활성화되더라도 비활성 상태로 유지됩니다. 이 튜토리얼에서는 인스턴스의 모든 러너에 컨트롤러 범위를 지정합니다
