Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
/ / /

MongoDB 검색 및 벡터 검색 설정

Kubernetes Operator용 MongoDB 컨트롤러를 사용하여 MongoDB 8.2 이상과 함께 MongoDB Search 및 Vector Search를 배포 할 수 있습니다.

다음 예시 MongoDB Search 및 Vector Search 배포서버 위한 spec 객체 내부의 설정을 보여줍니다. 이러한 설정에 대해 자세히 학습하려면 필수 설정선택적 설정을 참조하세요.

참고

이 예시 작동하는 구성이 아닙니다. 여기에는 참조용 샘플 값으로 채워진 사용 가능한 모든 필드가 포함되어 있습니다. 일부 필드는 상호 배타적입니다( 예시: source.mongodbResourceRefsource.external). 유효한 조합은 아래 필드 설명을 참조하세요.

예시

1spec:
2 source:
3 mongodbResourceRef:
4 name: mdb
5 external:
6 hostAndPorts:
7 - mdb-rs-external-0.example.com:27017
8 - mdb-rs-external-1.example.com:27017
9 - mdb-rs-external-2.example.com:27017
10 shardedCluster:
11 router:
12 hosts:
13 - mongos1.example.com:27017
14 - mongos2.example.com:27017
15 shards:
16 - shardName: shard-0
17 hosts:
18 - shard0-node1.example.com:27018
19 - shard0-node2.example.com:27018
20 - shardName: shard-1
21 hosts:
22 - shard1-node1.example.com:27018
23 - shard1-node2.example.com:27018
24 tls:
25 ca:
26 name: mdbc-rs-ca
27 username: search-sync-source
28 passwordSecretRef:
29 name: mdbc-rs-search-sync-source-password
30 key: password
31 # x509 authentication (mutually exclusive with
32 # username/passwordSecretRef)
33 x509:
34 clientCertificateSecretRef:
35 name: mongot-x509-client-cert
36 replicas: 2
37 loadBalancer:
38 # Option 1: Operator-managed Envoy load balancer
39 managed:
40 externalHostname: "search.apps.example.com"
41 resourceRequirements:
42 requests:
43 cpu: "100m"
44 memory: 128Mi
45 limits:
46 cpu: "500m"
47 memory: 512Mi
48 deployment:
49 spec:
50 template:
51 spec:
52 nodeSelector:
53 kubernetes.io/os: linux
54 # Option 2: User-provided (BYO) load balancer
55 # (mutually exclusive with managed)
56 unmanaged:
57 endpoint: "search-lb.corp.example.com:443"
58 security:
59 tls:
60 certificateKeySecretRef:
61 name: mdbs-tls-secret
62 certsSecretPrefix: my-prefix
63 resourceRequirements:
64 limits:
65 cpu: "3"
66 memory: 5Gi
67 requests:
68 cpu: "2"
69 memory: 3Gi
70 persistence:
71 single:
72 storage: 16Gi
73 storageClass: standard
74 version: "0.64.0"
75 statefulSet:
76 spec:
77 template:
78 spec:
79 nodeSelector:
80 kubernetes.io/os: linux
81 jvmFlags:
82 - -Xms2g
83 - -Xmx2g
84 autoEmbedding:
85 embeddingModelAPIKeySecret:
86 name: embedding-model-api-query-key
87 providerEndpoint: https://ai.mongodb.com/v1/embeddings
88 logLevel: INFO
89 prometheus: {}

이 섹션에서는 MongoDB 검색하다 및 벡터 검색 리소스 배포하는 데 필요한 설정에 대해 설명합니다. 사용자 지정 리소스 정의(CRD)에서 필수 설정만 정의하는 경우, Kubernetes Operator용 MongoDB 컨트롤러는 모든 선택 사항 설정에 기본값을 사용하여 MongoDBSearch를 구성합니다.

apiVersion

유형: 문자열

MongoDB Kubernetes 리소스 스키마 의 버전입니다. 값을 mongodb.com/v1(으)로 설정합니다.

kind

유형: 문자열

생성할 MongoDB Kubernetes 리소스 의 종류입니다. 이를 MongoDBSearch로 설정합니다.

metadata.namespace

유형: 문자열

MongoDBSearch 리소스 생성해야 하는 네임스페이스입니다. MongoDBSearch 및 MongoDB 또는 MongoDBCommunity 리소스의 자동 구성을 활용하려면 MongoDB 또는 MongoDBCommunity 리소스 와 동일한 네임스페이스 에 MongoDBSearch 리소스 생성해야 합니다.

metadata.name

유형: 문자열

MongoDBSearch 리소스 의 고유 식별자입니다. 리소스 이름은 최대 44 자까지 가능합니다.

