대화형 웹 터미널
대화형 웹 터미널 (Interactive web terminals)
대화형 웹 터미널은 CI 파이프라인을 위해 일회성 명령을 실행할 수 있는 터미널을 GitLab에서 사용자에게 제공해요. SSH로 디버깅하는 방법처럼 생각하면 되는데, 잡 페이지에서 바로 실행할 수 있다는 점이 달라요. 이 기능은 GitLab Runner가 배포된 환경에 사용자에게 셸 액세스를 주는 것이므로, 사용자를 보호하기 위한 보안 조치가 취해져 있어요.
GitLab.com의 인스턴스 러너는 대화형 웹 터미널을 제공하지 않아요. 지원 추가 진행 상황은 이 이슈를 따라가세요. GitLab.com에 호스팅된 그룹·프로젝트에서는 자체 그룹 또는 프로젝트 러너를 사용할 때 대화형 웹 터미널을 사용할 수 있어요.
출처: 문서
본문
구성 (Configuration)
대화형 웹 터미널이 동작하려면 두 가지를 구성해야 해요:
- 러너에
[session_server]를 올바르게 구성해야 해요 - GitLab 인스턴스와 함께 리버스 프록시를 사용한다면 웹 터미널을 활성화해야 해요
Helm 차트 부분 지원
대화형 웹 터미널은 gitlab-runner Helm 차트에서 부분적으로 지원돼요. 다음 조건에서 활성화돼요:
- replica 수가 하나일 때
loadBalancer서비스를 사용할 때
이런 제한을 해결하는 지원은 다음 이슈에서 추적되고 있어요:
실행 중인 잡 디버깅하기
모든 executor가 지원되는 것은 아니에요.
dockerexecutor는 빌드 스크립트가 끝난 후에도 계속 실행되지 않아요. 그 시점에 터미널은 자동으로 연결을 끊고 사용자가 끝내기를 기다리지 않아요. 이 동작 개선 진행 상황은 이 이슈를 따라가세요.
전제 조건:
- 프로젝트에 대해 Developer, Maintainer 또는 Owner 역할이 있어야 하거나, 인스턴스에 관리자 액세스 권한이 있어야 해요.
- 관리자가 아니라면 잡을 직접 시작했어야 해요.
- 인스턴스에 Admin Mode가 켜져 있다면 관리자는 세션에서 Admin Mode를 켜야 해요.
- 잡이 보호 브랜치(protected branch)에서 실행됐다면 해당 브랜치에 push 또는 merge할 수 있어야 해요. 잡이 보호 태그(protected tag)에서 실행됐다면 해당 태그를 만들 수 있어야 해요. 자세한 내용은 CI/CD 권한을 참고하세요.
가끔 잡이 실행되는 동안 예상대로 되지 않을 때가 있어요. 이럴 때 디버깅을 돕는 셸이 있다면 유용하겠죠. 잡이 실행되면 오른쪽 패널에 현재 잡의 터미널을 여는 debug 버튼 ( external-link )이 표시돼요. 잡을 시작한 사람만 그 잡을 디버깅할 수 있어요. 관리자는 자신이 시작하지 않은 잡도 디버깅할 수 있어요.
선택하면 터미널 페이지로 새 탭이 열리고, 표준 셸처럼 명령을 입력할 수 있어요.
잡이 완료된 후에도 터미널이 열려 있으면, 구성된 [session_server].session_timeout 시간이 지날 때까지 잡이 끝나지 않아요. 이를 피하려면 잡이 끝난 뒤 터미널을 닫으면 돼요.
더 알아보기
다음으로는 GitLab Runner의 [session_server] 고급 설정을 자세히 보고, Runbook / 터미널 보안 문서를 읽으면 터미널을 안전하게 운영하는 방법을 익힐 수 있어요.


