본문으로 건너뛰기

GitHub Public + GitLab Private 구성 가이드

GitHub Public + GitLab Private 구성 가이드

목차


개요

GitHub는 Public 저장소로 운영하면서, GitLab은 Private 저장소 및 Private Container Registry로 운영하는 하이브리드 구성

Q: GitHub를 Public으로 전환하면 GitLab도 Public이 되나요? A: 아니요. GitHub와 GitLab은 독립적입니다. GitHub가 Public이어도 GitLab은 Private으로 유지됩니다.


이점

항목GitHub PublicGitLab Private
코드 가시성누구나 열람 가능인증된 사용자만 접근
Container Registry-인증 필요
CI/CD 비용제한적Self-hosted Runner로 무제한
협업오픈소스 기여 가능내부 팀만 접근

설정 방법

1. GitLab Private Repository 생성

# GitLab에서 새 프로젝트 생성 시
Visibility Level: Private 선택

2. GitHub Actions Mirror 설정

.github/workflows/mirror.yml:

name: Mirror to GitLab

on:
push:
branches: ['*']

jobs:
mirror:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Mirror to GitLab
run: |
git remote add gitlab https://oauth2:${{ secrets.GITLAB_TOKEN }}@gitlab.com/YOUR_USER/YOUR_REPO.git
git push gitlab --all --force
git push gitlab --tags --force

3. GitLab CI/CD 설정

.gitlab-ci.yml:

stages:
- build

variables:
DOCKER_TLS_CERTDIR: "/certs"

build-image:
stage: build
image: docker:latest
services:
- docker:dind
before_script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY"
script:
- docker build -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" .
- docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA"

Kubernetes에서 Private Registry 사용

1. Registry Secret 생성

kubectl create secret docker-registry gitlab-registry-secret \
--docker-server=registry.gitlab.com \
--docker-username=YOUR_GITLAB_USER \
--docker-password=YOUR_GITLAB_TOKEN \
--docker-email=YOUR_EMAIL \
-n YOUR_NAMESPACE

2. Deployment에서 Secret 참조

apiVersion: apps/v1
kind: Deployment
spec:
template:
spec:
imagePullSecrets:
- name: gitlab-registry-secret
containers:
- name: app
image: registry.gitlab.com/YOUR_USER/YOUR_REPO:latest

보안 체크리스트

  • GitLab Repository를 Private으로 설정
  • GitLab Token을 GitHub Secrets에 안전하게 저장
  • Kubernetes imagePullSecrets 설정
  • GitLab Token 권한 최소화 (read_registry, write_registry)

참고


관련 문서

그래프 뷰

그래프 데이터 로딩 중…
현재: GitHub Public + GitLab Private 구성 가이드
노드 클릭 → 이동 · 드래그 → 위치 조정