GitLab을 읽기 전용 상태로 전환
Offering: GitLab Self-Managed
GitLab을 읽기 전용 상태로 전환하는 권장 방법은 유지 관리 모드를 활성화하는 것입니다. 경우에 따라 GitLab을 읽기 전용 상태로 전환해야 할 수 있습니다. 먼저 리포지터리에 변경 사항이 적용될 수 없도록 해야 합니다.
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) }리포지터리의 일부만 읽기 전용으로 설정하려면 다음을 실행합니다:
# 읽기 전용으로 설정할 프로젝트의 프로젝트 ID 목록. 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를 사용할 수 있도록 허용하려면 데이터베이스가 읽기 전용인지 확인합니다:
-
예상대로 진행되지 않을 경우를 대비하여 GitLab 백업을 수행합니다.
-
관리자 사용자로 콘솔에서 PostgreSQL을 시작합니다:
sudo \ -u gitlab-psql /opt/gitlab/embedded/bin/psql \ -h /var/opt/gitlab/postgresql gitlabhq_production -
gitlab_read_only사용자를 만듭니다. 비밀번호는mypassword로 설정되어 있으며, 원하는 대로 변경합니다:-- 참고: 앞서 정의한 비밀번호를 사용하세요 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; -- "gitlab"이 생성한 테이블은 "gitlab_read_only"에 대해 자동으로 읽기 전용으로 설정되어야 합니다. 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; -
gitlab_read_only사용자의 해시된 비밀번호를 가져와 결과를 복사합니다:sudo gitlab-ctl pg-password-md5 gitlab_read_only -
/etc/gitlab/gitlab.rb를 편집하고 이전 단계의 비밀번호를 추가합니다:postgresql['sql_user_password'] = 'a2e20f823772650f039284619ab6f239' postgresql['sql_user'] = "gitlab_read_only" -
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 사용자를 제거합니다.
