GitLab 유지 관리 모드의 내부 동작 방식
GitLab v19.1GitLab 유지 관리 모드는 Rails 애플리케이션 내의 몇 가지 핵심 위치에서 애플리케이션 레벨의 HTTP 및 SSH 요청에 의한 쓰기만을 차단합니다. 읽기 전용 데이터베이스 메서드: 데이터베이스에 쓰기가 허용되지 않을 때 특수 동작을 전환합니다.
유지 관리 모드는 어디에서 적용되나요?#
GitLab 유지 관리 모드는 Rails 애플리케이션 내의 몇 가지 핵심 위치에서 애플리케이션 레벨의 HTTP 및 SSH 요청에 의한 쓰기만을 차단합니다.
코드베이스에서 maintenance_mode?를 검색하세요.
-
읽기 전용 데이터베이스 메서드: 데이터베이스에 쓰기가 허용되지 않을 때 특수 동작을 전환합니다. GET 요청에서 쓰기가 발생할 수 있는 위치에 이 메서드를 사용합니다. 코드베이스에서
Gitlab::Database.read_only?를 검색하세요. -
읽기 전용 미들웨어: 명시적으로 허용된 경우(예: GET 요청)를 제외하고 데이터베이스 쓰기를 유발하는 HTTP 요청이 차단됩니다.
-
SSH를 통한 Git 푸시 접근 거부:
gitlab-shell이/internal/allowed에 POST 요청을 보내 접근 허용 여부를 확인할 때 401을 반환하여 거부됩니다. -
컨테이너 레지스트리 인증 서비스: 컨테이너 레지스트리에 대한 업데이트가 차단됩니다.
데이터베이스 자체는 읽기 전용 모드가 아니며(Geo 보조 사이트 제외), 차단된 소스 이외의 소스에서 쓰기가 가능합니다.