Kubernetes 클러스터 에 MongoDB Search 및 Vector Search를 배포 애플리케이션 내에서 직접 강력한 검색 경험을 빌드 수 있습니다. MongoDB Search 및 Vector Search를 사용하면 기존 텍스트 검색 과 온프레미스 MongoDB database 와 자동으로 동기화 되는 AI 기반 벡터 검색 기능을 모두 빌드 할 수 있습니다. 이렇게 하면 고급 검색 기능을 제공하면서 별도의 시스템 동기화 를 유지할 필요가 없습니다. 자세한 학습 은 다음을 참조하세요.
온프레미스 배포에서 전체 텍스트 및 시맨틱 검색과 같은 검색 기능을 활성화하려면 MongoDB Search 및 벡터 검색 프로세스 (mongot)를 배포하고 이를 MongoDB 데이터베이스 배포 (mongod)와 연결해야 합니다. mongot 배포는 선택 사항이며, 제공하는 검색 기능을 사용하려는 경우에만 필요합니다.
MongoDB 데이터베이스 프로세스(mongod)는 mongot에 대한 모든 검색 쿼리의 프록시 역할을 합니다. mongod 는 쿼리 mongot로 전달하고, 이 쿼리 처리합니다. mongot 는 쿼리 결과를 mongod에 반환한 다음 결과를 사용자에게 전달합니다. mongot와 직접 상호 작용 하지 않습니다.
각 mongot 프로세스 에는 데이터베이스 또는 다른 검색 노드와 공유되지 않는 자체 영구 볼륨이 있습니다. 저장소는 데이터베이스 에서 지속적으로 제공되는 데이터로 구축된 인덱스를 유지 관리하는 데 사용됩니다. 인덱스 정의(메타데이터)는 데이터베이스 자체에 저장됩니다.
mongot 는 다음 조치를 수행합니다.
인덱스 관리합니다.
mongot는 데이터베이스 의 인덱스 정의를 업데이트하는 역할을 합니다.데이터베이스 에서 데이터를 가져옵니다.
mongot노드는 데이터베이스 에서 실시간 인덱스를 업데이트 위해 데이터베이스 에 대한 영구 연결을 설정합니다.검색 쿼리를 처리합니다.
mongod가$search,$searchMeta또는$vectorSearch쿼리 수신하면 쿼리mongot노드 중 하나로 전달합니다. 쿼리 수신한mongot는 쿼리 처리하고 데이터를 집계한 다음 결과를mongod에 반환하고, 이를 사용자에게 전달합니다.
mongot 구성 요소는 단일 MongoDB 복제본 세트 와 긴밀하게 결합되어 있으며 여러 데이터베이스 또는 복제본 세트에서 공유할 수 없습니다. 복제본 세트 배포서버 의 경우 전용 검색 노드 그룹 한 개가 복제본 세트 제공 . 샤딩된 클러스터 의 경우 각 샤드 자체 mongot 노드 그룹 유지 관리합니다. 샤드는 mongot 인스턴스를 주식 하지 않습니다.
mongot 와 mongod 간의 네트워크 연결은 양방향으로 진행됩니다.
mongot인덱스를 빌드 하고 쿼리를 실행 데 사용되는 데이터를 소싱하기 위해 복제본 세트 에 대한 연결을 설정합니다.mongodmongot에 연결하여 인덱스 관리 및 데이터 쿼리와 같은 검색 관련 작업을 전달합니다.
spec.replicas 필드 Kubernetes Operator가 배포하는 mongot 인스턴스 수를 제어합니다. 복제본 세트 소스의 경우 spec.replicas 는 mongot 의 총 파드 수를 설정합니다. 샤딩된 클러스터 소스의 경우 spec.replicas 은(는) 샤드 당 mongot 개의 파드 수를 설정합니다.
spec.replicas 를 1보다 큰 값으로 설정하다 경우, mongod 와 mongot 파드 사이에 L7 로드 밸런서 배치해야 합니다. mongod 프로세스 mongot에 대한 단일 장기 TCP 연결을 열므로 L4 로드 밸런서 쿼리를 여러 mongot 인스턴스에 분산할 수 없으며 모든 트래픽은 해당 연결 하나를 통해 흐릅니다. L7 로드 밸런서 HTTP /2 및 gRPC를 이해하므로 쿼리 커서 지속되는 동안 각 스트림 단일 mongot 에 고정하는 동시에 mongot 파드에 개별 gRPC 스트림을 분산할 수 있습니다.
MongoDB Search 및 Vector Search 배포
Kubernetes Operator의 유무에 관계없이 검색 배포서버 아키텍처 간에는 많은 차이점이 없습니다. Kubernetes Operator는 특히 데이터베이스 Kubernetes Operator에 의해 managed 경우, 완전히 작동하는 검색 노드를 배포 데 필요한 단계를 간소화합니다.
배포 하려면 Kubernetes Operator가 선택하여 mongot 파드 배포를 시작하고 spec에 지정된 영구 저장 요청하는 MongoDBSearch 사용자 지정 리소스(CR)를 적용 . Kubernetes 연산자를 통해 배포된 MongoDB Search 및 Vector Search는 동일한 Kubernetes 클러스터 내부에 있는 Kubernetes 연산자가 배포한 MongoDB 복제본 세트 또는 샤딩된 클러스터 또는 완전히 독립적인 외부 MongoDB 배포서버 (복제본 세트 또는 샤딩된 클러스터)를 대상으로 할 수 있습니다. 사용할 mongot 를 배포 하고 구성하는 방법을 학습 :
Kubernetes 에 복제본 세트 MongoDB 복제본은 MongoDB Community Edition 으로 설치 및 사용 또는 MongoDB 엔터프라이즈 Edition으로 검색 설치 및 사용을 참조하세요.
외부 MongoDB 복제본 세트, 외부 MongoDB 엔터프라이즈에서 MongoDB Search 설치 및 사용 및 Vector Search를 참조하세요.
전제 조건
MongoDB Search 및 Vector Search를 사용하려면 다음을 수행하세요.
MongoDB Community 배포서버, 완전히 작동하는 MongoDB 8.2 이상의 복제본 세트 또는 샤딩된 클러스터 Kubernetes Operator를 사용하여 Kubernetes 클러스터 내에 배포되어 있어야 합니다.
MongoDB Enterprise deployment, 다음 방법 중 하나로 완전히 작동하는 MongoDB 8.2 복제본 세트 또는 샤딩된 클러스터 배포되어 있어야 합니다.
Kubernetes Operator를 사용하는 Kubernetes 클러스터 내부
Kubernetes 클러스터 외부
Cloud Manager 또는 MongoDB Ops Manager 인스턴스
시작하기 전에 다음 사항을 고려하세요.
Kubernetes 클러스터 에서 영구 볼륨을 생성하려면 작동 중인
StorageClass이(가) 있어야 합니다. 이것이 없으면PersistentVolumeClaims이(가) 보류 중인 상태로 남아 MongoDB 지속형 저장 없을 수 있습니다.클러스터 네트워킹이 올바르게 구성되어 있어야 합니다. ClusterIP, NodePort 또는 LoadBalancer와 같은 서비스는 트래픽을 라우팅할 수 있어야 합니다. 외부 클라이언트에 액세스 필요한 경우 수신 또는 로드 밸런서 설정하다 합니다.
MongoDB 데이터베이스, MongoDB 검색하다 및 벡터 검색 워크로드는 리소스 집약적이므로 데이터베이스 및 검색하다 노드에 충분한 CPU, 메모리 및 디스크 공간이 할당되어 있어야 합니다. 제거 또는 제한을 방지하려면 Pod 사양에 요청 및 제한을 사용하는 것이 좋습니다.
사용하려는 MongoDB 연산자 또는 Helm 차트 에서 Kubernetes 버전을 지원해야 합니다. 일부 CRD 또는 API는 버전에 따라 다릅니다. 자세한 학습 은 Kubernetes 연산자 호환성을 위한 MongoDB 컨트롤러를 참조하세요.
파드 내에서 실행되는 Kubernetes 연산자 및 프로세스가 리소스를 관리할 수 있도록 필요한 RBAC 역할 및 역할 바인딩을 생성해야 합니다.
여러 개의
mongot인스턴스(spec.replicas가1보다 큼)를 원하는 경우에는 로드 밸런서 필요합니다. Kubernetes Operator는 Envoy 프록시(spec.loadBalancer.managed: {})를 자동으로 배포 하고 관리 하거나 자체 L7 로드 밸런서 (spec.loadBalancer.unmanaged)를 제공할 수 있습니다.여러
mongot인스턴스가 있는 샤딩된 클러스터 원하는 경우, 모든 샤드에 걸쳐 총 파드 수에 맞는 클러스터 리소스가 충분한지 확인합니다. 각 샤드mongot파드의 독립적인 그룹 있습니다. 로드 밸런서 트래픽을 올바른mongot그룹 으로 디스패치합니다. 수신 트래픽의 TLS SNI 필드 읽고 원본 샤드 식별하고 트래픽을 해당 샤드 에 속한mongot파드로 라우팅합니다. 따라서 각 샤드 를 고유한 검색 호스트 이름으로 구성해야 합니다.
구성 작업
다음 표는 Kubernetes Operator가 자동으로 수행하는 구성 작업과 Kubernetes 에서 MongoDB Search 및 Vector Search를 성공적으로 배포 하고 Kubernetes 또는 외부 MongoDB deployment 의 MongoDB 복제본 세트 또는 샤딩된 클러스터 에 연결하기 위해 수행해야 하는 조치를 보여줍니다.
작업 | (Inside Kubernetes) Performed by | (External MongoDB) Performed by |
|---|---|---|
Kubernetes 내에 MongoDB Ops Manager 배포 | 쿠버네티스 오퍼레이터 | 쿠버네티스 오퍼레이터 |
Kubernetes 외부에 Cloud Manager 또는 MongoDB Ops Manager 배포 | you | you |
MongoDB 복제본 세트 또는 샤딩된 클러스터 배포 | 쿠버네티스 오퍼레이터 | you |
MongoDBSearch 사용자 지정 리소스 만들기 | you | you |
MongoDB deployment 에 연결 문자열 제공 | 쿠버네티스 오퍼레이터 | you |
| 쿠버네티스 오퍼레이터 | 쿠버네티스 오퍼레이터 |
각 | 쿠버네티스 오퍼레이터 | you |
| MongoDBUser 리소스 적용하여 Kubernetes Operator와 사용자 | you |
검색 쿼리 데 필요한 권한이 있는 사용자로 MongoDB 복제본 세트 구성합니다. | you | you |
MongoDB Search 및 Vector Search 인덱스 생성 | you | you |
각 | 필요하지 않음 | you |
| 필요하지 않음 | you |
managed 로드 밸런서 구성( | 쿠버네티스 오퍼레이터 | 쿠버네티스 오퍼레이터 |
관리되지 않는 로드 밸런서 구성( | you | you |
샤드별 TLS 인증서 프로비저닝(TLS를 사용하는 샤딩된 클러스터) | you | you |
로드 밸런서 외부에 노출(외부 MongoDB + managed LB) | 필요하지 않음 | you |
다음 다이어그램은 Kubernetes 클러스터 에 MongoDB 엔터프라이즈 복제본 세트 있는 단일 MongoDB Search 및 Vector Search 인스턴스 의 배포서버 아키텍처를 보여줍니다.

다음 다이어그램은 Kubernetes Operator가 MongoDB 엔터프라이즈 복제본 세트 사용하여 MongoDB Search 및 Vector Search를 위해 Kubernetes 클러스터 에 배포하는 구성 요소를 보여줍니다.

mongot 및 mongod 프로세스가 모두 Kubernetes 클러스터 내에 배포되면 Kubernetes Operator는 두 프로세스에 대한 구성을 자동으로 수행합니다. 구체적으로 Kubernetes Operator는 다음 작업을 수행합니다.
spec.source.mongodbResourceRef를 사용하여 MongoDBSearch에서 참조하는 MongoDB CR 을 찾거나 MongoDBSearch와 이름이 같은 MongoDB CR 을 찾아 명명 규칙에 따라 찾습니다. 샤딩된 클러스터의 경우, Kubernetes Operator는 참조된MongoDB리소스 에서 샤드 토폴로지 (샤드 이름, 복제본 세트 멤버 및 mongos 라우터)를 자동 검색합니다.YAML 파일 에
mongot구성을 생성하고<MongoDBSearch.metadata.name>-search-config이라는 구성 맵에 저장합니다.구성 맵은 검색 파드에 의해 마운트되고 YAML 구성은 스타트업 시
mongot의 프로세스에서 사용됩니다. 생성된 YAML 에는 복제본 세트에 연결하는 방법, TLS 설정 등에 대한 모든 정보가 포함되어 있습니다.CR의
spec.persistence및spec.resourceRequirements설정에 따라 구성된 저장 및 리소스 요구 사항을 사용하여 이름이<MongoDBSearch.metadata.name>-search인 MongoDB Search 및 벡터 검색 스테이트풀(Stateful) 세트 배포합니다. 샤딩된 클러스터 소스의 경우, Kubernetes Operator는 샤드 당 하나의 StatefulSet를 생성합니다. 각 StatefulSet는 이름 지정 패턴<name>-search-0-<shardName>를 사용하며spec.replicas개의 파드를 포함하며, 기본값은1입니다. 이름 지정 패턴 의0은 향후 멀티 클러스터 호환성을 위해 클러스터 인덱스 예약합니다.로드 밸런서 (
spec.loadBalancer.managed)가 필요한 경우 MongoDB cluster 에 대한 단일 Envoy 프록시 배포서버를 배포합니다. Envoy 프록시는mongod및mongot파드 간의 L7 라우팅, mTLS 종료 및 gRPC 스트림 고정을 처리합니다.mongot호스트의 호스트 이름 및 포트 번호를 포함하여 필요한setParameter옵션을 추가하여 모든mongod프로세스 의 구성을 업데이트합니다. 로드 밸런서 구성할 때mongotHost및searchIndexManagementHostAndPort는mongot파드 대신 로드 밸런서 엔드포인트를 점 . 샤딩된 클러스터의 경우, 각 샤드의mongod프로세스는 해당 샤드 에 대한 로드 밸런서 엔드포인트를 수신합니다.
다음 조치를 수행해야 합니다.
MongoDBUser사용자 지정 리소스 사용하여 복제본 세트 에 사용자를 만듭니다.mongot는 이 사용자의 자격 증명 사용하여 복제본 세트 에 연결하여 데이터를 소싱합니다.사용자 이름은 임의적이지만(예시에서는
search-sync-source-user사용),searchCoordinator역할 설정하다 있어야 합니다.이 사용자의 사용자 이름 과 비밀번호는 각각
MongoDBSearch.spec.source.username및MongoDBSearch.spec.source.passwordSecretRef로 전달됩니다.비밀번호 시크릿은
MongoDBUser사양(MongoDBUser.spec.source.passwordSecretKeyRef)을 생성하는 데 사용된 사용자 비밀번호가 포함된 동일한 시크릿을 참조할 수 있습니다.
MongoDBSearch 사용자 지정 리소스 구성하고 적용 .
mongot 프로세스의 CR 설정에 대해 자세히 학습하려면 MongoDB 검색 및 벡터 검색 설정을 참조하세요.
다음 다이어그램은 외부 MongoDB 엔터프라이즈 복제본 세트 사용하여 Kubernetes 클러스터 에서 MongoDB Search 및 Vector Search의 배포서버 아키텍처를 보여줍니다.

다음 다이어그램은 Kubernetes Operator가 MongoDB 검색 및 벡터 검색을 위해 Kubernetes 클러스터 에 배포하는 구성 요소를 보여줍니다.

Kubernetes 외부에 MongoDB deployment 있는 경우 MongoDB Search 및 Vector Search를 사용하려면 Kubernetes Operator를 사용하여 mongot 를 배포 하고 몇 가지 단계를 수동으로 수행합니다. Kubernetes Operator는 검색 파드의 구성을 처리합니다. 그러나 MongoDB 배포서버 Kubernetes 외부에 있는 경우 MongoDB 노드와 네트워킹을 재구성해야 합니다.
다음과 같은 수동 구성에 대한 책임은 사용자에게 있습니다.
외부 복제본 세트 구성
외부 복제본 세트 의 모든
mongod프로세스 에서setParameter를 사용하여 다음 매개변수를 구성합니다. 구성할 때<search-service-hostname>:27028를 MongoDBSearch 서비스의 확인 가능한 실제 호스트 이름 및 포트로 바꾸세요.setParameter: mongotHost: "<search-service-hostname>:27028" searchIndexManagementHostAndPort: "<search-service-hostname>:27028" skipAuthenticationToSearchIndexManagementServer: false searchTLSMode: "disabled" # or "requireTLS" for TLS deployments useGrpcForSearch: true 단일
mongot인스턴스 (로드 밸런서 없음)의 경우mongotHost는mongot서비스 호스트 이름(<name>-search-svc:27028)을 직접 가리킵니다.로드 밸런서 있는 여러
mongot인스턴스의 경우mongotHost대신 로드 밸런서 엔드포인트를 가리킵니다.managed 로드 밸런서의 경우, Kubernetes Operator는
spec.source.mongodbResourceRef을 사용하여mongotHost를 자동으로 구성합니다.외부 MongoDB deployment의 경우
spec.loadBalancer.managed.externalHostname또는spec.loadBalancer.unmanaged.endpoint에서 지정한 로드 밸런서 엔드포인트로mongotHost를 설정하다 해야 합니다.
검색 동기화 프로세스 위해 외부 복제본 세트 에서 사용자를 생성합니다. 이 사용자는
searchCoordinator역할 있어야 합니다.- userName: "search-sync-source" password: "<your-search-sync-password>" database: "admin" roles: - role: "searchCoordinator" db: "admin"
외부 샤드 클러스터 구성
중요
표준 MongoDB 샤딩된 클러스터 배포서버 에서 클라이언트는 mongos 라우터에만 연결되며 샤드 복제본 세트에는 직접 연결되지 않습니다. 그러나 mongot을 배포 경우 각 샤드 그룹 의 mongot 프로세스는 mongos 라우터와 해당 샤드 의 모든 mongod 프로세스에 모두 연결됩니다. 따라서 각 샤드의 복제본 세트 프로세스에 직접 노출해야 mongot 합니다. 네트워크 및 방화벽 규칙이 mongos 라우터뿐만 아니라 Kubernetes 클러스터 에서 각 샤드의 mongod 인스턴스까지의 직접 연결을 허용하는지 확인하십시오.
spec.source.external.shardedCluster.shards 에 지정하는 shardName 값은 Kubernetes 명명 규칙을 따라야 합니다.
소문자 영숫자,
-또는.만 포함합니다.알파벳 문자로 시작하여 영숫자로 끝납니다.
밑줄을 포함할 수 없습니다. MongoDB 샤드 이름에 밑줄을 사용하는 경우 대시로 바꿉니다.
MongoDBSearch.metadata.name와(과)shardName의 길이를 합한 길이는 50 자 미만이어야 합니다.
shardName 는 MongoDB 의 정확한 샤드 이름과 일치할 필요가 없습니다. Kubernetes Operator는 Kubernetes 리소스의 이름을 지정하는 데만 이 이름을 사용합니다.
MongoDBSearch를 외부 샤딩된 클러스터 에 연결할 때는 다음을 수행해야 합니다.
mongos라우터 호스트 및 샤드별 복제본 세트 호스트를 사용하여 MongoDBSearch CR 에서spec.source.external.shardedCluster를 구성합니다.각 샤드의
mongod프로세스에서mongotHost및searchIndexManagementHostAndPort매개변수를 설정합니다. 각 샤드 자체mongot그룹 (또는 여러mongot인스턴스를 사용하는 경우 자체 로드 밸런서 엔드포인트)을 가리키도록 합니다.다음 간의 양방향 네트워크 연결을 보장합니다.
각 샤드의
mongod노드와 해당mongot파드(또는 로드 밸런서).mongot파드 및mongos라우터( 쿼리 라우팅용).mongot파드 및 각 샤드의mongod노드(데이터 동기화용).
외부 샤딩된 클러스터 와 함께 managed 로드 밸런서 사용하는 경우 {shardName} 자리 표시자와 함께 spec.loadBalancer.managed.externalHostname 를 지정합니다( 예시: {shardName}.search-lb.example.com). Envoy 서비스를 외부에 노출하여 각 샤드의 mongod 노드가 해당 샤드 에 고유한 호스트 이름을 사용하여 서비스에 연결할 수 있도록 합니다. 로드 밸런서 수신 연결에서 TLS SNI 필드 읽어 트래픽이 발생하는 샤드 확인하고 이를 해당 샤드에 속한 mongot 파드로 디스패치합니다. 이 SNI기반 라우팅은 로드 밸런서 샤드 간 트래픽을 구별하는 데 사용하는 유일한 메커니즘이므로 각 샤드 다른 호스트 이름을 통해 연결되어야 합니다.
Kubernetes 구성
외부 MongoDB 호스팅하다를 가리키는
spec.source.external로 MongoDBSearch CR 을 구성하고 적용합니다.검색 동기화 사용자의 비밀번호에 대한 Kubernetes 시크릿을 생성하십시오.
apiVersion: v1 kind: Secret metadata: name: search-sync-source-password stringData: password: "your-search-sync-password" 외부 MongoDB와 검색 파드 간의 양방향 연결을 보장하도록 네트워킹 및 dns 를 구성합니다. 외부 MongoDB 환경에서 검색 서비스 호스트 이름(
<search-service-hostname>)을 확인할 수 있어야 합니다.
외부 mongod 프로세스에 연결하기 위한 mongot 프로세스의 CR 설정에 대해 자세히 학습하려면 MongoDB 검색 및 벡터 검색 설정을 참조하세요.
보안
다음 이미지는 mongot 프로세스 에 대한 보안 구성을 보여줍니다. MongoDB 서버 Kubernetes 클러스터 내부에 있는 경우, Kubernetes Operator는 MongoDB Search 및 Vector Search에 대한 키 파일 인증 자동으로 설정합니다. MongoDB 서버 외부 서버인 경우, 복제본 세트의 키 파일 자격 증명이 포함된 쿠버네티스 시크릿을 생성하고 이를 MongoDBSearch CR에서 참조해야 합니다.

인증
mongot 프로세스 mTLS를 사용하여 mongod 연결을 인증합니다. TLS를 활성화 mongot 프로세스 MongoDB 서버의 TLS 인증서를 인증 위한 클라이언트 인증서로 사용합니다. 이 인증서는 mongot 이(가) 구성된 CA 인증서와 비교하여 확인됩니다. 인증 제대로 작동하려면 TLS를 활성화한 상태에서 mongot 및 mongod 를 모두 구성해야 합니다.
동일한 Kubernetes 클러스터 내에서 MongoDB 리소스 인덱스 하도록 구성된 경우, Kubernetes 연산자는 mongod CA 인증서를 mongot 에 자동으로 전파하고 MongoDB 및 MongoDBSearch 리소스가 모두 TLS에 대해 구성된 경우 검색 쿼리 연결에 mTLS를 활성화합니다. MongoDB 복제본 세트 Kubernetes 외부에 배포된 경우 복제본 세트의 CA 인증서가 포함된 Kubernetes 시크릿을 생성하고 이를 MongoDBSearch.spec.source.external.tls.ca 필드 에서 참조하여 검색 쿼리 요청에 대해 mTLS 인증 활성화 해야 합니다.
전송 계층 보안
MongoDBSearch는 TLS를 사용하여 전송 중인 데이터와 자격 증명 보호할 수 있습니다. 인덱스 관리 명령 및 검색 쿼리의 경우 spec.security.tls 필드를 설정하고 TLS 인증서를 제공합니다. 이 필드를 빈 객체({})로 설정하여 기본 설정으로 TLS 를 활성화할 수 있습니다.
버전 1.8.0부터 더 이상 사용되지 않습니다: spec.security.tls.certificateKeySecretRef 은(는) 더 이상 사용되지 않습니다. 복제본 세트 배포의 경우 Kubernetes Operator는 여전히 certificateKeySecretRef를 지원하지만 spec.security.tls.certsSecretPrefix로 마이그레이션 해야 합니다. 샤딩된 클러스터 배포의 경우, Kubernetes Operator가 각 샤드 에 대해 별도의 mongot 서버 인증서 시크릿을 읽기 때문에 certificateKeySecretRef 를 사용할 수 없습니다.
spec.security.tls.certsSecretPrefix 는 선택적 필드 입니다. 이를 지정하면 Kubernetes Operator는 읽는 모든 인증서 시크릿 이름 앞에 <certsSecretPrefix>- 을(를) 추가합니다. Kubernetes Operator는 다음 인증서 시크릿을 읽습니다.
mongot 인증서
클러스터 토폴로지 | mongot 인증서 |
|---|---|
복제본 세트 |
|
샤딩된 클러스터 |
|
로드 밸런서 인증서
spec.loadBalancer.managed를 설정하다 경우 로드 밸런서 클라이언트 인증서는 [<certsSecretPrefix>-]<name>-search-lb-0-client-cert입니다. 다음 표에는 로드 밸런서 서버 인증서가 나와 있습니다.
클러스터 토폴로지 | 인증서 |
|---|---|
복제본 세트 |
|
샤딩된 클러스터 |
|
TLS 인증서는 MongoDB 복제본 세트 사용하는 CA 인증서를 발급한 동일한 CA에서 발급하고 서명해야 합니다.
MongoDBSearch와 MongoDB 가 모두 Kubernetes 연산자에 의해 배포된 경우, 기본 mongot 및 mongod 구성은 대부분 Kubernetes 연산자 자체에서 처리됩니다. Kubernetes 클러스터 외부에 MongoDB 복제본 세트 배포 경우:
.spec.source.external.tls필드mongod구성에 사용한 것과 동일한 CA 인증서가 포함된 쿠버네티스 시크릿으로 채워야 합니다.searchTLSMode매개변수를mongod구성에서requireTLS(으)로 설정하다 해야 합니다.
로드 밸런서 mTLS
로드 밸런서 없이 mongod 는 mTLS를 사용하여 mongot 에 직접 연결합니다. mongod 는 자체 클라이언트 인증서를 제공하고 mongot 는 신뢰할 수 있는 CA에 대해 인증서의 유효성을 검사합니다.
managed 로드 밸런서 (spec.loadBalancer.managed)를 구성하는 경우 Envoy 프록시는 mongod 에서 mTLS 연결을 종료하고 mongot에 대한 새 mTLS 연결을 설정합니다. 로드 밸런서 연결을 종료하고 다시 설정하기 때문에 mongot에 연결할 때 원래의 mongod 인증서가 아닌 자체 클라이언트 인증서를 사용합니다. mongot CA는 로드 밸런서의 클라이언트 인증서를 발급한 인증 기관을 신뢰해야 합니다. Kubernetes Operator는 Envoy TLS 구성을 자동으로 관리합니다. 다음 인증서가 필요합니다.
서버 인증서 는
mongod이(가) 연결되는 Envoy 프록시의 것입니다. 로드 밸런서 이 인증서를 사용하여 수신 mTLS 연결을 종료합니다.업스트림 mTLS 연결을 설정할 때 로드 밸런서
mongot에 제공하는 Envoy 프록시에 대한 클라이언트 인증서입니다.
spec.security.tls.certsSecretPrefix 에서 정의한 명명 규칙에 따라 이러한 인증서를 Kubernetes 시크릿으로 프로비저닝합니다. 전체 이름 지정 패턴은 MongoDB Search 및 벡터 검색 설정 을 참조하세요.