GitLab 관리 시작하기
GitLab v19.5Offering: GitLab Self-Managed
요약
GitLab 관리를 시작합니다. 인증은 설치 환경을 안전하게 만드는 첫 단계입니다. 그룹과 프로젝트를 구성해 환경을 체계화합니다. 그룹 및 프로젝트 개요 영상을 시청합니다. GitHub, Bitbucket, 또는 다른 GitLab 인스턴스 같은 외부 소스에서 프로젝트를 가져와야 할 수 있습니다.
GitLab 관리를 시작합니다. 조직과 조직의 인증을 구성한 다음, GitLab을 보호하고 모니터링하며 백업합니다.
인증#
인증은 설치 환경을 안전하게 만드는 첫 단계입니다.
- 모든 사용자에게 2단계 인증(2FA)을 적용합니다.
- 사용자가 다음을 수행하도록 합니다.
- 강력하고 안전한 비밀번호를 선택합니다. 가능하다면 비밀번호 관리 시스템에 보관합니다.
- 전체 사용자에게 적용되지 않았다면 계정에 2단계 인증(2FA)을 켭니다. 이 일회용 비밀 코드는 비밀번호가 유출되더라도 침입자를 막아 주는 추가 보호 장치입니다.
- 백업 이메일을 추가합니다. 계정에 접근할 수 없게 되더라도 GitLab 지원팀이 더 빠르게 도울 수 있습니다.
- 복구 코드를 저장하거나 인쇄합니다. 인증 장치를 사용할 수 없을 때 이 복구 코드로 GitLab 계정에 로그인할 수 있습니다.
- 프로필에 SSH 키를 추가합니다. SSH를 사용하면 필요할 때 복구 코드를 생성할 수 있습니다.
- 개인 액세스 토큰을 생성합니다. 2FA를 사용할 때 이 토큰으로 GitLab API에 접근할 수 있습니다.
프로젝트 및 그룹#
그룹과 프로젝트를 구성해 환경을 체계화합니다.
- 프로젝트: 파일과 코드를 둘 공간을 지정하거나, 업무 범주별로 이슈를 추적하고 정리합니다.
- 그룹: 사용자 또는 프로젝트의 모음을 구성합니다. 이 그룹을 사용하면 사람과 프로젝트를 빠르게 배정할 수 있습니다.
- 역할: 프로젝트와 그룹에 대한 사용자 액세스 및 표시 범위를 정의합니다.
그룹 및 프로젝트 개요 영상을 시청합니다.
시작하기:
추가 자료
- 여러 애자일 팀 운영.
- LDAP을 사용한 그룹 멤버십 동기화.
- 상속된 권한으로 사용자 액세스를 관리합니다. 최대 20단계의 하위 그룹으로 팀과 프로젝트를 함께 구성할 수 있습니다.
프로젝트 가져오기#
GitHub, Bitbucket, 또는 다른 GitLab 인스턴스 같은 외부 소스에서 프로젝트를 가져와야 할 수 있습니다. 다양한 외부 소스를 GitLab으로 가져올 수 있습니다.
- GitLab 프로젝트 문서를 확인합니다.
- 프로젝트 마이그레이션의 대안인 리포지터리 미러링을 고려합니다.
- 일반적인 마이그레이션 경로에 대한 문서는 GitLab으로 가져오기 및 마이그레이션을 확인합니다.
- 가져오기/내보내기 API로 프로젝트 내보내기를 예약합니다.
자주 사용하는 프로젝트 가져오기 경로#
이러한 데이터 유형에 대한 지원이 필요하면 GitLab 계정 관리자 또는 GitLab 지원팀에 전문 마이그레이션 서비스를 문의합니다.
GitLab 인스턴스 보안#
보안은 온보딩 과정에서 중요한 부분입니다. 인스턴스를 보호하면 작업물과 조직을 함께 보호할 수 있습니다.
아래가 전부는 아니지만, 다음 단계를 따르면 인스턴스 보안의 탄탄한 출발점이 됩니다.
- 긴 root 비밀번호를 사용하고 볼트에 보관합니다.
- 신뢰할 수 있는 SSL 인증서를 설치하고 갱신 및 폐기 절차를 마련합니다.
- 조직의 지침에 따라 SSH 키 제한을 구성합니다.
- 신규 사용자 계정 생성을 끕니다.
- 이메일 확인을 필수로 설정합니다.
- 비밀번호 길이 제한을 설정하고 SSO 또는 SAML 사용자 관리를 구성합니다.
- 신규 사용자의 계정 생성을 허용한다면 이메일 도메인을 제한합니다.
- 2단계 인증(2FA)을 필수로 설정합니다.
- HTTPS를 통한 Git의 비밀번호 인증을 끕니다.
- 알 수 없는 로그인에 대한 이메일 알림을 설정합니다.
- 사용자 및 IP 속도 제한을 구성합니다.
- 웹훅의 로컬 액세스를 제한합니다.
- 보호된 경로에 대한 속도 제한을 설정합니다.
- Communication Preference Center에서 보안 알림을 구독합니다.
- 블로그 페이지에서 보안 모범 사례를 계속 확인합니다.
GitLab 성능 모니터링#
기본 설정을 마쳤다면 GitLab 모니터링 서비스를 살펴볼 차례입니다. Prometheus는 GitLab의 핵심 성능 모니터링 도구입니다. Zabbix 나 New Relic 같은 다른 모니터링 솔루션과 달리 Prometheus는 GitLab과 긴밀하게 통합되어 있고 커뮤니티 지원도 폭넓습니다.
- Prometheus는 다음 GitLab 메트릭을 수집합니다.
- GitLab 번들 소프트웨어 메트릭에 대해 자세히 알아봅니다.
- Prometheus와 익스포터는 기본적으로 켜져 있습니다. 다만 서비스를 구성해야 합니다.
- 애플리케이션 성능 메트릭이 중요한 이유를 확인합니다.
- Grafana를 연동해 성능 메트릭 기반의 시각 대시보드를 구성합니다.
모니터링 구성 요소#
- 웹 서버: 서버 요청을 처리하고 다른 백엔드 서비스 트랜잭션을 지원합니다. 이 노드의 상태를 파악하려면 CPU, 메모리, 네트워크 IO 트래픽을 모니터링합니다.
- Workhorse: 메인 서버의 웹 트래픽 혼잡을 완화합니다. 이 노드의 상태를 파악하려면 지연 시간 급증을 모니터링합니다.
- Sidekiq: GitLab 이 원활히 동작하도록 백그라운드 작업을 처리합니다. 이 노드의 상태를 파악하려면 처리되지 않고 길게 쌓인 작업 큐를 모니터링합니다.
GitLab 데이터 백업#
GitLab은 데이터를 안전하게 보관하고 복구할 수 있도록 백업 방법을 제공합니다.
- 백업 전략을 결정합니다.
- 일일 백업을 수행하는 cron job 작성을 고려합니다.
- 구성 파일은 별도로 백업합니다.
- 백업에서 제외할 대상을 결정합니다.
- 백업을 업로드할 위치를 결정합니다.
- 백업 보관 기간을 제한합니다.
- 테스트 백업과 복원을 수행합니다.
- 백업을 주기적으로 검증할 방법을 마련합니다.
인스턴스 백업#
Linux 패키지로 배포했는지 Helm 차트로 배포했는지에 따라 절차가 다릅니다.
Linux 패키지를 사용하는 단일 노드 설치는 Rake 태스크 하나로 백업할 수 있습니다.
Linux 패키지 및 Helm 방식의 백업에 대해 알아봅니다. 이 절차는 인스턴스 전체를 백업하지만 구성 파일은 백업하지 않습니다. 구성 파일은 별도로 백업해야 합니다. 암호화 키가 암호화된 데이터와 함께 보관되지 않도록 구성 파일과 백업 아카이브를 서로 다른 위치에 보관합니다.
백업 복원#
백업은 그 백업을 생성한 GitLab과 완전히 동일한 버전 및 유형(Community Edition 또는 Enterprise Edition)에만 복원할 수 있습니다.
- Linux 패키지(Omnibus) 백업 및 복원 문서를 확인합니다.
- Helm 차트 백업 및 복원 문서를 확인합니다.
대안 백업 전략#
상황에 따라 백업용 Rake 태스크가 최선이 아닐 수 있습니다. Rake 태스크가 적합하지 않을 때 고려할 수 있는 대안은 다음과 같습니다.
파일 시스템 스냅샷#
GitLab 서버에 Git 리포지터리 데이터가 많다면 GitLab 백업 스크립트가 너무 느리게 느껴질 수 있습니다. 특히 외부 위치로 백업할 때 느립니다.
일반적으로 Git 리포지터리 데이터가 약 200 GB에 이르면 느려지기 시작합니다. 이 경우 백업 전략의 일부로 파일 시스템 스냅샷을 고려할 수 있습니다. 예를 들어 다음과 같은 구성 요소를 가진 GitLab 서버를 가정합니다.
- Linux 패키지를 사용합니다.
/var/opt/gitlab에 마운트된 ext4 파일 시스템이 있는 EBS 드라이브와 함께 AWS에서 호스팅됩니다.
이 EC2 인스턴스는 EBS 스냅샷을 생성하는 방식으로 애플리케이션 데이터 백업 요구 사항을 충족합니다. 백업에는 모든 리포지터리, 업로드, PostgreSQL 데이터가 포함됩니다.
가상화된 서버에서 GitLab을 운영한다면 GitLab 서버 전체의 VM 스냅샷을 생성할 수 있습니다. VM 스냅샷은 서버 전원을 내려야 하는 경우가 많습니다.
GitLab Geo#
Geo는 GitLab 인스턴스의 로컬 읽기 전용 인스턴스를 제공합니다.
GitLab Geo는 원격 팀이 가까운 GitLab 노드를 사용해 더 효율적으로 일하도록 돕는 동시에, 재해 복구 솔루션으로도 활용할 수 있습니다. 재해 복구 솔루션으로서의 Geo에 대해 자세히 알아봅니다.
Geo는 데이터베이스, Git 리포지터리, 그 밖의 일부 자산을 복제합니다. Geo가 복제하는 데이터 유형에 대해 자세히 알아봅니다.
GitLab 지원 받기#
GitLab은 여러 채널을 통해 GitLab Self-Managed 지원을 제공합니다.
- 우선 지원: Premium 및 Ultimate GitLab Self-Managed 고객은 등급별 응답 시간이 적용되는 우선 지원을 받습니다.
- 실시간 업그레이드 지원: 운영 환경 업그레이드 중 1:1 전문가 안내를 받습니다. 우선 지원 플랜 고객은 지원팀 담당자와 일정을 잡아 실시간 화면 공유 세션을 진행할 수 있습니다.
도움을 받으려면 다음을 참고합니다.
- 자가 지원을 위해 GitLab 문서를 활용합니다.
- 커뮤니티 지원을 받으려면 GitLab 포럼에 참여합니다.
- 지원 티켓을 제출합니다.
API 및 속도 제한#
속도 제한은 서비스 거부 공격이나 무차별 대입 공격을 막아 줍니다. 대부분의 경우 단일 IP 주소의 요청 속도를 제한하면 애플리케이션과 인프라의 부하를 줄일 수 있습니다.
속도 제한은 애플리케이션의 보안도 강화합니다.
속도 제한 구성#
Admin 영역에서 기본 속도 제한을 변경할 수 있습니다. 구성에 대한 자세한 내용은 Admin 영역 페이지를 참고합니다.
- 사용자별 분당 최대 이슈 생성 요청 수를 설정하려면 콘텐츠 생성 속도 제한을 정의합니다.
- 인증되지 않은 웹 요청에 사용자 및 IP 속도 제한을 적용합니다.
- raw 엔드포인트의 속도 제한을 확인합니다. raw 파일 접근의 기본값은 분당 300회 요청입니다.
- 활성화된 여섯 가지 기본값의 가져오기/내보내기 속도 제한을 확인합니다.
API 및 속도 제한에 대한 자세한 내용은 API 페이지를 참고합니다.
GitLab 교육 자료#
GitLab 관리 방법을 더 자세히 배울 수 있습니다.
- GitLab 포럼에 참여해 커뮤니티와 노하우를 나눕니다.
- 다음 주제의 최신 소식은 GitLab 블로그에서 확인합니다.
- 릴리스
- 애플리케이션
- 기여
- 뉴스
- 이벤트
유료 GitLab 교육#
- GitLab education services: 전문 교육 과정을 통해 GitLab 및 DevOps 모범 사례를 배웁니다. 전체 과정 카탈로그를 확인합니다.
무료 GitLab 교육#
- GitLab basics: Git 및 GitLab 기초의 자가 학습 가이드를 살펴봅니다.
- GitLab University: GitLab University의 체계적인 과정에서 새로운 GitLab 기술을 배웁니다.
타사 교육#
- Udemy: 더 저렴한 가이드형 교육을 원한다면 Udemy의 GitLab CI: Pipelines, CI/CD, and DevOps for Beginners 과정을 고려합니다.
- LinkedIn Learning: 또 다른 저비용 가이드형 교육으로 LinkedIn Learning의 Continuous Delivery with GitLab 과정을 확인합니다.