이 섹션에서는 MongoDB 검색 및 벡터 검색 리소스에 대한 선택 사항 설정에 대해 설명합니다. CRD에서 선택 사항 설정을 생략하고 필수 설정만 정의하는 경우, Kubernetes 연산자용 MongoDB 컨트롤러는 모든 선택 사항 설정에 기본값을 사용하여 MongoDBSearch를 구성합니다.

spec.source

유형: 객체

mongot에 대한 MongoDB 소스를 설명하는 설정입니다. 소스는 복제본 세트 또는 샤딩된 클러스터 일 수 있습니다. 이 설정은 다음과 같은 경우에 필요합니다.

  • MongoDB 은(는) 외부입니다.

  • MongoDB MongoDBSearch와 이름이 다릅니다.

MongoDBSearch 리소스 항상 MongoDB 배포서버 에 연결되어 있어야 합니다. MongoDB 또는 MongoDBCommunity CRD와 함께 Kubernetes Operator를 사용하여 배포하고 spec.source 가 비어 있는 경우, Kubernetes Operator는 metadata.name 에 따라 다음을 사용하여 Kubernetes에서 데이터베이스 찾습니다.

  • 동일한 네임스페이스 에서 MongoDBSearch의 metadata.name 에 대해 설정하다 것과 동일한 이름을 가진 MongoDB 또는 MongoDBCommunity 리소스를 찾습니다.

  • <MongoDBSearch.metadata.name>-search-sync-source-password 시크릿에서 mongot 사용자의 비밀번호 시크릿을 찾습니다.

spec.source.mongodbResourceRef.name

유형: 문자열

이 MongoDB Search 및 벡터 검색 리소스 와 연결할 MongoDB 또는 MongoDBCommunity 리소스 의 이름입니다. Kubernetes Operator는 복제본 세트와 샤딩된 클러스터를 모두 지원합니다. 동일한 MongoDB 또는 MongoDBCommunity 리소스 참조하는 MongoDBSearch 리소스 두 개 이상 가질 수 없습니다. 다른 이름을 지정하는 경우, MongoDB 검색 및 벡터 검색을 활성화 하려는 MongoDB 또는 MongoDBCommunity 를 명시적으로 점 야 합니다.

If you reference a 클러스터 MongoDB 리소스, the Kubernetes Operator auto-discovers the 샤드 토폴로지 (샤드 이름, 복제본 세트, mongos routers) and creates per-샤드 mongot StatefulSets automatically. 추가 외부 구성을 수행할 필요가 없습니다.

MongoDB 또는 MongoDBCommunity 리소스 동일한 Kubernetes 클러스터 에 배포되고 MongoDBSearch 리소스 와 동일한 네임스페이스 에 있는 경우에만 이 필드 사용합니다. 이 필드 설정하다 하면 Kubernetes Operator가 자동으로 다음을 수행합니다.

  • 데이터베이스 에 대한 적절한 연결 문자열을 설정합니다.

  • 검색 기능을 활성화 데 필요한 매개 변수를 설정하여 MongoDB database 배포를 재구성하고 검색 포드의 주소를 구성합니다.

데이터베이스 Kubernetes 외부에 배포되었거나 다른 네임스페이스 에 있는 경우 spec.external 를 사용하여 데이터베이스 에 대한 연결을 구성합니다. 이 필드 spec.external와 상호 배타적입니다.

생략하면 Kubernetes Operator는 이 MongoDBSearch 리소스 와 이름이 같은 MongoDB 또는 MongoDBCommunity 리소스 찾습니다.

spec.source.username

유형: 문자열

mongod(으)로 mongot 을(를) 인증하는 데 사용할 사용자 이름입니다. 지정된 사용자는 searchCoordinator 역할 있어야 합니다. 생략하면 Kubernetes 연산자는 사용자 이름 search-sync-source로 가정합니다.

spec.source.passwordSecretRef.name

유형: 문자열

mongot 이(가) mongod(으)로 인증하는 데 사용해야 하는 비밀번호가 포함된 시크릿의 이름입니다. 생략하면 기본값은 <MongoDBSearch.metadata.name>-search-sync-source-password입니다.

spec.source.passwordSecretRef.key

유형: 문자열

비밀번호 값이 시크릿에 저장되는 키입니다. 생략하면 기본값은 password입니다.

spec.source.x509

유형: 객체

mongot 동기화 소스 연결에 대한 x509 클라이언트 인증서 인증 구성합니다. 이 필드 mongot 로 설정하다 하면 사용자 이름 과 비밀번호 대신 x509 를 사용하여 MongoDB 에 인증합니다.

