지난 포스팅(# docker 기반 Gitlab-CI 구축 3 - Gitlab-runner 실행)에 이어 Gitlab 서버의 Backup과 Restore에 대해 정리했다.
Gitlab의 Backup은 Gitlab의 프로젝트, 이력, CI/CD 진행 내역 등 Gitlab 서버의 전반적인 내용을 모두 Backup 한다.
단, gitlab-ci.yml, gitlab-secrets.json파일은 민감 정보라고 하여 Backup 대상에서 제외된다.
따라서 위 정보가 필요하다면 수동으로 Backup 해줘야 한다.
Backup 기능은 주로 Gitlab 서버의 이전이나 프로젝트 관리를 위해 사용될 것이다.
1. Gitlab Backup
Backup 하려는 Gitlab 기동 서버에서 아래 작업을 진행한다.
# 1. gitlab 설정 파일에서 Backup Setting 확인, 경로를 설정
$ sudo docker exec -it gitlab vim /etc/gitlab/gitlab.rb
=> gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
# 2. gitlab backup 수행
$ docker exec -t gitlab gitlab-rake gitlab:backup:create # docker exec -t gitlab gitlab-backup create와 같은 명령이다.
# 3. backup 파일 경로로 이동하여 backup 파일을 확인
$ cd /srv/gitlab/data/backups
=> _gitlab_backup.tar 파일을 확인한다.
2. Gitlab Restore
1) 위에서 나온 Backup 파일을 Restore를 진행할 서버로 복사한다.
# gitlab을 복원시키려는 서버로 backup 파일 전송
$ scp 1585270462_2020_03_27_12.9.0_gitlab_backup.tar USER@192.168.10.X:/var/opt/gitlab/backups
2) Restore 진행할 서버에서 gitlab을 실행한다.
# gitlab 복원 서버에서 gitlab 실행
$ sudo docker run --detach \
--hostname 192.168.10.X \
--publish 30443:443 --publish 80:80 --publish 30022:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:12.9.0-ce.0
2-2에서 기동한 gitlab은 Backup 파일이 아닌 단순 gitlab을 기동한 것이다. 따라서 웹서버로 접속하면 초기 gitlab 화면만 보일 것이다.
3) Restore 준비
# 1. 위에서 복사한 backup 파일(_gitlab_backup.tar)을 gitlab 컨테이너의 gitlab 백업 경로로 복사
$ docker cp 1585270462_2020_03_27_12.9.0_gitlab_backup.tar fafb154128ef:/var/opt/gitlab/backups
=> docker cp <복사할 파일명> <컨테이너명>:<복사할 경로>
# 2. gitlab 컨테이너 진입
$ docker exec -it gitlab /bin/bash
# 3. gitlab 컨테이너 내부에서 백업 파일 확인
$ cd /var/opt/gitlab/backups
# 4. 백업 파일 권한 변경
$ chown -R git /var/opt/gitlab/backups
4) Restore 실행
# 호스트 서버에서 gitlab restore를 수행
$ docker exec -it gitlab gitlab-rake gitlab:backup:restore
2-4 진행 후에 Gitlab 서버에 접속해보면 Backup 당시의 프로젝트 목록이 그대로 저장되어 있는것을 확인할 수 있다.
※ Restore시 주의 사항은 Restore가 진행될 경로는 비어져있어야 한다는 것이다.
'Git' 카테고리의 다른 글
# docker 기반 Gitlab-CI 구축 3 - Gitlab-runner 실행 (0) | 2020.03.27 |
---|---|
# docker 기반 Gitlab-CI 구축 2 - Gitlab 실행 (0) | 2020.03.27 |
# docker 기반 Gitlab-CI 구축 1 - Gitlab-CI란 무엇인가? (0) | 2020.03.27 |