AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.

외부 MongoDB 엔터프라이즈 에서 MongoDB Search 및 Vector Search 설치 및 사용

Kubernetes Operator를 사용하여 외부 MongoDB 엔터프라이즈 v8.0.10 이상 서버 에서 실행 Kubernetes 클러스터 에 MongoDB Search 및 Vector Search를 배포 할 수 있습니다. 이 절차에서는 새 또는 기존 외부 복제본 세트 배포서버 사용하기 위해 Kubernetes 클러스터 에서 mongot 프로세스 배포 하고 구성하는 방법을 보여 줍니다.

MongoDB Search 및 Vector Search를 배포 하려면 다음이 필요합니다.

  • 로컬에서 사용할 수 있는 kubeconfig 가 포함 실행 Kubernetes 클러스터 입니다.

  • Kubernetes 명령줄 도구인 kubectl이(가) 클러스터 와 통신하도록 구성되었습니다.

  • 이 튜토리얼의 명령을 실행 하려면 Bash v5.1 이상을 사용해야 합니다.

  • 데이터 저장을 위해 버전 8.0.10 이상을 실행 MongoDB 엔터프라이즈 복제본 세트 .

    MongoDB 엔터프라이즈 배포에 대해 자세히 학습하려면 MongoDB 데이터베이스 리소스 배포 및 구성을 참조하세요.

  • MongoDB 작업 관리를 위해 실행 MongoDB Cloud Manager 또는 MongoDB Ops Manager .

Kubernetes Operator를 사용하여 MongoDB Search 및 Vector Search를 설치하기 전에 다음을 수행해야 합니다.

Cloud Manager 또는 MongoDB Ops Manager UI 에 로그인하고 다음 단계를 수행하여 MongoDB Search 및 Vector Search에 대해 Cloud Manager 또는 MongoDB Ops Manager 구성합니다.

1
  1. MongoDB Cloud Manager 또는 MongoDB Ops Manager 에 로그인합니다.

  2. Deployment 탭을 클릭합니다.

  3. 수정하려는 클러스터 선택합니다.

2
  1. Modify 버튼을 클릭하여 배포서버 구성 편집기를 엽니다.

  2. Process Configuration 섹션에서 Advanced Configuration Options을 클릭합니다.

  3. Add Option 버튼을 클릭하고 드롭다운에서 setParameter Startup Option 를 선택합니다.

  4. 이름과 값을 추가한 후 Add 를 클릭하여 필드에 다음 매개변수를 하나씩 추가합니다.

    Parameter
    값

    mongotHost

    검색 호스트 이름 및 포트입니다. 예시: search-node1.example.com:27017.

    searchIndexManagementHostAndPort

    검색 호스트 이름 및 포트입니다. 예시: search-node1.example.com:27017.

    skipAuthenticationToSearchIndexManagementServer

    false

    searchTLSMode

    구성된 TLS 모드 입니다. 예시 를 들어 mongot 프로세스 TLS 연결을 허용하도록 구성된 경우 preferTLS입니다.

3
  1. Review & Deploy 버튼을 클릭합니다.

  2. 검토하고 확인하여 변경 사항을 적용 .

    Cloud Manager 또는 MongoDB Ops Manager 복제본 세트 를 롤링 재시작 하여 새 구성을 적용 .

searchCoordinator 역할 가진 사용자를 만들어야 합니다. MongoDB 버전 8.2 이상에서는 searchCoordinator 이 내장 역할 입니다. 사용자를 생성하고 사용자에게 역할 할당해야 합니다. 8.2 이전 및 8.0.10 이상의 MongoDB 버전의 경우 사용자를 만들기 전에 수동으로 역할 만들고 권한을 할당해야 합니다. 실행 중인 MongoDB 버전에 해당하는 탭 선택하여 searchCoordinator 역할 가진 사용자를 만듭니다.

터미널에서 이 튜토리얼의 샘플 코드를 실행 수 있는 환경을 준비합니다.

1