이 필드 spec.source.passwordSecretRefspec.source.username와 상호 배타적입니다. x509 및 비밀번호 인증 모두 지정하는 경우 Kubernetes Operator는 구성을 거부합니다.

spec.source.x509.clientCertificateSecretRef

유형: 객체

MongoDB 동기화 소스에 인증하기 위한 x509 클라이언트 인증서와 키가 포함된 시크릿입니다. 시크릿에는 다음 키가 포함되어야 합니다.

  • tls.crt — 클라이언트 인증서(필수)

  • tls.key — 개인 키(필수)

  • tls.keyFilePassword — 개인 키의 비밀번호(선택 사항)

spec.source.x509을 설정하다 경우 이 필드 지정해야 합니다.

예시

spec:
source:
x509:
clientCertificateSecretRef:
name: mongot-x509-client-cert

다음 설정은 외부 MongoDB 배포서버 에 대한 연결을 구성할 때만 필요합니다.

spec.source.external

유형: 객체

외부 데이터 소스 설명하는 설정입니다. 이 객체 외부 MongoDB 에 연결하기 위한 MongoDB 검색 및 벡터 검색 리소스 의 설정을 설명합니다. 이러한 설정은 Kubernetes Operator를 사용하여 배포되지 않은 외부 MongoDB 에 연결하려는 경우에만 지정해야 합니다. 지정된 경우 이러한 설정이 spec.source.mongodbResourceRef.name에 대한 설정을 재정의합니다. Kubernetes Operator를 사용하여 동일한 클러스터 에 MongoDB 설치한 경우 이러한 설정은 선택 사항입니다.

spec.source.external.hostAndPorts

유형: 문자열 배열

외부 복제본 세트 의 호스트 이름 및 포트 목록입니다. MongoDB 복제본 세트 에 대한 호스팅하다 시드 목록 입니다. mongot 는 복제본 세트 모드 에서 데이터베이스 에 연결하고 db.hello()을 사용하여 다른 모든 노드의 목록을 가져옵니다.

이 필드 spec.source.external.shardedCluster와 상호 배타적입니다. 복제본 세트 소스에는 hostAndPorts 를 사용하고 샤딩된 클러스터 소스에는 shardedCluster 를 사용합니다.

예시

hostAndPorts:
- mdbc-rs-0.my-external-domain.example.com:27017
- mdbc-rs-1.my-external-domain.example.com:27017
- mdbc-rs-2.my-external-domain.example.com:27017
spec.source.external.tls

유형: 객체

외부 MongoDB database 에 연결할 때 mongot 사용해야 하는 TLS 설정입니다.

spec.source.external.tls.ca.name

유형: 문자열

mongod 노드에서 사용하는 TLS 인증서를 발급한 인증 기관의 신뢰할 수 있는 체인이 포함된 시크릿의 이름입니다.

예시

spec:
source:
external:
tls:
ca:
name: trusted-ca

이 시크릿의 ca.crt 키 아래에 인증서(또는 인증서 체인)를 지정해야 합니다.

예시

name: Secret
apiVersion: v1
metadata:
name: trusted-ca
data:
ca.crt: |
-----BEGIN CERTIFICATE-----
MIIDBTCCAe2gAwIBAgIIH3EOUAGAsx0wDQYJKoZIhvcNAQELBQAwFTETMBEGA1UE
[...]
U/4rN8Ias/FONYFRtGfs9uXHmo2MP04BF+9ED2dlbNDUbat+6XCozLJj98nI4VEi
qaV3JrVFHTgN
-----END CERTIFICATE-----

다음 설정은 외부 MongoDB 샤딩된 클러스터 에 대한 연결을 구성할 때만 필요합니다. 기존 spec.source.external 설정을 확장합니다.

참고

spec.source.external.hostAndPorts ( 복제본 세트의 경우)와 spec.source.external.shardedCluster 은 상호 배타적입니다. 그 중 하나만 지정합니다.

spec.source.external.shardedCluster

유형: 객체

외부 샤딩된 MongoDB 클러스터 mongot의 데이터 소스 로 선언합니다. mongos 라우터 및 샤드별 복제본 세트 멤버에 대한 구성이 포함되어 있습니다.

MongoDB 샤딩된 클러스터 Kubernetes 외부에 배포되고 Kubernetes Operator가 managed 하지 않는 경우에만 이 옵션을 사용합니다. MongoDB CRD를 사용하여 배포된 연산자 managed 샤딩된 클러스터의 경우 spec.source.mongodbResourceRef 를 대신 사용합니다. Kubernetes Operator는 샤드 토폴로지 자동 검색합니다.

예시

