InfoGrab DocsInfoGrab Docs

GitLab을 읽기 전용 상태로 전환

요약

GitLab을 읽기 전용 상태로 두는 권장 방법은 유지 관리 모드를 활성화하는 것입니다. 경우에 따라 GitLab을 읽기 전용 상태로 두어야 할 수 있습니다. 가장 먼저 해야 할 일은 리포지터리가 변경되지 않도록 막는 것입니다.

Note

GitLab을 읽기 전용 상태로 두는 권장 방법은 유지 관리 모드를 활성화하는 것입니다.

경우에 따라 GitLab을 읽기 전용 상태로 두어야 할 수 있습니다. 이때 필요한 구성은 원하는 결과에 따라 달라집니다.

리포지터리를 읽기 전용으로 만들기#

가장 먼저 해야 할 일은 리포지터리가 변경되지 않도록 막는 것입니다. 다음 두 가지 방법 중 하나를 사용할 수 있습니다.

  • Puma를 중지하여 내부 API에 접근할 수 없게 합니다.

    sudo gitlab-ctl stop puma
    
  • 또는 Rails 콘솔을 엽니다.

    sudo gitlab-rails console
    

    그런 다음 모든 프로젝트의 리포지터리를 읽기 전용으로 설정합니다.

    Project.all.find_each { |project| project.update!(repository_read_only: true) }
    

    일부 리포지터리만 읽기 전용으로 설정하려면 다음을 실행합니다.

    # List of project IDs of projects to set to read-only.
    projects = [1,2,3]
    
    projects.each do |p|
     project =  Project.find p
     project.update!(repository_read_only: true)
     rescue ActiveRecord::RecordNotFound
     puts "Project ID #{p} not found"
    
    end
    

    이 설정을 되돌릴 때는 해당 프로젝트의 repository_read_only를 false로 변경합니다. 예를 들어 다음을 실행합니다.

    Project.all.find_each { |project| project.update!(repository_read_only: false) }
    

GitLab UI 종료#

GitLab UI를 종료해도 괜찮다면 가장 간단한 방법은 sidekiq와 puma를 중지하는 것이며, 이렇게 하면 GitLab 이 변경되지 않도록 확실히 막을 수 있습니다.

sudo gitlab-ctl stop sidekiq
sudo gitlab-ctl stop puma

이 설정을 되돌릴 때는 다음을 실행합니다.

sudo gitlab-ctl start sidekiq
sudo gitlab-ctl start puma

데이터베이스를 읽기 전용으로 만들기#

사용자가 GitLab UI를 계속 사용할 수 있게 하려면 데이터베이스를 읽기 전용으로 설정합니다.

  1. 예상과 다르게 진행될 경우에 대비하여 GitLab 백업을 수행합니다.

  2. 관리자 사용자로 콘솔에서 PostgreSQL에 접속합니다.

    sudo \
        -u gitlab-psql /opt/gitlab/embedded/bin/psql \
        -h /var/opt/gitlab/postgresql gitlabhq_production
    
  3. gitlab_read_only 사용자를 생성합니다. 비밀번호는 mypassword로 설정되어 있으며, 원하는 값으로 변경합니다.

    -- NOTE: Use the password defined earlier
    CREATE USER gitlab_read_only WITH password 'mypassword';
    GRANT CONNECT ON DATABASE gitlabhq_production to gitlab_read_only;
    GRANT USAGE ON SCHEMA public TO gitlab_read_only;
    GRANT SELECT ON ALL TABLES IN SCHEMA public TO gitlab_read_only;
    GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO gitlab_read_only;
    
    -- Tables created by "gitlab" should be made read-only for "gitlab_read_only"
    -- automatically.
    ALTER DEFAULT PRIVILEGES FOR USER gitlab IN SCHEMA public GRANT SELECT ON TABLES TO gitlab_read_only;
    ALTER DEFAULT PRIVILEGES FOR USER gitlab IN SCHEMA public GRANT SELECT ON SEQUENCES TO gitlab_read_only;
    
  4. gitlab_read_only 사용자의 해시된 비밀번호를 확인한 다음 결과를 복사합니다.

    sudo gitlab-ctl pg-password-md5 gitlab_read_only
    
  5. /etc/gitlab/gitlab.rb를 편집하여 이전 단계에서 확인한 비밀번호를 추가합니다.

    postgresql['sql_user_password'] = 'a2e20f823772650f039284619ab6f239'
    postgresql['sql_user'] = "gitlab_read_only"
    
  6. GitLab을 재구성하고 PostgreSQL을 재시작합니다.

    sudo gitlab-ctl reconfigure
    sudo gitlab-ctl restart postgresql
    

읽기 전용 상태를 되돌릴 준비가 되면 /etc/gitlab/gitlab.rb에 추가한 줄을 제거한 다음 GitLab을 재구성하고 PostgreSQL을 재시작합니다.

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart postgresql

모든 기능이 정상 동작하는지 확인한 다음 데이터베이스에서 gitlab_read_only 사용자를 제거합니다.

GitLab을 읽기 전용 상태로 전환