이 절차의 후속 단계에서 사용할 환경 변수를 설정하다 하려면 다음을 복사하고 환경 변수의 값을 설정하다 다음 환경 변수를 로드합니다.

export K8S_CTX="<your kubernetes context here>" export MDB_NS="mongodb" export MDB_VERSION="8.0.10" export MDB_ADMIN_USER_PASSWORD="admin-user-password-CHANGE-ME"export MDB_USER_PASSWORD="mdb-user-password-CHANGE-ME"export MDB_SEARCH_SYNC_USER_PASSWORD="search-sync-user-password-CHANGE-ME" export MDB_SEARCH_HOSTNAME="mdbs-search" # External MongoDB replica set members - REPLACE THESE VALUES with your actual external MongoDB hosts# In production, replace with your actual external MongoDB replica set membersexport MDB_EXTERNAL_HOST_0="mdbc-rs-0.mdbc-rs-svc.${MDB_NS}.svc.cluster.local:27017"export MDB_EXTERNAL_HOST_1="mdbc-rs-1.mdbc-rs-svc.${MDB_NS}.svc.cluster.local:27017"export MDB_EXTERNAL_HOST_2="mdbc-rs-2.mdbc-rs-svc.${MDB_NS}.svc.cluster.local:27017" # REPLACE with your external MongoDB keyfile secret nameexport MDB_EXTERNAL_KEYFILE_SECRET_NAME="mdbc-rs-keyfile" # REPLACE with the actual keyfile content from your external MongoDB replica set# For testing, this will be automatically generated by the MongoDB Community resourceexport MDB_EXTERNAL_KEYFILE_CONTENT="your-mongodb-keyfile-content-CHANGE-ME" # REPLACE with your actual external MongoDB replica set nameexport MDB_EXTERNAL_REPLICA_SET_NAME="mdbc-rs" export OPERATOR_HELM_CHART="mongodb/mongodb-kubernetes"export OPERATOR_ADDITIONAL_HELM_VALUES="" export MDB_CONNECTION_STRING="mongodb://mdb-user:${MDB_USER_PASSWORD}@${MDB_EXTERNAL_HOST_0}/?replicaSet=${MDB_EXTERNAL_REPLICA_SET_NAME}"
2

Helm 은 Kubernetes 에서 MongoDB 인스턴스의 배포서버 및 관리 자동화합니다. Kubernetes Operator 연산자 설치를 위한 Helm 차트 포함된 Helm 리포지토리 이미 추가한 경우 이 단계를 건너뜁니다. 그렇지 않으면 Helm 리포지토리 추가합니다.

다음 명령을 추가, 복사, 붙여넣기 및 실행 하려면 다음을 수행하세요.

helm repo add mongodb https://mongodb.github.io/helm-chartshelm repo update mongodbhelm search repo mongodb/mongodb-kubernetes
3

Kubernetes Operator는 MongoDB, MongoDBOpsManager 및 MongoDBSearch 사용자 지정 리소스를 감시하고 MongoDB deployment의 수명 주기를 관리합니다. Kubernetes Operator용 MongoDB 컨트롤러를 이미 설치한 경우 이 단계를 건너뛰세요. 그렇지 않으면 이전 단계에서 추가한 Helm 리포지토리에서 Kubernetes Operator용 MongoDB 컨트롤러를 설치합니다.

mongodb 네임스페이스 에 Kubernetes Operator용 MongoDB 컨트롤러를 설치하려면 다음을 복사하여 붙여넣고 실행 .

helm upgrade --install --debug --kube-context "${K8S_CTX}" \ --create-namespace \ --namespace="${MDB_NS}" \ mongodb-kubernetes \ ${OPERATOR_ADDITIONAL_HELM_VALUES:+--set ${OPERATOR_ADDITIONAL_HELM_VALUES}} \ "${OPERATOR_HELM_CHART}"