spec:
source:
external:
shardedCluster:
router:
hosts:
- "mongos1.external:27017"
- "mongos2.external:27017"
shards:
- shardName: "shard-0"
hosts:
- "shard0-node1.external:27018"
- "shard0-node2.external:27018"
- shardName: "shard-1"
hosts:
- "shard1-node1.external:27018"
- "shard1-node2.external:27018"
spec.source.external.shardedCluster.router

유형: 객체

외부 샤딩된 클러스터 의 mongos (라우터) 인스턴스에 대한 구성입니다.

spec.source.external.shardedCluster.router.hosts

유형: 문자열 배열

host:port 형식의 mongos 라우터 인스턴스에 대한 엔드포인트 목록입니다. 모든 mongot 인스턴스가 이 라우터에 연결됩니다. 항목을 하나 이상 지정합니다.

예시

router:
hosts:
- "mongos1.external:27017"
- "mongos2.external:27017"
spec.source.external.shardedCluster.shards

유형: 객체 배열

외부 MongoDB cluster 에 있는 모든 샤드의 목록입니다. 각 항목은 하나의 샤드의 복제본 세트 설명합니다. Kubernetes Operator는 각 샤드 에 대해 하나의 mongot StatefulSet를 생성하며, 각 StatefulSet에는 spec.replicas에 지정된 수의 파드가 포함됩니다. 샤드 항목을 하나 이상 지정합니다.

spec.source.external.shardedCluster.shards[*].shardName

유형: 문자열

샤드 의 논리적 이름입니다. Kubernetes Operator는 이 이름을 Kubernetes 리소스 명명(StatefulSets, Services, Secrets)에 사용합니다. 이 값은 MongoDB 샤드 이름과 다를 수 있습니다.

명명 제약 조건:

  • 모든 샤드에서 고유해야 합니다.

  • 소문자 영숫자, 하이픈(-), 마침표(.)를 허용하고 이름이 알파벳 문자로 시작하고 다음으로 끝나도록 요구하는 Kubernetes DNS 하위 도메인 이름 규칙(RFC 1123)을 준수해야 합니다. 영숫자. 밑줄(_)은 허용되지 않습니다.

  • metadata.name 와(과) shardName 의 길이를 합한 길이는 50 자 미만이어야 합니다.

예시

shards:
- shardName: "shard-0"
hosts:
- "shard0-node1.external:27018"
spec.source.external.shardedCluster.shards[*].hosts

유형: 문자열 배열

이 샤드 에 대한 mongod 복제본 세트 멤버의 엔드포인트 목록(host:port 형식)입니다. mongot 인스턴스는 이러한 호스트의 데이터를 복제합니다. 항목을 하나 이상 지정합니다.

각 복제본 세트 (샤드)에는 자체 mongot 인스턴스 그룹 있으며, 이 그룹은 해당 복제본 세트 의 데이터만 소싱합니다. 서로 다른 샤드가 동일한 mongot 인스턴스를 주식 하지 않습니다.

예시

shards:
- shardName: "shard-0"
hosts:
- "shard0-node1.external:27018"
- "shard0-node2.external:27018"
- "shard0-node3.external:27018"
spec.security

유형: 객체

mongot 수신 서버 에 대한 보안 설정입니다.

spec.security.tls

유형: 객체

mongot 대한 TLS 설정입니다. 생략하면 mongot 는 들어오는 연결에 TLS를 사용하지 않습니다.

spec.security.tls.certificateKeySecretRef.name

유형: 문자열

버전 1.8.0부터 더 이상 사용되지 않습니다: 대신 spec.security.tls.certsSecretPrefix 을(를) 사용하세요.

개인 키(tls.key)와 인증서(tls.crt)를 포함하는 동일한 네임스페이스 에 있는 TLS 시크릿의 이름입니다. 시크릿은 kubernetes.io/tls 유형(cert-manager에서 발급)이거나 수동으로 생성할 수 있습니다.

Kubernetes Operator는 이전 버전과의 호환성을 위해 복제본 세트 배포에 대해 이 필드 계속 지원합니다. 그러나 다음과 같습니다.

  • 샤딩된 클러스터 배포의 경우 Kubernetes Operator는 유효성 검사 중에 이 필드 거부합니다. 단일 시크릿 참조는 샤드별 인증서를 포함할 수 없으므로 대신 spec.security.tls.certsSecretPrefix 를 사용합니다.

  • certificateKeySecretRefcertsSecretPrefix를 모두 지정하는 경우 복제본 세트 배포에 certificateKeySecretRef 이(가) 우선합니다.

새 배포의 경우 복제본 세트에도 spec.security.tls.certsSecretPrefix 를 사용합니다.

spec.security.tls.certsSecretPrefix

유형: 문자열

