外部のGitLab Pagesを使ったGitLabチャートの設定

このドキュメントは、Linuxパッケージを使用してクラスターの外部で設定されたGitLab PagesインスタンスでこのHelmチャートを設定する方法についてのドキュメントを提供することを意図しています。イシュー418259では、Helmチャートを使って外部のGitLab Pagesを使ったLinuxパッケージインスタンスに関するドキュメントの追加を提案しています。

要件

  1. GitLab 13.7以降。
  2. 本番インスタンスで推奨される外部オブジェクトストレージを使用する必要があります。
  3. PagesがGitLab Pagesとやりとりするための32バイト長のAPIシークレットキーをBase64エンコードした形式。

既知の制限

  1. GitLab Pagesのアクセスコントロールはサポートされていません。

外部GitLab Pagesインスタンスの設定

  1. Linuxパッケージを使ってGitLabをインストールします。

  2. /etc/gitlab/gitlab.rb ファイルを編集し、その内部を以下のスニペットで置き換えます。以下の値をあなたの設定に合わせて更新してください:

    roles ['pages_role']
       
    # Root domain where Pages will be served.
    pages_external_url '<Pages root domain>'  # Example: 'http://pages.example.io'
       
    # Information regarding GitLab instance
    gitlab_pages['gitlab_server'] = '<GitLab URL>'  # Example: 'https://gitlab.example.com'
    gitlab_pages['api_secret_key'] = '<Base64 encoded form of API secret key>'
    
  3. sudo gitlab-ctl reconfigure を実行して変更を適用します。

Chartの設定

  1. Pagesデプロイを格納するために、オブジェクトストレージにgitlab-pages という名前のバケットを作成します。

  2. API シークレットキーを Base64 エンコードしたものを値として、secretgitlab-pages-api-key を作成します。

    kubectl create secret generic gitlab-pages-api-key --from-literal="shared_secret=<Base 64 encoded API Secret Key>"
    
  3. 以下の設定スニペットを参照し、必要なエントリをvaluesファイルに追加してください。

    global:
      pages:
        path: '/srv/gitlab/shared/pages'
        host: <Pages root domain>
        port: '80'  # Set to 443 if Pages is served over HTTPS
        https: false  # Set to true if Pages is served over HTTPS
        artifactsServer: true
        objectStore:
          enabled: true
          bucket: 'gitlab-pages'
        apiSecret:
          secret: gitlab-pages-api-key
          key: shared_secret
      extraEnv:
        PAGES_UPDATE_LEGACY_STORAGE: true  # Bypass automatic disabling of disk storage
    
    note
    環境変数PAGES_UPDATE_LEGACY_STORAGE を true に設定すると、Pages をローカルディスクにデプロイする機能フラグpages_update_legacy_storage が有効になります。オブジェクトストレージにマイグレーションする場合は、この変数を忘れずに削除してください。
  4. この設定を使ってChartをデプロイします。