기존 내부에 gitlab-ce(community) 를 온프로미스 서버에 올라간것을 docker continer 로 변경하면서 옮기는 작업을 진행하려고 한다.
현재
- 서버개발서버에 온프로미스로 gitlab 이 설치됨 백업 정책 X
- Gitlab 12.0.2 버전
변경사항
- 신규 인프라 서버로 Container 변경하여 적용 및 설정파일은 mount volume 화
- 백업 정책 추가
- Gitlab 버전 업데이트 (실패 ..)
- Gitlab 버전을 한번에 매이저를 최신버전으로 업데이트 불가
- 12.0.2 로 동일한 버전으로 복구 하여 이전 작업 진행
- 버전 업데이트를 진행
- 12.1.17 => 12.10.14 => 13.0.14 => 13.1.11 => 13.8.8 => 13.12.15 => 14.0.12 => 14.3.6 => 14.9.5 => 14.10.5 => 15.0.5 => 15.4.6 => 15.11.13 => 16.1.5 => 16.3.5 => 16.5.0 순으로 진행
- 버전 업데이트 순서 : https://gitlab-com.gitlab.io/support/toolbox/upgrade-path/?current=12.0.12&distro=docker&auto=true&edition=ce
신규 서버에 Gitlab Container 올리기
- docker-compose.yml 작성
version: '3.9'
services:
gitlab:
# image: gitlab/gitlab-ce:latest
image: gitlab/gitlab-ce:12.0.2-ce.0
container_name: gitlab
volumes:
- /data/data/gitlab/config:/etc/gitlab # gitlab Config 폴더 Mount
- /data/data/gitlab/logs:/var/log/gitlab # gitlab Logs 폴더 Mount
- /data/data/gitlab/data:/var/opt/gitlab # gitlab Data 폴더 Mount
ports:
- 9180:80 # 웹 80 전용 외부 포트 9180 -> 내부 포트 80 접근
- 9143:443 # 웹 443(SSL 전용) 외부 포트 9143 -> 내부 포트 443 접근
- 9122:22 # SSH 접근 외부 포트 9122 -> 내부 포트 22 접근
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'https://domain' # 연결될 도메인
gitlab_rails['gitlab_shell_ssh_port'] = 22 # 연결될 포트
restart: always
networks:
- default
networks:
default:
external:
name: infra # 내부에 구성된 infra network Brige 를 활용하여 nginx Proxy Pass 활용하여 접근
- /data/data/gitlab 내에 config, logs, data 폴더 생성
$ mkdir /data/data/gitlab/config
$ mkdir /data/data/gitlab/logs
$ mkdir /data/data/gitlab/data
- SSL 443 포트 활용을 위한 도메인 인증서 [ /data/data/gitlab/config/ssl ] 에 추가
( 우선 2중 nginx( container 안에 하나, 밖에 하나.. ) 로 운영... 추후 개발 .. )
- container 실행
$ docker-compose -f docker-compose.yml up -d --build
- 컨테이너가 정상적으로 올라간것을 확인
- 중간중간 오류 발행시 docker logs gitlab 을 통하여 로그 체크하여 해결
GitLab Backup
# gitlab 12.1 및 이전 버전
$ gitlab-rake gitlab:backup:create
# gitlab 12.2 이상 버전
$ gitlab-backup create
gitlab-rake를 활용하여 백업
완료시 [ /var/opt/gitlab/backups ] 폴더에 저장됨
ex) timpstamp_날짜_gitlab버전_gitlab_backup.tar
백업 경로 변경
$ vi/etc/gitlab/gitlab.rb
# 아래의 부분을 찾아 수정
gitlab_rails['backup_path'] = '/var/opt/gitlab/backups'
Gitlab Container 에 복구
- 프로세스 중지
$ docker exec -it gitlab bash
$ gitlab-ctl stop puma
$ gitlab-ctl stop sidekiq
# status
$ gitlab-ctl status
- 백업된 tar 파일을 동일 한 경로에 복사 이동
- 복원 실행
$ docker exec -it gitlab bash
# BACKUP 파일명 지정시 타임스템프_날짜_버전 까지만 입력 뒤에 _gitlab_backup.tar 는 제거
# 12.1 및 이전 버전
$ gitlab-rake gitlab:bakcup:restore BACKUP=파일명(타임스템프_날짜_버전)
# 12.2 이상 버전
$ gitlab-backup restore BACKUP=파일명(타임스템프_날짜_버전)
- 복원 완료 후 중지한 프로세스 재가동 후 git 확인
# gitlab 컨테이너 접근
$ docker exec -it gitlab bash
$ gitlab-ctl start puma
$ gitlab-ctl start sidekiq
# status 확인
$ gitlab-ctl status
# 또는 한번에 전부 재실행
$ gitlab-ctl restart
자동 백업 구성
gitlab 컨테이너 안에는 cron 이 없기에 host 크론을 활용하여 실행
# host 에서 docker 명령어로 backup 명령어 실행하여 확인
$ docker exec gitlab-rake gitlab:backup:create
# 크론탭 설정 ( 매일 오전 2시 백업 )
$ crontab -e
0 2 * * * docker exec gitlab-rake gitlab:backup:create CRON=1
gitlab backup 보관주기 설정
# gitlab 컨테이너 접속
$ docker exec -it gitlab bash
$ vi /etc/gitlab/gitlab.rb
# 초단위 입력 ( 7일 = 604800 )
gitlab_rails['backup_keep_time'] = 604800
환경설정 변경에 따른 재구성 후 재시작
# 컨텐이너 bash 접근
$ docker exec -it gitlab bash
$ gitlab-ctl reconfigure
$ gitlab-ctl restart
또는
$ docker exec gitlab gitlab-ctl reconfigure
$ docker exec gitlab gitlab-ctl restart
'Server' 카테고리의 다른 글
[docker] 내부 레지스트리 서버에 외부 컨테이너 이미지 보내기 (0) | 2023.10.18 |
---|---|
[Rocky Linux] ping 은 되는데 curl이 안될경우 (0) | 2023.06.27 |
[VirtualBox] Rocky Linux 설치 - 2. 내부 IP 설정 (0) | 2023.06.12 |
[VirtualBox] Rocky Linux 설치 - checksum Error (0) | 2023.06.12 |
[VirtualBox] Rocky Linux 설치 - 1. 다운로드 및 설치 (0) | 2023.06.12 |