Kubernetes 연산자가 명명 규칙에 따라 TLS 시크릿 이름을 파생하는 데 사용하는 접두사입니다. 이 필드 설정하다 하면 Kubernetes Operator는 각 구성 요소에 대한 명시적인 시크릿 참조를 요구하는 대신 이러한 패턴에 따라 시크릿을 찾습니다.

구성 요소
시크릿 이름 패턴

복제본 세트의 mongot 서버 인증서

{certsSecretPrefix}-{name}-search-cert

샤딩된 mongot 인증서( 샤드 당)

{certsSecretPrefix}-{name}-search-0-{shardName}-cert

managed 로드 밸런서 서버 인증서

{certsSecretPrefix}-{name}-search-lb-0-cert

managed 로드 밸런서 클라이언트 인증서

{certsSecretPrefix}-{name}-search-lb-0-client-cert

구제척으로:

  • {name} MongoDBSearch 리소스 의 metadata.name 입니다.

  • {shardName} 다음의 값입니다. spec.source.external.shardedCluster.shards[*].shardName

생략하면 이 필드 기본적으로 빈 문자열이 되고 Kubernetes Operator는 대신 spec.security.tls.certificateKeySecretRef 을(를) 사용합니다.

참고

샤딩된 클러스터 배포의 경우 certificateKeySecretRef 대신 certsSecretPrefix 를 사용해야 합니다. Kubernetes Operator는 샤딩된 토폴로지에 대해 certificateKeySecretRef 를 거부하는데, 이는 단일 시크릿 참조가 샤드별 인증서를 커버할 수 없기 때문입니다.

예시

spec:
security:
tls:
certsSecretPrefix: my-prefix
spec.replicas

유형: integer

배포 할 mongot pod의 수입니다. 복제본 세트 소스의 경우 mongot 파드의 총 개수입니다. 샤딩된 클러스터 소스의 경우 샤드 당 mongot 파드의 수입니다.

spec.replicas1보다 큰 경우 mongod 와 여러 mongot 인스턴스 간에 트래픽을 라우팅하도록 spec.loadBalancer 도 구성해야 합니다.

생략하는 경우 기본값은 1입니다.

예시

spec:
replicas: 2
spec.loadBalancer

유형: 객체

mongod (또는 mongos)와 mongot 간의 L7 로드 밸런싱을 위한 구성입니다. 이 필드 spec.replicas1보다 큰 경우 필수입니다. spec.replicas1인 경우 이 필드 선택 사항입니다. 단일 mongot 인스턴스 에 대해서도 로드 밸런서 구성하여 나중에 확장 수 있도록 준비할 수 있습니다.

managed 또는 unmanaged 중 정확히 하나만 설정하다 해야 합니다.

로드 밸런서 mongod 클라이언트에 표시되는 TLS 인증서와 해당 인증서에 포함되어야 하는 호스트 이름에 영향을 줍니다.

  • 로드 밸런서 없으면 mongod 이(가) mongot에 직접 연결됩니다. mongod 에게 제공된 TLS 인증서는 mongot의 자체 인증서입니다. MongoDB 클러스터 Kubernetes 외부에 있는 경우 mongot 서비스는 외부 도메인에 노출됩니다. mongot TLS 인증서의 SAN(주체 대체 이름) 필드 에 해당 외부 도메인을 포함해야 합니다.

  • managed 로드 밸런서 (spec.loadBalancer.managed)를 사용하는 경우 Envoy 프록시는 mongot에 직접 연결되는 유일한 구성 요소입니다. Envoy는 내부 헤드리스 서비스 FQDN을 사용하여 mongot 파드에 도달합니다.

    • 복제본 세트: <pod>.<name>-search-svc.<ns>.svc.cluster.local

    • 샤딩된 클러스터: <pod>.<name>-search-0-<shard>-svc.<ns>.svc.cluster.local

    SAN 필드 에서 이러한 클러스터 로컬 도메인을 사용하여 mongot TLS 인증서를 발급합니다. 와일드카드 인증서를 사용하여 mongot 파드 수가 변경될 때 인증서를 재발급하지 않도록 할 수 있습니다. 외부 mongod 프로세스는 Envoy 프록시의 TLS 인증서를 확인하므로 mongot 인증서가 아닌 Envoy 인증서의 SAN에 외부 도메인을 포함합니다.

단일 mongot 파드를 처음 배포 경우에도 managed 로드 밸런서 활성화합니다. 로드 밸런서 있으면 로드 밸런서 mongodmongot 사이에 이미 있기 때문에 나중에 spec.replicas 를 확장하다 TLS 인증서의 도메인이 안정적으로 유지됩니다.

spec.loadBalancer.managed

유형: 객체

