외부 GitLab Pages와 GitLab 차트 구성

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

요구 사항

  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. 이 구성을 사용하여 차트를 배포합니다.