正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

Zoektチャート

  • プラン: Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed
  • ステータス: ベータ

この機能はベータ版であり、予告なく変更される場合があります。詳細については、エピック9404を参照してください。

ZoektチャートとLinuxパッケージインスタンス

Zoektチャートを使用して、LinuxパッケージインスタンスにZoektを接続します。

前提要件:

LinuxパッケージインスタンスでZoektチャートを使用するには:

  1. zoektというネームスペースを作成します:

    kubectl create namespace zoekt
  2. gitlab-zoektチャートをローカルにクローンし、そのディレクトリに変更します:

    git clone https://gitlab.com/gitlab-org/cloud-native/charts/gitlab-zoekt.git
    cd gitlab-zoekt
  3. ロードバランサーを有効にする。Zoektチャートはヘッドレスサービスであるため、ロードバランサーが必要です。

  4. values.yamlで:

    1. /etc/gitlab/gitlab-secrets.jsonファイルからgitlab_shellシークレットを使用して、kubectlシークレットを作成します:

      kubectl create secret generic gitlab-zoekt-secret --from-literal=secret-key="<gitlab-shell-secret>" -n zoekt
    2. シークレットを追加します:

      internalApi:
       secretName: 'gitlab-zoekt-secret'
       secretKey: 'secret-key'
    3. ロードバランサーのIPポート:8080でGitLabインスタンスのURLとサービスURLを追加します:

       internalApi:
         gitlabUrl: 'https://<gitlab_url>' # Internal URL to connect to GitLab
         serviceUrl: 'http://<loadbalancer_internal_ip>:8080' # URL to reach Zoekt service - LB internal URL
  5. GitLabで、Gitalyのリスニングインターフェースを変更します:

    gitaly['configuration'] = {
      listen_addr: '0.0.0.0:8075',
      storage: [
        {
          name: 'default',
          path: '/var/opt/gitlab/git-data/repositories',
        },
      ]
    }
    gitlab_rails['repositories_storages'] = {
      'default'  => { 'gitaly_address' => 'tcp://<gitlab_url>:8075' },
    }
  6. helmを使用して、Zoektをインストールします:

    helm install gitlab-zoekt . -f values.yaml --version <latest_version> --namespace zoekt
  7. ポッドが作成されたことを確認します。ゲートウェイとgitlab-zoekt-0ポッドの両方があるはずです:

    kubectl get pods
    NAME                                  READY   STATUS    RESTARTS   AGE
    gitlab-zoekt-0                        3/3     Running   0          13d
    gitlab-zoekt-gateway-b78dbc78-hzw28   1/1     Running   0          13d

    values.yamlにさらに変更を加える場合は、GitLab Helmチャートをインストールまたはアップグレードしてください。

  8. 完全一致コードの検索を有効にする。

  9. トップレベルグループをインデックス作成するには、次のいずれかを実行します:

GitLab Helmチャートを使用したZoektチャート

Zoektチャートは、完全一致コードの検索をサポートしています。gitlab-zoekt.installtrueに設定して、チャートをインストールできます。詳細については、gitlab-zoektを参照してください。

Zoektチャートを有効にする

Zoektチャートを有効にするには、次の値を設定します:

--set gitlab-zoekt.install=true \
--set gitlab-zoekt.replicas=2 \         # Number of Zoekt pods. If you want to use only one pod, you can skip this setting.
--set gitlab-zoekt.indexStorage=128Gi   # Disk size for the Zoekt node. Zoekt requires up to three times the repository's default branch's storage size, depending on the number of large and binary files.

CPUとメモリ使用量を設定する

GitLab.comのデフォルト設定を変更することにより、Zoektチャートのリクエストと制限を定義できます。

GitLabでZoektを設定する

GitLabのトップレベルグループのZoektを設定するには:

  1. toolboxポッドのRailsコンソールに接続します:

    kubectl exec <toolbox pod name> -it -c toolbox -- gitlab-rails console -e production
  2. 完全一致コードの検索を有効にする。

  3. トップレベルグループをインデックス作成するには、次のいずれかを実行します:

    • すべてのルートネームスペースを自動的にインデックス作成

    • 特定のトップレベルグループを手動でインデックス作成します:

      node = ::Search::Zoekt::Node.online.last
      namespace = Namespace.find_by_full_path('<top-level-group-to-index>')
      Search::Zoekt::EnabledNamespace.find_or_create_by(namespace: namespace)
      node = ::Search::Zoekt::Node.online.last
      namespace = Namespace.find_by_full_path('<top-level-group-to-index>')
      enabled_namespace = Search::Zoekt::EnabledNamespace.find_or_create_by(namespace: namespace)
      replica = enabled_namespace.replicas.find_or_create_by(namespace_id: enabled_namespace.root_namespace_id)
      replica.ready!
      node.indices.create!(zoekt_enabled_namespace_id: enabled_namespace.id, namespace_id: namespace.id, zoekt_replica_id: replica.id, state: :ready)

Zoektは、プロジェクトが更新または作成された後、そのグループ内のプロジェクトをインデックス作成できるようになりました。最初のインデックス作成では、Zoektがネームスペースのインデックス作成を開始するまで、少なくとも数分間待ちます。