연산자 managed Envoy 로드 밸런서 구성합니다. Kubernetes Operator는 올바른 라우팅, mTLS, HTTP/2+gRPC 스트림 고정을 사용하여 Envoy 프록시를 배포하고 관리합니다. 기본값을 사용하려면 이 필드 빈 객체 ({})로 설정합니다.

이 필드 spec.loadBalancer.unmanaged와 상호 배타적입니다.

예시

spec:
loadBalancer:
managed: {}
spec.loadBalancer.managed.externalHostname

유형: 문자열

Envoy 프록시가 수신 요청의 SNI 일치를 위해 예상하는 호스트 이름입니다. Kubernetes Operator는 이 값을 사용하여 수신 mongod 연결의 TLS SNI 필드 일치하는 라우팅 규칙을 구성합니다. Envoy TLS 서버 인증서의 SAN(주체 대체 이름) 필드 에 이 호스트 이름을 포함해야 합니다.

샤딩된 클러스터의 경우 값에는 Kubernetes Operator가 샤드 확장하는 {shardName} 자리 표시자가 포함되어야 합니다. 각 샤드 고유한 호스트 이름을 가지며, Envoy TLS 서버 인증서에는 해당 SAN의 모든 확장 샤드 호스트 이름이 포함되어야 합니다. 와일드카드 인증서를 사용하면 단일 인증서로 모든 샤드를 처리하고 샤드 추가 시 재발급을 방지할 수 있습니다.

이 필드 MongoDB 외부에서 managed 경우( Kubernetes Operator가 배포하지 않음) 필수입니다. MongoDB 동일한 클러스터 에서 연산자 관리되는 경우, Kubernetes 연산자가 라우팅을 자동으로 구성하므로 이 필드 생략합니다.

예시

# Replica set with external MongoDB
spec:
loadBalancer:
managed:
externalHostname: "search.apps.example.com"
# Sharded cluster with external MongoDB
spec:
loadBalancer:
managed:
externalHostname: "{shardName}.search.example.com"
spec.loadBalancer.managed.resourceRequirements

유형: core/v1/ResourceRequirements

Envoy 컨테이너 요청 하고 제한할 수 있는 CPU 및 메모리입니다. 이 설정을 지정하면 Kubernetes Operator가 기본값을 완전히 대체합니다.

생략하면 Kubernetes Operator는 다음 기본값 을 사용합니다.

requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 512Mi

예시

spec:
loadBalancer:
managed:
resourceRequirements:
requests:
cpu: "200m"
memory: "256Mi"
limits:
cpu: "1"
memory: "1Gi"
spec.loadBalancer.managed.deployment

유형: 객체

Kubernetes 연산자가 연산자가 생성한 Envoy 배포에 병합하는 재정의입니다. MongoDB 리소스에서 spec.statefulSet 과 동일한 규칙을 따릅니다. 생략하면 Kubernetes Operator는 Envoy 배포에 기본값을 사용합니다.

이 객체 에는 두 개의 필드가 포함되어 있습니다.

  • metadata — Kubernetes 연산자가 Envoy 배포 메타데이터 에 병합하는 labelsannotations 필드를 포함합니다.

  • specapps/v1/DeploymentSpec 객체. Kubernetes Operator는 이러한 재정의를 Envoy 배포 사양에 병합합니다.

예시

spec:
loadBalancer:
managed:
deployment:
spec:
template:
spec:
nodeSelector:
kubernetes.io/os: linux
spec.loadBalancer.unmanaged

유형: 객체

사용자 제공 (Bring Yourself) L7 로드 밸런서 구성합니다. 사용자는 외부에서 로드 밸런서 배포하고 구성할 책임이 있습니다.

이 필드 spec.loadBalancer.managed와 상호 배타적입니다.

spec.loadBalancer.unmanaged.endpoint

유형: 문자열

host:port 형식의 BIO 로드 밸런서 의 엔드포인트입니다. Kubernetes Operator는 이 값을 mongod 구성에 mongotHostsearchIndexManagementHostAndPort로 씁니다.

이 필드 Kubernetes 연산자가 mongod 매개변수를 구성하기 위해 엔드포인트가 필요하기 때문에, Kubernetes 연산자가 MongoDB 배포서버 (spec.source.mongodbResourceRef 사용)를 관리하는 경우에만 필요합니다. 로드 밸런서 와 MongoDB 모두 외부에 있는 경우( Kubernetes Operator에서 managed 하지 않음) mongod 매개변수를 직접 구성하므로 이 필드 필요하지 않습니다.

샤딩된 클러스터의 경우 값에는 Kubernetes Operator가 샤드 확장하는 {shardName} 자리 표시자가 포함되어야 합니다.

예시

