외부 PostgreSQL 서비스를 사용하여 GitLab 구성
GitLab v19.2Offering: GitLab Self-Managed
클라우드 공급자에서 GitLab을 호스팅하는 경우 선택적으로 PostgreSQL을 위한 관리형 서비스를 사용할 수 있습니다. 또는 Linux 패키지와 별도로 자체 PostgreSQL 인스턴스나 클러스터를 관리하도록 선택할 수도 있습니다.
클라우드 공급자에서 GitLab을 호스팅하는 경우 선택적으로 PostgreSQL을 위한 관리형 서비스를 사용할 수 있습니다. 예를 들어 AWS는 PostgreSQL을 실행하는 관리형 관계형 데이터베이스 서비스(RDS)를 제공합니다.
또는 Linux 패키지와 별도로 자체 PostgreSQL 인스턴스나 클러스터를 관리하도록 선택할 수도 있습니다.
클라우드 관리형 서비스를 사용하거나 자체 PostgreSQL 인스턴스를 제공하는 경우, 데이터베이스 요구 사항 문서에 따라 PostgreSQL을 설정하세요.
GitLab Rails 데이터베이스#
외부 PostgreSQL 서버를 설정한 후:
-
데이터베이스 서버에 로그인합니다.
-
원하는 비밀번호로
gitlab사용자를 설정하고,gitlabhq_production데이터베이스를 만들고, 사용자를 데이터베이스의 소유자로 만듭니다. 이 설정의 예시는 자체 컴파일 설치 설명서에서 볼 수 있습니다. -
클라우드 관리형 서비스를 사용하는 경우
gitlab사용자에게 추가 권한을 부여해야 할 수 있습니다:
Amazon RDS는 rds_superuser 권한을 요구합니다.
-
Azure Database for PostgreSQL은
azure_pg_admin권한을 요구합니다. Azure Database for PostgreSQL - Flexible Server는 설치 전에 확장을 허용 목록에 추가해야 합니다. -
Google Cloud SQL은
cloudsqlsuperuser권한을 요구합니다.
이는 설치 및 업그레이드 중에 확장을 설치하기 위한 것입니다. 대안으로 필수 확장을 수동으로 설치할 수 있습니다.
/etc/gitlab/gitlab.rb파일에서 외부 PostgreSQL 서비스의 적절한 연결 세부 정보로 GitLab 애플리케이션 서버를 구성합니다:
# Disable the bundled Omnibus provided PostgreSQL
postgresql['enable'] = false
# PostgreSQL connection details
gitlab_rails['db_adapter'] = 'postgresql'
gitlab_rails['db_encoding'] = 'unicode'
gitlab_rails['db_host'] = '10.1.0.5' # IP/hostname of database server
gitlab_rails['db_port'] = 5432
gitlab_rails['db_password'] = 'DB password'
GitLab 멀티 노드 설정에 대한 자세한 내용은 참조 아키텍처를 참조하세요.
- 변경 사항을 적용하려면 재구성합니다:
sudo gitlab-ctl reconfigure
- TCP 포트를 활성화하려면 PostgreSQL을 재시작합니다:
sudo gitlab-ctl restart
데이터베이스 스키마#
GitLab, Geo, Gitaly Cluster (Praefect) 또는 기타 구성 요소 전용으로 데이터베이스를 생성하거나 사용하세요. 다음을 따르는 경우를 제외하고는 데이터베이스, 스키마, 사용자 또는 기타 속성을 생성하거나 수정하지 마세요:
-
GitLab 문서의 절차.
-
GitLab 지원팀 또는 엔지니어의 지시.
기본 GitLab 애플리케이션은 세 가지 스키마를 사용합니다:
-
기본
public스키마. -
gitlab_partitions_static(자동으로 생성됨). -
gitlab_partitions_dynamic(자동으로 생성됨).
Rails 데이터베이스 마이그레이션 중에 GitLab은 스키마 또는 테이블을 생성하거나 수정할 수 있습니다. 데이터베이스 마이그레이션은 GitLab 코드베이스의 스키마 정의를 기준으로 테스트됩니다. 스키마를 수정하면 GitLab 업그레이드가 실패할 수 있습니다.
컨테이너 레지스트리 메타데이터 데이터베이스#
컨테이너 레지스트리 메타데이터 데이터베이스를 사용할 계획이라면 레지스트리 데이터베이스와 사용자도 만들어야 합니다.
외부 PostgreSQL 서버를 설정한 후:
-
데이터베이스 서버에 로그인합니다.
-
다음 SQL 명령을 사용하여 사용자와 데이터베이스를 만듭니다:
-- Create the registry user
CREATE USER registry WITH PASSWORD '<your_registry_password>';
-- Create the registry database
CREATE DATABASE registry OWNER registry;
- 클라우드 관리형 서비스의 경우 필요한 추가 권한을 부여합니다:
GRANT rds_superuser TO registry;
GRANT azure_pg_admin TO registry;
GRANT cloudsqlsuperuser TO registry;
- 이제 컨테이너 레지스트리 메타데이터 데이터베이스를 활성화하고 사용하기 시작할 수 있습니다.
트러블슈팅#
SSL SYSCALL error: EOF detected 오류 해결#
외부 PostgreSQL 인스턴스를 사용할 때 다음과 같은 오류가 표시될 수 있습니다:
pg_dump: error: Error message from server: SSL SYSCALL error: EOF detected
이 오류를 해결하려면 최소 PostgreSQL 요구 사항을 충족하는지 확인하세요. RDS 인스턴스를 지원되는 버전으로 업그레이드하면 이 오류 없이 백업을 수행할 수 있습니다. 자세한 내용은 이슈 64763을 참조하세요.