GitLab v19.5
Tier: Free, Premium, Ultimate
Offering: GitLab Self-Managed
원문 보기

요약

GitLab을 읽기 전용 상태로 두는 권장 방법은 유지 관리 모드를 활성화하는 것입니다. 경우에 따라 GitLab을 읽기 전용 상태로 두어야 할 수 있습니다. 가장 먼저 해야 할 일은 리포지터리가 변경되지 않도록 막는 것입니다.

Note

GitLab을 읽기 전용 상태로 두는 권장 방법은 유지 관리 모드를 활성화하는 것입니다.

경우에 따라 GitLab을 읽기 전용 상태로 두어야 할 수 있습니다. 이때 필요한 구성은 원하는 결과에 따라 달라집니다.

리포지터리를 읽기 전용으로 만들기#

가장 먼저 해야 할 일은 리포지터리가 변경되지 않도록 막는 것입니다. 다음 두 가지 방법 중 하나를 사용할 수 있습니다.

  • Puma를 중지하여 내부 API에 접근할 수 없게 합니다.

    sudo gitlab-ctl stop puma
    
  • 또는 Rails 콘솔을 엽니다.

    sudo gitlab-rails console
    

    그런 다음 모든 프로젝트의 리포지터리를 읽기 전용으로 설정합니다.

    Project.all.find_each { |project| project.update!(repository_read_only: true) }
    

    일부 리포지터리만 읽기 전용으로 설정하려면 다음을 실행합니다.

    # List of project IDs of projects to set to read-only.
    projects = [1,2,3]
    
    projects.each do |p|
     project =  Project.find p
     project.update!(repository_read_only: true)
     rescue ActiveRecord::RecordNotFound
     puts "Project ID #{p} not found"
    
    end
    

    이 설정을 되돌릴 때는 해당 프로젝트의 repository_read_only를 false로 변경합니다. 예를 들어 다음을 실행합니다.

    Project.all.find_each { |project| project.update!(repository_read_only: false) }
    

GitLab UI 종료#

GitLab UI를 종료해도 괜찮다면 가장 간단한 방법은 sidekiq와 puma를 중지하는 것이며, 이렇게 하면 GitLab 이 변경되지 않도록 확실히 막을 수 있습니다.

sudo gitlab-ctl stop sidekiq
sudo gitlab-ctl stop puma

이 설정을 되돌릴 때는 다음을 실행합니다.

sudo gitlab-ctl start sidekiq
sudo gitlab-ctl start puma

데이터베이스를 읽기 전용으로 만들기#

사용자가 GitLab UI를 계속 사용할 수 있게 하려면 데이터베이스를 읽기 전용으로 설정합니다.

  1. 예상과 다르게 진행될 경우에 대비하여 GitLab 백업을 수행합니다.

  2. 관리자 사용자로 콘솔에서 PostgreSQL에 접속합니다.

    sudo \
        -u gitlab-psql /opt/gitlab/embedded/bin/psql \
        -h /var/opt/gitlab/postgresql gitlabhq_production
    
  3. gitlab_read_only 사용자를 생성합니다. 비밀번호는 mypassword로 설정되어 있으며, 원하는 값으로 변경합니다.

    -- NOTE: Use the password defined earlier
    CREATE USER gitlab_read_only WITH password 'mypassword';
    GRANT CONNECT ON DATABASE gitlabhq_production to gitlab_read_only;
    GRANT USAGE ON SCHEMA public TO gitlab_read_only;
    GRANT SELECT ON ALL TABLES IN SCHEMA public TO gitlab_read_only;
    GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO gitlab_read_only;
    
    -- Tables created by "gitlab" should be made read-only for "gitlab_read_only"
    -- automatically.
    ALTER DEFAULT PRIVILEGES FOR USER gitlab IN SCHEMA public GRANT SELECT ON TABLES TO gitlab_read_only;
    ALTER DEFAULT PRIVILEGES FOR USER gitlab IN SCHEMA public GRANT SELECT ON SEQUENCES TO gitlab_read_only;
    
  4. gitlab_read_only 사용자의 해시된 비밀번호를 확인한 다음 결과를 복사합니다.

    sudo gitlab-ctl pg-password-md5 gitlab_read_only
    
  5. /etc/gitlab/gitlab.rb를 편집하여 이전 단계에서 확인한 비밀번호를 추가합니다.

    postgresql['sql_user_password'] = 'a2e20f823772650f039284619ab6f239'
    postgresql['sql_user'] = "gitlab_read_only"
    
  6. GitLab을 재구성하고 PostgreSQL을 재시작합니다.

    sudo gitlab-ctl reconfigure
    sudo gitlab-ctl restart postgresql
    

읽기 전용 상태를 되돌릴 준비가 되면 /etc/gitlab/gitlab.rb에 추가한 줄을 제거한 다음 GitLab을 재구성하고 PostgreSQL을 재시작합니다.

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart postgresql

모든 기능이 정상 동작하는지 확인한 다음 데이터베이스에서 gitlab_read_only 사용자를 제거합니다.