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