백업

Tier: Free, Premium, Ultimate Offering: Self-managed

Linux 패키지 설치에서의 백업 및 복원 구성

/etc/gitlab의 사본을 보관하는 것이 좋습니다. 적어도 /etc/gitlab/gitlab-secrets.json을 보관해야 합니다. GitLab 애플리케이션 백업을 복원해야 하는 경우 gitlab-secrets.json를 복원해야 합니다. 그렇지 않으면 GitLab 사용자 중 2단계 인증을 사용하는 사용자는 GitLab 서버에 대한 액세스 권한을 잃고 GitLab CI에 저장된 ‘보안 변수’도 잃게 됩니다.

구성 백업을 응용프로그램 데이터 백업과 동일한 위치에 저장하는 것은 권장되지 않습니다. 아래 내용을 참조하십시오.

Linux 패키지 설치의 모든 구성은 /etc/gitlab에 저장됩니다. 구성을 백업하려면 sudo gitlab-ctl backup-etc만 실행하면 됩니다(GitLab 12.3에서 소개됨). 이 명령은 /etc/gitlab/config_backup/에 tar 아카이브를 생성합니다. 디렉토리와 백업 파일은 root만 읽을 수 있습니다.

참고: sudo gitlab-ctl backup-etc --backup-path <DIRECTORY>를 실행하면 지정된 디렉토리에 백업이 저장됩니다. 디렉토리가 없는 경우 디렉토리가 생성됩니다. 절대 경로를 권장합니다.

매일 애플리케이션 백업을 만들려면 루트 사용자의 cron 테이블을 수정하세요.

sudo crontab -e -u root

크론 테이블이 에디터에 나타납니다.

/etc/gitlab/의 내용을 포함하는 tar 파일을 만들도록 명령을 입력하세요. 예를 들어 평일인 화요일(2일)부터 토요일(6일)까지 매일 아침에 백업을 예약하세요.

15 04 * * 2-6  gitlab-ctl backup-etc && cd /etc/gitlab/config_backup && cp $(ls -t | head -n1) /secret/gitlab/backups/

참고: /secret/gitlab/backups/가 존재하는지 확인하세요.

다음과 같이 tar 파일을 추출할 수 있습니다.

# 기존 /etc/gitlab의 이름을 변경합니다(있는 경우)
sudo mv /etc/gitlab /etc/gitlab.$(date +%s)
# 아래 예시 타임스탬프를 구성 백업용으로 변경하세요
sudo tar -xf gitlab_config_1487687824_2017_02_21.tar -C /

구성 백업을 복원한 후에는 sudo gitlab-ctl reconfigure를 실행하십시오.

참고: 마이그레이션으로부터 SSH 호스트 키가 /etc/ssh/에 별도의 위치에 저장됩니다. 전체 시스템 복원을 수행해야 하는 경우 중간자 공격 경고를 피하려면 해당 키도 백업하고 복원하십시오.

구성 백업의 보관 기간 제한(구식 백업 제거)

GitLab 구성 백업은 GitLab 애플리케이션 백업에 사용되는 backup_keep_time 설정을 사용하여 제거할 수 있습니다. 디렉토리 설정을 사용하도록 /etc/gitlab/gitlab.rb를 수정하세요:

   ## 백업 보관 기간을 7일로 제한 - 604800 초
   gitlab_rails['backup_keep_time'] = 604800

기본 backup_keep_time 설정은 0으로 설정되어 모든 GitLab 구성 및 애플리케이션 백업을 유지합니다.

한번 backup_keep_time이 설정되면, sudo gitlab-ctl backup-etc --delete-old-backups를 실행하여 현재 시간에서 backup_keep_time을 뺀 이전의 모든 백업을 삭제할 수 있습니다.

기존 백업을 모두 유지하려면 --no-delete-old-backups 매개변수를 제공할 수 있습니다.

경고: 매개변수가 제공되지 않은 경우 기본값은 --delete-old-backups로 현재 시간에서 backup_keep_time을 뺀 이전의 모든 백업을 삭제합니다. backup_keep_time이 0보다 큰 경우.

구성 백업을 응용프로그램 데이터와 분리

