- Linux 패키지 설치에서의 백업 및 복원 구성
- 애플리케이션 백업 생성
- 도커 컨테이너에서 GitLab 인스턴스를 위한 백업 생성
- 응용 프로그램 백업 복원
- 패키지되지 않은 데이터베이스를 사용한 백업 및 복원
- 원격(클라우드) 저장소에 백업 업로드
- 백업 디렉터리 수동 관리
백업
Linux 패키지 설치에서의 백업 및 복원 구성
/etc/gitlab
의 사본을 보관하는 것이 좋습니다. 적어도 /etc/gitlab/gitlab-secrets.json
의 사본을 안전한 곳에 보관하는 것이 좋습니다. 만약 GitLab 애플리케이션 백업을 복원해야 하는 경우에는 gitlab-secrets.json
도 복원해야 합니다. 그렇게 하지 않으면 이중 인증을 사용하는 GitLab 사용자들은 GitLab 서버에 대한 액세스 권한을 잃게 되며 GitLab CI에 저장된 ‘보안 변수’도 손실됩니다.
구성 백업을 애플리케이션 데이터 백업과 동일한 위치에 저장하는 것은 권장되지 않습니다. 아래 내용을 참조하세요.
Linux 패키지 설치를 위한 모든 구성은 /etc/gitlab
에 저장됩니다. 구성을 백업하려면 sudo gitlab-ctl backup-etc
을 실행하기만 하면 됩니다. 이 명령은 /etc/gitlab/config_backup/
에 tar 아카이브를 생성합니다. 디렉토리 및 백업 파일은 root만 읽을 수 있습니다.
참고:
sudo gitlab-ctl backup-etc --backup-path <DIRECTORY>
를 실행하면 지정된 디렉터리에 백업이 저장됩니다. 디렉터리가 존재하지 않으면 생성됩니다. 절대 경로를 권장합니다.
매일 애플리케이션 백업을 생성하려면 root 사용자의 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
이 설정되면 현재 시간에서 backup_keep_time
을 뺀 것보다 오래된 모든 백업을 제거하려면 sudo gitlab-ctl backup-etc --delete-old-backups
를 실행할 수 있습니다.
이미 있는 모든 백업을 유지하려면 --no-delete-old-backups
매개변수를 제공할 수 있습니다.
경고:
매개변수를 제공하지 않으면 기본값 --delete-old-backups
이고 backup_keep_time
이 0보다 크면 현재 시간에서 backup_keep_time
을 뺀 것보다 오래된 모든 백업이 삭제됩니다.
애플리케이션 데이터와 구성 백업을 분리
GitLab 애플리케이션 백업(Git 저장소, SQL 데이터)을 구성 백업(/etc/gitlab
)과 동일한 위치에 저장하지 마세요. gitlab-secrets.json
파일(그리고 가능한 경우 gitlab.rb
파일)에는 SQL 데이터베이스의 민감한 데이터를 보호하는 데이터베이스 암호화 키가 포함되어 있습니다.
- GitLab 이중 인증(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 인스턴스를 위한 백업 생성
경고: 추가 매개변수가 필요합니다. Pgbouncer를 사용하거나 성능 이유 또는 Patroni 클러스터와 함께 사용하는 경우 백업 명령에는 추가 매개변수가 필요합니다.
호스트에서 백업을 예약하려면 명령 앞에 docker exec -t <your container name>
을 추가하세요.
애플리케이션 백업:
docker exec -t <your container name> gitlab-backup
구성 백업 및 시크릿:
docker exec -t <your container name> /bin/sh -c 'gitlab-ctl backup-etc && cd /etc/gitlab/config_backup && cp $(ls -t | head -n1) /secret/gitlab/backups/'
참고: 이러한 백업을 컨테이너 외부에 유지하려면 다음 디렉토리에 볼륨을 마운트하세요:
/secret/gitlab/backups
-
모든 애플리케이션 데이터에 대한
/var/opt/gitlab
. -
/var/opt/gitlab/backups
(선택 사항).gitlab-backup
도구가 기본적으로 이 디렉터리에 작성합니다. 이 디렉터리는/var/opt/gitlab
내부에 중첩되어 있지만 도커는 이러한 마운트를 정렬하므로 조화롭게 작동합니다.이 구성은 다음을 가능하게 합니다:
- 정규 로컬 저장소에 애플리케이션 데이터(두 번째 마운트를 통해)를 두세요.
- 네트워크 저장소에 백업 볼륨을 둘 수 있습니다(세 번째 마운트를 통해).
응용 프로그램 백업 복원
복원 문서을 참조하세요.
패키지되지 않은 데이터베이스를 사용한 백업 및 복원
패키지되지 않은 데이터베이스를 사용하는 경우 비 패키지 데이터베이스 사용 설명서를 참조하세요.
원격(클라우드) 저장소에 백업 업로드
자세한 내용은 백업 문서를 확인하세요.
백업 디렉터리 수동 관리
Linux 패키지 설치는 gitlab_rails['backup_path']
로 설정된 백업 디렉터리를 생성합니다. 이 디렉터리는 GitLab을 실행하는 사용자가 소유하고 있으며 해당 사용자만 액세스할 수 있도록 엄격한 권한이 설정되어 있습니다.
해당 디렉터리에는 백업 아카이브가 포함되어 있으며 민감한 정보가 담겨 있을 수 있습니다.
일부 조직에서는 백업 아카이브를 오프사이트로 이동시키기 위해 권한이 다를 필요성이 있습니다.
백업 디렉터리 관리를 비활성화하려면 /etc/gitlab/gitlab.rb
에서 다음과 같이 설정하세요:
gitlab_rails['manage_backup_path'] = false
경고:
이 구성 옵션을 설정하는 경우, gitlab_rails['backup_path']
에 지정된 디렉터리를 직접 생성하고, user['username']
에서 지정한 사용자가 올바른 액세스 권한을 갖도록 설정해야 합니다. 이를 하지 않으면 GitLab에서 백업 아카이브를 생성하지 못할 수 있습니다.