다중 외부 데이터베이스를 사용하여 GitLab 차트 구성하기 (알파)

경고: 이 기능은 프로덕션 환경에서 사용하기에 준비되지 않았습니다. 알려진 문제로 인해, GitLab을 다중 데이터베이스로 구성하는 것은 알파 상태입니다.

기본적으로 GitLab은 main 데이터베이스라고 하는 단일 애플리케이션 데이터베이스를 사용합니다.

GitLab을 확장하기 위해, GitLab을 여러 외부 애플리케이션 데이터베이스를 사용하도록 구성할 수 있습니다. 즉, mainci라고 하는 다음과 같은 여러 외부 애플리케이션 데이터베이스를 사용합니다. 다음 다이어그램은 파드가 여러 데이터베이스와 통신하는 방법을 보여줍니다.

graph LR subgraph 외부 데이터베이스 B[(메인 데이터베이스)] C[(CI 데이터베이스)] end subgraph 쿠버네티스 클러스터 A[GitLab 파드 1] --> B A --> C D[GitLab 파드 2] --> B D --> C end

전제 조건:

  • 외부 데이터베이스 문서에 나열된 모든 전제 조건.
  • 추가로 비어 있는 gitlabhq_production_ci 데이터베이스는 PostgreSQL과 같은 서버에서 실행되어야 합니다.
  • kubectlhelm CLI 도구를 사용하여 Kubernetes 클러스터에 액세스합니다. 자세한 정보는 GitLab 차트 전제 조건을 참조하세요.

다중 외부 데이터베이스를 설정하려면:

  1. 데이터베이스 사용자 gitlab의 PostgreSQL 비밀을 보유하는 Kubernetes 시크릿을 생성합니다. 이 비밀은 두 개의 다른 물리 서버에 다른 암호를 사용하여 여러 데이터베이스를 지원하기 위해 다를 수 있습니다.

    이 Kubernetes 시크릿에 gitlab-postgresql-password라는 이름을 선택합시다:

    kubectl create secret generic gitlab-postgresql-password \
        --from-literal=main-gitlab-password=<main-database-password> \
        --from-literal=ci-gitlab-password=<ci-database-password>
    
  2. 기존의 YAML 파일에 다음을 추가하여 GitLab 차트를 배포하는 동안 이를 사용하고, host 값을 귀하의 값으로 교체합니다:

    global:
      psql:
        main:
          host: main.database.host # 외부 main 데이터베이스의 호스트를 여기에 설정
          database: gitlabhq_production
          password:
            secret: gitlab-postgresql-password
            key: main-gitlab-password
        ci:
          host: ci.database.host # 외부 ci 데이터베이스의 호스트를 여기에 설정. main 데이터베이스와 동일할 수 있습니다.
          database: gitlabhq_production_ci # CI 스키마를 포함하는 데이터베이스의 차이는 `database_tasks: true`로 이어집니다.
          password:
            secret: gitlab-postgresql-password
            key: ci-gitlab-password
    postgresql:
      install: false
    

    여기서:

    • postgresql.install: 포함된 데이터베이스를 비활성화하고 외부 데이터베이스를 대신 사용하도록 false로 설정합니다.
    • global.psql.main.host: 외부 main 데이터베이스의 호스트 이름을 설정합니다. 도메인 또는 IP 주소가 될 수 있습니다.
    • global.psql.main.password.secret: PostgreSQL 사용자의 비밀을 보유하는 Kubernetes 시크릿의 이름입니다. 우리의 예에서는 gitlab-postgresql-password입니다.
    • global.psql.main.password.key: 시크릿 내에서 비밀을 포함하는 키입니다. 우리의 예에서는 main-gitlab-password입니다.
    • global.psql.ci.host: 외부 ci 데이터베이스의 호스트 이름을 설정합니다. 도메인 또는 IP 주소가 될 수 있습니다. 두 데이터베이스 mainci가 동일한 데이터베이스 서버에 있는 경우 global.psql.main.host와 동일한 값이 될 수 있습니다.
    • global.psql.ci.password.secret: PostgreSQL 사용자의 비밀을 보유하는 Kubernetes 시크릿의 이름입니다. 우리의 예에서는 gitlab-postgresql-password입니다.
    • global.psql.ci.password.key: 시크릿 내에서 비밀을 포함하는 키입니다. 우리의 예에서는 ci-gitlab-password입니다.
  3. 마지막으로, gitlab-values.yaml을 사용하여 GitLab 차트를 배포합니다:

    helm repo add gitlab https://charts.gitlab.io/
    helm repo update
    helm upgrade --install gitlab gitlab/gitlab --timeout=900s -f gitlab-values.yaml