# Replica set example
spec:
loadBalancer:
unmanaged:
endpoint: "search-lb.corp.example.com:443"
# Sharded cluster example
spec:
loadBalancer:
unmanaged:
endpoint: "{shardName}-lb.corp.example.com:443"
spec.resourceRequirements

유형: core/v1/ResourceRequirements

mongodb-search 컨테이너 요청 수 있고 제한할 수 있는 CPU 및 메모리입니다. spec.statefulSet(으)로 재정의하는 대신 이 필드 사용하여 리소스 할당을 사용자 지정하는 것이 좋습니다.

spec.jvmFlags에서 JVM 힙 크기를 재정의하지 않으면 Kubernetes Operator는 기본값 힙 크기(-Xmx)를 mongot 파드에서 사용할 수 있는 메모리의 50%로 설정합니다. spec.resourceRequirements 를 적절히 조정하여 파드 리소스와 JVM 힙 크기를 모두 제어합니다.

생략하면 Kubernetes Operator는 다음 기본값 을 사용합니다.

requests:
cpu: 2
memory: 2G
spec.resourceRequirements.limits

유형: 객체

mongodb-search 컨테이너 사용할 수 있는 리소스 , CPU 및 메모리의 상한선입니다. 기본값 으로 제한은 설정하다 있지 않습니다. 생략하면 파드가 제한되지 않으므로 노드 의 모든 리소스를 사용할 수 있습니다. 워크로드 에 따라 제한을 설정하는 것이 좋습니다.

spec.resourceRequirements.requests

유형: 객체

mongodb-search 컨테이너 에 대해 요청된 CPU 및 메모리의 양입니다. 생략하면 Kubernetes Operator는 다음 기본값 을 사용합니다.

requests:
cpu: 2
memory: 2G
spec.persistence.single

유형: 객체

MongoDB Search 및 Vector Search 인덱스가 저장되는 MongoDB Search 및 Vector Search 지속성 볼륨에 대한 스토리지 구성입니다. 각 검색 인스턴스 (pod)에는 인덱스를 유지 관리하기 위한 자체 독립적인 저장 가 있으며, 이는 MongoDB database 와 공유되지 않습니다. 인덱스 메타데이터 (정의)만 데이터베이스 자체에 저장됩니다.

스칼라
데이터 유형
설명

labelSelector

문자열

storage

문자열

마운트해야 하는 영구 볼륨 의 최소 크기입니다. 이 값은 정수 뒤에 JEDEC 표기법으로 저장 단위를 붙여 표현합니다.

기본값은 16Gi입니다.

예시를 들어 복제본 세트 60 기가바이트의 저장 공간이 필요한 경우 이 값을 60Gi로 설정하다.

storageClass

문자열

영구 볼륨 클레임에 지정된 저장 유형입니다. 이 저장 유형을 StorageClass 객체로 생성한 후 이 객체 사양에서 사용할 수 있습니다.

StorageClass reclaimPolicyRetain 으로 설정하다 해야 합니다. 이렇게 하면 영구 볼륨 클레임 이 제거될 때 데이터가 유지됩니다.

MongoDBSearch는 single 지속성 필드 만 지원합니다. 생략하면 Kubernetes Operator가 spec.persistence.single.storage10GB로 설정합니다.

spec.logLevel

유형: 문자열

mongot 로그의 상세도입니다. 값은 다음 중 하나일 수 있습니다.

  • TRACE

  • DEBUG

  • INFO

  • WARN

  • ERROR

생략하는 경우 기본값은 INFO입니다.

spec.prometheus

유형: 객체

이 기능은 v1.6 이상에서만 사용할 수 있습니다.

Prometheus 지표 엔드포인트를 활성화 구성입니다. 생략하면 mongot 의 지표 엔드포인트가 비활성화됩니다. 기본값 포트(9946)에서 Prometheus 지표 엔드포인트를 활성화 하려면 spec.prometheus 필드 에 빈 {} 객체 지정합니다. 포트를 변경하려면 spec.prometheus.port 필드 에 설정하다 .

spec.prometheus.port

유형: 문자열

Prometheus 지표 엔드포인트를 활성화 할 포트입니다. 기본값 으로 Prometheus 지표 엔드포인트는 포트 9946에서 활성화됩니다.

중요

자동 임베딩은 MongoDB Community Edition 배포서버 대해서만 미리 보기 기능 으로 사용할 수 있습니다. 기능 및 해당 설명서는 미리 보기 기간에 언제든지 변경될 수 있습니다. 자세히 학습 미리 보기 기능을 참조하세요.

spec.autoEmbedding

유형: 객체

컬렉션 의 텍스트 데이터에 대한 자동 임베딩 을 위한 구성입니다.

spec.autoEmbedding.embeddingModelAPIKeySecret

