외부 GitLab Pages와 함께 GitLab 차트 구성하기

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

요구 사항

  1. GitLab 13.7 이상.
  2. 제품 인스턴스에 권장되는 대로 외부 객체 저장소를 사용해야 함.
  3. 32바이트 길이의 API 시크릿 키를 기반으로 한 Pages가 GitLab Pages와 상호 작용하는 기능을 사용할 수 있음 (Base64로 인코딩된 형식).

알려진 제한 사항

  1. GitLab Pages 액세스 제어 은 기본적으로 지원되지 않음.

외부 GitLab Pages 인스턴스 구성하기

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