앞의 명령은 생성되는 mongodb 네임스페이스 에 Kubernetes 연산자를 설치합니다(아직 없는 경우). 설치 후 Kubernetes Operator는 MongoDBSearch 사용자 지정 리소스를 감시하고 MongoDB Search 및 Vector Search 배포의 수명 주기를 관리 .

1

mongot 프로세스 검색 인덱스를 생성하고 검색 쿼리를 실행 위해 외부 MongoDB deployment 에 연결하려면 인증 자격 증명 필요합니다. 이 단계에서는 다음과 같은 Kubernetes 시크릿을 생성합니다.

  • mdb-admin-user-password - MongoDB 관리자의 자격 증명 .

  • mdb-user-password - 검색 쿼리를 수행할 수 있는 권한이 있는 사용자의 자격 자격 증명 .

  • mdbc-rs-search-sync-source-password - mongot 프로세스 에서 데이터를 동기화하고 인덱스를 관리 위해 내부적으로 사용하는 전용 검색 사용자의 자격 증명 .

Kubernetes Operator는 이러한 시크릿을 MongoDB pod에 마운트합니다.

시크릿을 생성하려면 MongoDB Search 및 Vector Search를 배포 하려는 네임스페이스 에서 다음을 복사하여 붙여넣은 후 실행 .

kubectl --context "${K8S_CTX}" --namespace "${MDB_NS}" \ create secret generic mdb-admin-user-password \ --from-literal=password="${MDB_ADMIN_USER_PASSWORD}" kubectl --context "${K8S_CTX}" --namespace "${MDB_NS}" \ create secret generic mdbc-rs-search-sync-source-password \ --from-literal=password="${MDB_SEARCH_SYNC_USER_PASSWORD}" kubectl --context "${K8S_CTX}" --namespace "${MDB_NS}" \ create secret generic mdb-user-password \ --from-literal=password="${MDB_USER_PASSWORD}"
2

외부 MongoDB 에서 연결을 인증하기 위해 mongot 프로세스 외부 MongoDB 복제본 세트 멤버가 복제본 세트 멤버 간의 내부 인증 에 사용하는 것과 동일한 키 파일을 사용합니다.

외부 MongoDB 의 키 파일 콘텐츠가 포함된 Kubernetes 시크릿을 생성하려면 다음 명령을 복사하여 붙여넣고 실행 .

kubectl --context "${K8S_CTX}" --namespace "${MDB_NS}" \ create secret generic "${MDB_EXTERNAL_KEYFILE_SECRET_NAME}" \ --from-literal=keyfile="${MDB_EXTERNAL_KEYFILE_CONTENT}"
3

로드 밸런싱 없이 검색 노드 의 인스턴스 하나를 배포 할 수 있습니다. 배포 하려면 다음 단계를 완료하세요.

  1. mdbs(이)라는 MongoDBSearch 사용자 지정 리소스 만듭니다.

    이 리소스 에는 다음이 포함되어 있습니다.

    spec.source.external.hostAndPorts

    외부 MongoDB 복제본 세트 멤버 목록입니다.

    spec.source.external.keyfileSecretRef

    외부 복제본 세트 멤버가 사용하는 키 파일 시크릿입니다.

    spec.source.username

    동기화 사용자 사용자 이름 검색합니다.

    spec.source.passwordSecretRef

    동기화 사용자 비밀번호를 검색합니다.

    spec.resourceRequirements

    검색 컨테이너 에 대한 CPU 및 메모리 리소스 요구 사항입니다.

    이 사용자 지정 리소스 의 설정에 대해 자세히 학습하려면 MongoDB 검색 및 벡터 검색 설정을 참조하세요.

    kubectl apply --context "${K8S_CTX}" -n "${MDB_NS}" -f - <<EOFapiVersion: mongodb.com/v1kind: MongoDBSearchmetadata: name: mdbsspec: source: external: hostAndPorts: - ${MDB_EXTERNAL_HOST_0} - ${MDB_EXTERNAL_HOST_1} - ${MDB_EXTERNAL_HOST_2} keyfileSecretRef: name: ${MDB_EXTERNAL_KEYFILE_SECRET_NAME} key: keyfile username: search-sync-source passwordSecretRef: name: mdbc-rs-search-sync-source-password key: password resourceRequirements: limits: cpu: "3" memory: 5Gi requests: cpu: "2" memory: 3GiEOF
  2. MongoDBSearch 리소스 배포서버 완료될 때까지 기다립니다.

    MongoDBSearch 사용자 지정 리소스 적용 Kubernetes 연산자 검색 노드(pod) 배포를 시작합니다. 이 단계는 mdbs 리소스의 상태 단계가 Running가 될 때까지 실행을 일시 중지하며, 이는 MongoDB Search StatefulSet가 작동 가능함을 나타냅니다.

    echo "Waiting for MongoDBSearch resource to reach Running phase..."kubectl --context "${K8S_CTX}" -n "${MDB_NS}" wait \ --for=jsonpath='{.status.phase}'=Running mdbs/mdbs --timeout=300s
