GitLab Silent Mode

Tier: Free, Premium, Ultimate
Offering: 자체 호스팅
  • GitLab 15.11에서 소개되었습니다. 이 기능은 실험으로 시작되었습니다.
  • 웹 UI를 통한 Silent Mode의 활성화 및 비활성화는 GitLab 16.4에서 도입되었습니다.
  • Silent Mode는 GitLab 16.6에서 일반적으로 사용 가능한 상태로 업데이트되었습니다.

Silent Mode을 사용하면 GitLab에서의 이메일과 같은 외부 통신을 차단할 수 있습니다. Silent Mode은 사용 중인 환경에서 사용할 목적으로는 설정되어 있지 않습니다. 다음과 같은 두 가지 사용 사례가 있습니다:

  • Geo 사이트 프로모션 유효성 검사. 재해 복구 솔루션의 일부로 보조 Geo 사이트를 갖고 있습니다. 일반적인 사례로서 재해 복구 계획이 실제로 작동하는지 확인하기 위해 주기적으로 주 사이트로 승격하는 테스트를 진행하고 싶습니다. 하지만 실제로 전체 재해 복구를 수행하고 싶지는 않습니다. 또한 주 사이트는 사용자에게 가장 낮은 레이턴시를 제공하는 지역에 존재하기 때문에 정기적인 테스트 중에 다운타임을 갖고 싶지 않습니다. 따라서 보조 사이트를 승격하는 동안 주요하게 Silent Mode를 활성화하여 이 문제를 피할 수 있습니다.
  • GitLab 백업의 유효성 검사. 백업이 성공적으로 복원되는지 테스트하기 위해 테스트 인스턴스를 설정했습니다. 복원의 일환으로 예를 들어 Silent Mode를 활성화하여 사용자에게 잘못된 이메일을 보내지 않도록 할 수 있습니다.

Silent Mode 활성화

사전 조건:
- 관리자 액세스해야 합니다.

Silent Mode을 활성화하는 다양한 방법이 있습니다:

  • 웹 UI

    1. 왼쪽 사이드 바에서 아래쪽에 관리 영역을 선택합니다.
    2. 왼쪽 사이드 바에서 설정 > 일반을 선택합니다.
    3. Silent Mode를 확장하고 Silent Mode 활성화를 토글합니다.
    4. 변경 사항은 즉시 저장됩니다.
  • API:

    curl --request PUT --header "PRIVATE-TOKEN:$ADMIN_TOKEN" "<gitlab-url>/api/v4/application/settings?silent_mode_enabled=true"
    
  • Rails console:

    ::Gitlab::CurrentSettings.update!(silent_mode_enabled: true)
    

이 설정이 적용되기까지 최대 1분이 소요될 수 있습니다. Issue 405433는 이 지연 시간을 제거하는 것을 제안합니다.

Silent Mode 비활성화

사전 조건:
- 관리자 액세스해야 합니다.

Silent Mode을 비활성화하는 다양한 방법이 있습니다:

  • 웹 UI

    1. 왼쪽 사이드 바에서 아래쪽에 관리 영역을 선택합니다.
    2. 왼쪽 사이드 바에서 설정 > 일반을 선택합니다.
    3. Silent Mode를 확장하고 Silent Mode 활성화를 토글합니다.
    4. 변경 사항은 즉시 저장됩니다.
  • API:

    curl --request PUT --header "PRIVATE-TOKEN:$ADMIN_TOKEN" "<gitlab-url>/api/v4/application/settings?silent_mode_enabled=false"
    
  • Rails console:

    ::Gitlab::CurrentSettings.update!(silent_mode_enabled: false)
    

이 설정이 적용되기까지 최대 1분이 소요될 수 있습니다. Issue 405433는 이 지연 시간을 제거하는 것을 제안합니다.

Silent Mode에서의 GitLab 기능 동작

이 섹션은 Silent Mode가 활성화된 경우 GitLab의 현재 동작을 문서화합니다. Silent Mode의 첫 번째 이터레이션 작업은 이슈 9826에서 추적됩니다.

Silent Mode가 활성화된 경우, 모든 사용자를 대상으로 페이지의 맨 위에 설정이 활성화되었으며 모든 외부 통신이 차단됨.이라는 배너가 표시됩니다.

차단된 외부 통신

다음 기능의 외부 통신은 Silent Mode에 의해 차단됩니다.

기능 참고 사항
프로젝트 및 그룹 웹훅 UI를 통한 웹훅 테스트의 트리거는 HTTP 상태 500 응답으로 결과가 반환됩니다.
시스템 후크  
원격 미러 원격 미러로의 푸시는 건너뛰어집니다. 원격 미러로부터의 풀도 건너뛰어집니다.
실행 가능한 통합 통합이 실행되지 않습니다.
서비스 데스크 수신된 이메일은 여전히 이슈를 일으키지만 Service Desk로 이메일을 보낸 사용자는 이슈 생성 또는 이슈에 대한 코멘트 알림을 받지 못합니다.
외부 이메일  
외부 HTTP 요청 특별히 차단되거나 건너뛰어질 지 정의되지 않는 많은 HTTP 요청이 차단됩니다. 이러한 경우 에러가 발생할 수 있습니다. Silent Mode에서의 테스트 중 특정 에러가 문제가 된다면 GitLab 지원팀에 문의하십시오.

차단되지 않은 외부 통신

다음 기능의 외부 통신은 Silent Mode에 의해 차단되지 않습니다.

기능 참고 사항
의존성 프록시 캐시되지 않은 이미지를 가져오는 경우 일반적으로 소스에서 가져옵니다. 풀 레이트 한도를 고려하십시오.
파일 후크  
서버 후크  
고급 검색 두 GitLab 인스턴스가 동일한 고급 검색 인스턴스를 사용하는 경우 둘 다 검색 데이터를 수정할 수 있습니다. 이는 예를 들어 보조 Geo 사이트를 승격한 후 주요 Geo 사이트가 살아 있는 경우 발생할 수 있는 스플릿 브레인 시나리오입니다.
스노우플로우 이 요청들을 차단하는 제안이 있습니다.
사용되지 않는 Kubernetes 연결 이 요청들을 차단하는 제안이 있습니다.
컨테이너 레지스트리 웹훅 이 요청들을 차단하는 제안이 있습니다.