외부 GitLab Pages로 GitLab 차트 구성하기

이 문서는 리눅스 패키지를 사용하여 클러스터 외부에 구성된 GitLab Pages 인스턴스와 함께 이 Helm 차트를 구성하는 방법에 대한 설명서를 제공하기 위한 것입니다. Issue 418259에서는 Helm 차트를 사용하여 클러스터 외부에 구성된 리눅스 패키지 인스턴스에 대한 설명을 추가하는 것이 제안되었습니다.

요구 사항

  1. 외부 객체 저장소는 프로덕션 인스턴스에 권장되는 대로 사용되어야 합니다.
  2. GitLab Pages가 GitLab Pages와 상호 작용하기 위한 32바이트 길이의 API 비밀 키의 Base64로 인코딩된 형식.

알려진 제한 사항

  1. GitLab Pages 액세스 제어는 기본적으로 지원되지 않습니다.

외부 GitLab Pages 인스턴스 구성

  1. 리눅스 패키지를 사용하여 GitLab을 설치합니다.

  2. /etc/gitlab/gitlab.rb 파일을 편집하고 내용을 다음 조각으로 대체합니다. 아래의 값을 구성에 맞게 업데이트하세요.

    roles ['pages_role']
    
    # Pages가 제공될 루트 도메인.
    pages_external_url '<Pages 루트 도메인>'  # 예: 'http://pages.example.io'
    
    # GitLab 인스턴스에 관한 정보
    gitlab_pages['gitlab_server'] = '<GitLab URL>'  # 예: 'https://gitlab.example.com'
    gitlab_pages['api_secret_key'] = '<API 비밀 키의 Base64로 인코딩된 형식>'
    
  3. 변경 사항을 적용하려면 sudo gitlab-ctl reconfigure를 실행합니다.

차트 구성

  1. 페이지 배포를 위해 객체 저장소에 gitlab-pages라는 버킷을 생성합니다.

  2. 값으로 API 비밀 키의 Base64로 인코딩된 형식을 가진 gitlab-pages-api-key라는 시크릿을 생성합니다.

    kubectl create secret generic gitlab-pages-api-key --from-literal="shared_secret=<Base 64로 인코딩된 API 비밀 키>"
    
  3. 다음 구성 조각을 참조하고 필요한 항목을 값 파일에 추가하세요.

    global:
      pages:
        path: '/srv/gitlab/shared/pages'
        host: <Pages 루트 도메인>
        port: '80'  # Pages가 HTTPS로 제공되는 경우 443으로 설정
        https: false  # Pages가 HTTPS로 제공되는 경우 true로 설정
        artifactsServer: true
        objectStore:
          enabled: true
          bucket: 'gitlab-pages'
        apiSecret:
          secret: gitlab-pages-api-key
          key: shared_secret
      extraEnv:
        PAGES_UPDATE_LEGACY_STORAGE: true  # 자동 디스크 저장소 비활성화 우회
    

    참고: PAGES_UPDATE_LEGACY_STORAGE 환경 변수를 true로 설정하여, pages_update_legacy_storage 피처 플래그를 활성화하여 Pages를 로컬 디스크에 배포합니다. 객체 저장소로 마이그레이션할 때 이 변수를 제거하는 것을 기억하세요.

  4. 이 구성을 사용하여 차트를 배포합니다.