유형: 객체

임베딩 모델 제공자 API 키에 대한 구성입니다. 자동 임베딩을 활성화 하려면 두 개의 키를 생성해야 하는데, 하나는 컬렉션 의 데이터에 대해 인덱스 시점에 임베딩을 생성하기 위한 것이고 다른 하나는 쿼리 시점에 쿼리 텍스트에 대한 임베딩을 생성하기 위한 것입니다. 아직 키가 없는 경우 두 개의 Atlas 프로젝트에서 키를 생성하는 것이 좋습니다. Atlas UI 에서 Atlas 프로젝트의 키를 만드는 방법에 대해 자세히 알아보려면 API 키 관리를 참조하세요.

spec.autoEmbedding.embeddingModelAPIKeySecret.name

유형: 문자열

mongot 가 인덱스 및 쿼리 시점에 임베딩을 생성하는 데 사용해야 하는 임베딩 모델 API 키가 포함된 시크릿의 이름입니다.

spec.autoEmbedding.providerEndpoint

유형: 문자열

임베딩 생성을 위한 임베딩 모델 엔드포인트 URL . 값은 Atlas UI 에서 키를 생성하는지(권장), 임베딩 서비스에서 직접 생성하는지(Voyage AI)에 따라 달라집니다. 다음에서 생성된 키의 경우:

  • Atlas UI, 값은 https://ai.mongodb.com/v1/embeddings (기본값)입니다.

  • Voyage AI, 값은 다음과 같습니다. https://api.voyageai.com/v1/embeddings

spec.jvmFlags

유형: 문자열 배열

mongot 프로세스 에 전달된 JVM 플래그입니다. Kubernetes Operator는 --jvm-flags "<all flags space-separated>"를 사용하는 mongot 스타트업 명령에 수정하지 않은 플래그를 포함합니다.

이 필드 에 -Xms 또는 -Xmx 을 지정하지 않으면 Kubernetes Operator는 둘 다 spec.resourceRequirements.requests.memory의 절반으로 설정하여 힙 크기를 자동으로 계산합니다. 리소스 요구 사항을 지정하지 않으면 Kubernetes Operator는 기본값 인 4Gi 메모리 요청 사용하여 약 -Xmx2048m -Xms2048m를 생성합니다.

자체 -Xms 또는 -Xmx 값을 제공하는 경우 Kubernetes Operator는 해당 값을 사용하며 값을 재정의하지 않습니다. Kubernetes 연산자는 항상 연산자 계산 플래그 뒤에 제공한 플래그를 추가합니다.

자세한 학습 은 mongot 에 대한 하드웨어 크기 조정을 참조하세요.

예시

spec:
jvmFlags:
- -Xms2g
- -Xmx2g
spec.version

유형: 문자열

mongodb-search Docker 이미지의 버전입니다. 생략하면 Kubernetes 연산자가 자동으로 최신 버전의 MongoDBSearch를 선택합니다. Kubernetes 연산자 버전 업그레이드 시 자동 업그레이드를 방지하도록 명시적으로 설정할 수 있습니다.

spec.statefulSet

유형: apps/v1/StatefulSet

mongot 파드 배포를 위해 생성된 StatefulSet에 대한 사양으로, Kubernetes 연산자가 적용하는 설정을 덮어씁니다. 재정의는 항상 마지막에 적용됩니다. spec.statefulSet.specspec.statefulSet.metadata 필드를 모두 지원합니다.

참고

spec.statefulSet을(를) 사용하여 리소스 요구 사항 또는 지속성 설정을 설정하다 하지 마세요. 대신 spec.resourceRequirementsspec.persistence 필드를 각각 사용합니다.

Kubernetes Operator는 MongoDBSearch 리소스 의 status 필드 아래에 상태 정보를 보고합니다.

status.loadBalancer

유형: 객체

연산자 managed 로드 밸런서 (Envoy)의 상태입니다. 이 필드 spec.loadBalancer.managed 이 설정하다 경우에만 표시됩니다.

status.loadBalancer.phase

유형: 문자열

managed 형 로드 밸런서 의 현재 단계입니다. 가능한 값에는 Pending, Running, Failed 등이 있습니다. Kubernetes Operator는 이 단계를 기본 status.phase와 독립적으로 보고하므로 Envoy 배포서버 별도로 모니터 할 수 있습니다.

이 필드 LOADBALANCER 열 아래의 kubectl get 출력에서도 볼 수 있습니다.

예시

$ kubectl get mdbs
NAME PHASE VERSION LOADBALANCER AGE
mdb-rs-ext-lb-search Running 0.64.0 Running 14m

돌아가기

CRD 로그 로테이션 설정