1️⃣ 개요
GitLab을 인터넷이 차단된 내부망에서 Docker를 활용하여 CPU와 메모리를 제한한 상태로 설치하는 방법을 정리합니다.
또한, GitLab 데이터를 /data/gitlab 경로 아래에 저장하고, HTTPS(SSL) 설정을 적용하여 보안성을 강화합니다.
2️⃣ 사전 준비
GitLab을 설치할 내부망 서버에는 Docker 및 Docker Compose가 필요합니다.
✅ 인터넷이 없는 환경이므로, 외부망에서 필요한 파일을 다운로드 후 내부망으로 옮겨야 합니다.
3️⃣ 내부망에서 Docker 설치
내부망 서버에 Docker가 설치되지 않은 경우, 외부망에서 패키지를 다운로드 후 내부망으로 이동하여 설치합니다.
(1) 외부망에서 Docker 패키지 다운로드
wget https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/containerd.io_1.6.27-1_amd64.deb
wget https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/docker-ce_25.0.2-1~ubuntu.22.04~jammy_amd64.deb
wget https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/docker-ce-cli_25.0.2-1~ubuntu.22.04~jammy_amd64.deb
wget https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/docker-compose-plugin_2.24.5-1~ubuntu.22.04~jammy_amd64.deb
(2) 내부망 서버로 패키지 전송
scp containerd.io_1.6.27-1_amd64.deb user@internal-server:/home/user/
scp docker-ce_25.0.2-1~ubuntu.22.04~jammy_amd64.deb user@internal-server:/home/user/
scp docker-ce-cli_25.0.2-1~ubuntu.22.04~jammy_amd64.deb user@internal-server:/home/user/
scp docker-compose-plugin_2.24.5-1~ubuntu.22.04~jammy_amd64.deb user@internal-server:/home/user/
(3) 내부망 서버에서 Docker 설치
sudo dpkg -i containerd.io_1.6.27-1_amd64.deb
sudo dpkg -i docker-ce-cli_25.0.2-1~ubuntu.22.04~jammy_amd64.deb
sudo dpkg -i docker-ce_25.0.2-1~ubuntu.22.04~jammy_amd64.deb
sudo dpkg -i docker-compose-plugin_2.24.5-1~ubuntu.22.04~jammy_amd64.deb
설치 확인:
docker --version
docker-compose version
4️⃣ 외부망에서 GitLab Docker 이미지 다운로드
외부에서 GitLab Docker 이미지를 미리 다운로드한 후 내부망으로 전송합니다.
(1) 외부망에서 GitLab EE 이미지 다운로드
docker pull gitlab/gitlab-ee:latest
(2) 다운로드한 이미지 저장
docker save -o gitlab-ee.tar gitlab/gitlab-ee:latest
(3) 내부망 서버로 전송
scp gitlab-ee.tar user@internal-server:/home/user/
5️⃣ 내부망에서 GitLab 실행 (리소스 제한 적용)
(1) 내부망에서 GitLab 이미지 로드
docker load -i gitlab-ee.tar
(2) /data/gitlab 디렉토리 생성
sudo mkdir -p /data/gitlab/config
sudo mkdir -p /data/gitlab/logs
sudo mkdir -p /data/gitlab/data
sudo chown -R 1000:1000 /data/gitlab
(3) Docker Compose 파일 작성 (docker-compose.yml)
version: '3.7'
services:
gitlab:
image: gitlab/gitlab-ee:latest
restart: always
hostname: 'gitlab.local'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'https://gitlab.local'
letsencrypt['enable'] = false
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.key"
ports:
- "80:80"
- "443:443"
- "22:22"
volumes:
- /data/gitlab/config:/etc/gitlab
- /data/gitlab/logs:/var/log/gitlab
- /data/gitlab/data:/var/opt/gitlab
- /data/gitlab/ssl:/etc/gitlab/ssl
deploy:
resources:
limits:
cpus: "2"
memory: "4GB"
(4) GitLab 컨테이너 실행
cd /data/gitlab
docker-compose up -d
6️⃣ GitLab 초기 설정 및 HTTPS 인증서 생성
mkdir -p /data/gitlab/ssl
cd /data/gitlab/ssl
openssl req -newkey rsa:4096 -nodes -keyout gitlab.key -x509 -days 365 -out gitlab.crt \
-subj "/C=KR/ST=Seoul/L=Seoul/O=InternalGitLab/OU=IT/CN=gitlab.local"
chmod 600 gitlab.*
'DevSecOps > CI,CD' 카테고리의 다른 글
Jenkins란? DevOps 및 DevSecOps에서의 역할 (0) | 2025.03.16 |
---|---|
Jenkins 관리자 비밀번호 재설정 (0) | 2025.02.11 |
클라우드 CI/CD 비교 및 멀티 클라우드 DevOps 전략 분석 (0) | 2025.02.10 |
Git Repository에 파일 올리기: GitHub 연동과 푸시하기 (0) | 2025.02.09 |
GitHub에 불필요한 파일 올리지 않기: .gitignore 사용법 (0) | 2025.02.09 |