GitLab 애플리케이션 백업(Git 리포지토리, SQL 데이터)을 구성 백업인 /etc/gitlab과는 다른 위치에 저장하지 마십시오. gitlab-secrets.json 파일(그리고 아마도 gitlab.rb 파일도)에는 SQL 데이터베이스에서 민감한 데이터를 보호하는 데 필요한 데이터베이스 암호화 키가 포함되어 있습니다:

  • GitLab 2단계 인증(2FA) 사용자 시크릿(‘QR 코드’)
  • GitLab CI ‘보안 변수’

구성 백업을 응용프로그램 데이터 백업에서 분리하면 암호화된 애플리케이션 데이터가 함께 손실/유출/도난되는 가능성을 감소시킬 수 있습니다.

애플리케이션 백업 만들기

저장소와 GitLab 메타데이터를 백업하려면 백업 만들기 설명서를 참고하십시오.

백업 만들기는 /var/opt/gitlab/backups에 tar 파일을 저장합니다.

GitLab 백업을 다른 디렉토리에 저장하려면 /etc/gitlab/gitlab.rb에 다음 설정을 추가하고 sudo gitlab-ctl reconfigure를 실행하십시오:

gitlab_rails['backup_path'] = '/mnt/backups'

GitLab 인스턴스를 Docker 컨테이너에서 백업하는 방법

경고: Backup command는 PgBouncer를 사용하는 설치의 경우 추가 매개변수를 필요로 합니다. 이는 성능상의 이유나 Patroni 클러스터와 함께 사용하는 경우에 해당됩니다.

백업은 호스트에서 스케줄링할 수 있습니다. 이를 위해 명령어 앞에 docker exec -t <컨테이너 이름>을 추가하면 됩니다.

백업 응용 프로그램:

docker exec -t <컨테이너 이름> gitlab-backup

백업 구성 및 비밀:

docker exec -t <컨테이너 이름> /bin/sh -c 'gitlab-ctl backup-etc && cd /etc/gitlab/config_backup && cp $(ls -t | head -n1) /secret/gitlab/backups/'

참고: 이러한 백업을 컨테이너 외부에 지속시키려면 다음 디렉토리에 볼륨을 마운트하면 됩니다:

  1. /secret/gitlab/backups.
  2. 모든 응용 프로그램 데이터/var/opt/gitlab(백업 포함)을 위해.
  3. (옵션) /var/opt/gitlab/backups. gitlab-backup 도구는 기본적으로 이 디렉토리에 기록합니다. (응용 프로그램 백업 생성 참조) 이 디렉토리는 /var/opt/gitlab 내에 중첩되어 있지만, Docker는 이러한 마운트를 정렬하여 함께 작동할 수 있도록 합니다.

    이 구성을 통해 다음과 같은 것이 가능해집니다:

    • 레귤러 로컬 스토리지에 응용 프로그램 데이터(두 번째 마운트를 통해).
    • 네트워크 스토리지에 백업 볼륨(세 번째 마운트를 통해).

응용 프로그램 백업 복원

복원 문서를 참조하세요.

패키지되지 않은 데이터베이스를 사용한 백업 및 복원

패키지되지 않은 데이터베이스를 사용 중인 경우 패키지되지 않은 데이터베이스 사용에 대한 문서를 참조하세요.

원격(클라우드) 스토리지로 백업 업로드

자세한 내용은 백업 문서를 확인하세요.

백업 디렉토리 수동 관리

Linux 패키지 설치는 gitlab_rails['backup_path']로 설정된 백업 디렉토리를 만듭니다. 해당 디렉토리는 GitLab을 실행하는 사용자에 의해 소유되며 해당 사용자만 접근할 수 있도록 엄격한 권한이 설정되어 있습니다. 해당 디렉토리는 백업 아카이브를 보유하고 있으며 민감한 정보를 포함하고 있습니다. 일부 조직에서는 예를 들어 백업 아카이브를 오프사이트로 보내야 하는 등 특정한 이유로 권한이 달라져야 합니다.

백업 디렉토리 관리를 비활성화하려면 /etc/gitlab/gitlab.rb에서 다음을 설정하세요:

gitlab_rails['manage_backup_path'] = false

경고: 이 구성 옵션을 설정하는 경우, gitlab_rails['backup_path']에서 지정된 디렉토리를 직접 만들고, user['username']에서 지정된 사용자가 올바른 액세스 권한을 갖도록 설정해야 합니다. 그렇지 않으면 GitLab이 백업 아카이브를 만드는 것을 방해할 수 있습니다.