Zoekt 차트

Tier: Premium, Ultimate
Offering: Self-Managed
Status: Experiment

- GitLab 15.9에 도입되었습니다. index_code_with_zoektsearch_code_with_zoekt라는 플래그와 함께 사용됩니다. 기본적으로 비활성화되어 있습니다.
- GitLab 16.6에서 GitLab.com에서 활성화되었습니다.


Self-Managed GitLab에서는 기본적으로 이 기능을 사용할 수 없습니다.
관리자는 해당 기능을 사용하도록 설정할 수 있습니다. 자세한 내용은 피처 플래그를 참조하십시오.
GitLab.com에서는 이 기능을 사용할 수 있습니다.
caution
이 기능은 Experiment입니다.
GitLab 지원팀은 Zoekt 차트의 구성 또는 문제 해결에 대해 지원할 수 없습니다.

Zoekt 차트는 정확한 코드 검색을 지원합니다.
gitlab-zoekt.installtrue로 설정하여 차트를 설치할 수 있습니다. 자세한 내용은 gitlab-zoekt를 참조하십시오.

Zoekt 차트 활성화

Zoekt 차트를 활성화하려면 다음 값들을 설정하십시오:

--set gitlab-zoekt.install=true \
--set gitlab-zoekt.replicas=2 \         # Zoekt 파드 수. 하나의 파드만 사용하려면 이 설정을 건너뛸 수 있습니다.
--set gitlab-zoekt.indexStorage=128Gi   # Zoekt 노드 디스크 크기. Zoekt는 리포지터리 저장 공간의 약 3배를 사용합니다.

CPU 및 메모리 사용량 설정

다음과 같은 GitLab.com 기본 설정을 수정하여 Zoekt 차트의 요청(requests) 및 제한(limits)을 정의할 수 있습니다:

  webserver:
    resources:
      requests:
        cpu: 4
        memory: 32Gi
      limits:
        cpu: 16
        memory: 128Gi
  indexer:
    resources:
      requests:
        cpu: 4
        memory: 6Gi
      limits:
        cpu: 16
        memory: 12Gi
  gateway:
    resources:
      requests:
        cpu: 2
        memory: 512Mi
      limits:
        cpu: 4
        memory: 1Gi

GitLab에서 Zoekt 구성

- GitLab 16.6에서 Shards가 nodes로 이름이 변경되었습니다.

GitLab의 최상위 그룹을 위해 Zoekt를 구성하려면 다음을 수행하세요:

  1. 도구 상자 pod의 Rails 콘솔에 연결합니다:

    kubectl exec <도구 상자 pod 이름> -it -c toolbox -- gitlab-rails console -e production
    
  2. Zoekt의 피처 플래그를 활성화합니다:

    ::Feature.enable(:index_code_with_zoekt)
    ::Feature.enable(:search_code_with_zoekt)
    
  3. 색인 설정을 구성합니다:

    # Zoekt 노드 중 하나를 선택합니다.
    node = ::Search::Zoekt::Node.last
    # 최상위 그룹의 이름을 사용합니다.
    namespace = Namespace.find_by_full_path('<색인을 할 최상위 그룹>')
    enabled_namespace = Search::Zoekt::EnabledNamespace.find_or_create_by(namespace: namespace)
    node.indices.create!(zoekt_enabled_namespace_id: enabled_namespace.id, namespace_id: namespace.id, state: :ready)
    

이제 Zoekt는 해당 그룹의 프로젝트를 색인화할 수 있으며, 프로젝트가 업데이트되거나 생성된 후에 작동합니다.