4

외부 MongoDB 인스턴스를 검색 서비스에 연결할 활성화 하려면 MongoDB Search 및 Vector Search에 대한 외부 액세스 구성해야 합니다. Kubernetes 클러스터 외부에 검색 파드를 노출하는 LoadBalancer 서비스를 생성할 수 있습니다.

다음 서비스는 Kubernetes 클러스터 외부에서 액세스할 수 있는 외부 IP 주소 또는 호스트 이름을 사용하여 포트 27027 에 MongoDBSearch 서비스를 노출합니다.

kubectl apply --context "${K8S_CTX}" -n "${MDB_NS}" -f - <<YAMLapiVersion: v1kind: Servicemetadata: name: ${MDB_SEARCH_HOSTNAME}spec: type: LoadBalancer selector: app: mdbs-search-svc ports: - name: mongot port: 27027 targetPort: 27027YAML echo "Waiting for external IP to be assigned to service ${MDB_SEARCH_HOSTNAME}..."TIMEOUT=120 # 2 minutes timeoutELAPSED=0while [ ${ELAPSED} -lt ${TIMEOUT} ]; do EXTERNAL_IP=$(kubectl get service "${MDB_SEARCH_HOSTNAME}" --context "${K8S_CTX}" -n "${MDB_NS}" -o jsonpath='{.status.loadBalancer.ingress[0].ip}' 2>/dev/null) if [ -n "${EXTERNAL_IP}" ] && [ "${EXTERNAL_IP}" != "null" ]; then echo "External IP assigned: ${EXTERNAL_IP}" break fi echo "Still waiting for external IP assignment... (${ELAPSED}s/${TIMEOUT}s)" sleep 5 ELAPSED=$((ELAPSED + 5))done if [ ${ELAPSED} -ge ${TIMEOUT} ]; then echo "ERROR: Timeout reached (${TIMEOUT}s) while waiting for external IP assignment" echo "LoadBalancer service may take longer to provision or there may be an issue" exit 1fi
5

네임스페이스 파드에서 MongoDB 복제본 세트 멤버, Kubernetes Operator용 MongoDB 컨트롤러 및 검색 노드에 대해 실행 모든 파드를 확인합니다.

echo; echo "MongoDBSearch resource"kubectl --context "${K8S_CTX}" -n "${MDB_NS}" get mdbs/mdbsecho; echo "Search pods running in cluster ${K8S_CTX}"kubectl --context "${K8S_CTX}" -n "${MDB_NS}" get pods -l app=mdbs-search-svcecho; echo "All pods in namespace ${MDB_NS}"kubectl --context "${K8S_CTX}" -n "${MDB_NS}" get pods

외부 MongoDB 엔터프라이즈 와 함께 사용할 MongoDB Search 및 Vector Search를 성공적으로 배포했으므로 이제 MongoDB cluster 에 데이터를 추가하고, MongoDB Search 및 Vector Search 인덱스를 생성하고, 데이터에 대해 쿼리를 실행 . 자세한 학습은 MongoDB 검색 및 벡터 검색 설정을 참조하세요.