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

MongoDB 검색 및 벡터 검색 설정

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

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

참고

이 예시는 작동하는 구성이 아닙니다. 참조를 위해 샘플 값으로 채워진 모든 사용 가능한 필드가 포함되어 있습니다. 일부 필드는 상호 배타적이며, 일부는 다른 필드보다 우선순위가 높습니다(예시: source.externalsource.mongodbResourceRef보다 우선순위가 높습니다). 유효한 조합은 아래 필드 설명을 참조하십시오.

예시

1spec:
2 source:
3 # external takes precedence over mongodbResourceRef
4 mongodbResourceRef:
5 name: mdb
6 external:
7 # hostAndPorts and shardedCluster are mutually exclusive
8 hostAndPorts:
9 - mdb-rs-external-0.example.com:27017
10 - mdb-rs-external-1.example.com:27017
11 - mdb-rs-external-2.example.com:27017
12 shardedCluster:
13 router:
14 hosts:
15 - mongos1.example.com:27017
16 - mongos2.example.com:27017
17 shards:
18 - shardName: shard-0
19 hosts:
20 - shard0-node1.example.com:27018
21 - shard0-node2.example.com:27018
22 - shardName: shard-1
23 hosts:
24 - shard1-node1.example.com:27018
25 - shard1-node2.example.com:27018
26 keyfileSecretRef:
27 name: mdb-keyfile
28 key: keyfile
29 tls:
30 # ca references a ConfigMap that contains ca.crt
31 ca:
32 name: mdbc-rs-ca
33 username: search-sync-source
34 passwordSecretRef:
35 name: mdbc-rs-search-sync-source-password
36 key: password
37 # x509 authentication (mutually exclusive with
38 # username/passwordSecretRef and source.tls)
39 x509:
40 clientCertificateSecretRef:
41 name: mongot-x509-client-cert
42 # Set only if the private key is encrypted
43 keyFilePasswordSecretRef:
44 name: mongot-x509-key-password
45 # TLS client certificate for SCRAM connections
46 # (mutually exclusive with x509):
47 # tls:
48 # clientCertificateSecretRef:
49 # name: mongot-scram-client-cert
50 # keyFilePasswordSecretRef:
51 # name: mongot-scram-key-password
52 security:
53 tls:
54 certificateKeySecretRef:
55 name: mdbs-tls-secret
56 certsSecretPrefix: my-prefix
57 # Set only if the private key is encrypted
58 keyFilePasswordSecretRef:
59 name: mdbs-tls-key-password
60 version: "1.70.1"
61 autoEmbedding:
62 embeddingModelAPIKeySecret:
63 name: embedding-model-api-query-key
64 providerEndpoint: https://ai.mongodb.com/v1/embeddings
65 featureFlags:
66 enableOverloadRetrySignal: true
67 logLevel: INFO
68 observability:
69 prometheus:
70 mode: enabled
71 port: 9946
72 metricsForwarder:
73 mode: auto
74 resourceRequirements:
75 requests:
76 cpu: 100m
77 memory: 128Mi
78 limits:
79 cpu: 250m
80 memory: 256Mi
81 deployment:
82 spec:
83 template:
84 spec:
85 nodeSelector:
86 kubernetes.io/os: linux
87 opsManager:
88 agentCredentials:
89 name: om-agent-api-key
90 projectConfigMapRef:
91 name: om-project-config
92 clusters:
93 - name: cluster-1
94 index: 0
95 replicas: 2
96 loadBalancer:
97 # Option 1: Operator-managed Envoy load balancer
98 managed:
99 externalHostname: "{shardName}.search.apps.example.com"
100 routerHostname: "search-router.apps.example.com:27028"
101 replicas: 2
102 resourceRequirements:
103 requests:
104 cpu: "100m"
105 memory: 128Mi
106 limits:
107 cpu: "500m"
108 memory: 512Mi
109 deployment:
110 spec:
111 template:
112 spec:
113 nodeSelector:
114 kubernetes.io/os: linux
115 retryPolicy:
116 numRetries: 2
117 perTryTimeout: "60s"
118 minMongotReadyReplicas: 1
119 # Option 2: User-provided (BYO) load balancer
120 # (mutually exclusive with managed)
121 unmanaged:
122 endpoint: "{shardName}-search-lb.corp.example.com:443"
123 resourceRequirements:
124 limits:
125 cpu: "3"
126 memory: 5Gi
127 requests:
128 cpu: "2"
129 memory: 4Gi
130 persistence:
131 single:
132 storage: 16G
133 storageClass: standard
134 statefulSet:
135 spec:
136 template:
137 spec:
138 nodeSelector:
139 kubernetes.io/os: linux
140 jvmFlags:
141 - -Xms2g
142 - -Xmx2g
143 advancedMongotConfigs:
144 someAdvancedSetting: value
145 syncSourceSelector:
146 matchTagSets:
147 - region: us-east-1
148 workload: search
149 - {}
150 shardOverrides:
151 - shardNames:
152 - shard-0
153 replicas: 3
154 resourceRequirements:
155 requests:
156 cpu: "4"
157 memory: 8Gi
158 persistence:
159 single:
160 storage: 32G
161 jvmFlags:
162 - -Xms4g
163 - -Xmx4g
164 statefulSet:
165 spec:
166 template:
167 spec:
168 nodeSelector:
169 disktype: ssd

이 섹션에서는 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 리소스의 고유 식별자입니다. 이름은 유효한 Kubernetes DNS 하위 도메인 이름이어야 합니다. 이름은 짧게 유지하세요. Kubernetes 연산자는 이름에서 생성하는 Kubernetes 리소스의 이름을 파생합니다(예: {name}-search-{clusterIndex}-{shardName}). Kubernetes 연산자는 레이블의 경우 63 자, 하위 도메인 이름의 경우 253 자의 Kubernetes DNS 제한 내에 모든 생성된 이름이 적합한지 확인합니다.

spec.clusters

유형: 객체 배열

MongoDBSearch의 Kubernetes 클러스터 별 배포 구성. 이 필드는 필수 필드이며 최소 1개 이상, 최대 50 개 이하의 항목을 포함해야 합니다. 단일 클러스터 배포의 경우 1개 항목, 다중 클러스터 배포에서 mongot 팝을 실행하는 각 Kubernetes 클러스터의 경우 1개 항목을 포함합니다. nameindex을 포함한 전체 필드 참조는 spec.clusters를 참조하세요.

이 섹션에서는 MongoDB 검색하다 및 벡터 검색 리소스에 대한 선택 사항 설정에 대해 설명합니다. CRD에 선택 사항 설정을 생략하고 필수 설정만 정의하는 경우, Kubernetes Operator용 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를 반환하는 <MongoDBSearch.metadata.name>-<username>-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.source.external 를 사용하여 데이터베이스에 대한 연결을 구성합니다. 두 필드를 모두 설정하면 spec.source.external 이(가) 우선합니다.

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

spec.source.mongodbResourceRef.namespace

유형: 문자열

spec.source.mongodbResourceRef.name 가 참조하는 MongoDB 또는 MongoDBCommunity 리소스의 네임스페이스. The Kubernetes Operator currently ignores this field and always uses the namespace of the MongoDBSearch 리소스. 교차 네임스페이스 참조는 지원되지 않습니다. 데이터베이스가 다른 네임스페이스에 있는 경우 spec.source.external을 사용하세요.

spec.source.username

유형: 문자열

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

spec.source.passwordSecretRef.name

유형: 문자열

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

spec.source.passwordSecretRef.key

유형: 문자열

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

spec.source.x509

유형: 객체

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

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

spec.source.x509.clientCertificateSecretRef

유형: 객체

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

  • tls.crt — 클라이언트 인증서

  • tls.key — 개인 키

개인 키가 암호로 암호화된 경우 암호를 별도의 Secret에 저장하고 spec.source.x509.keyFilePasswordSecretRef으로 참조합니다.

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

예시

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

유형: 객체

spec.source.x509.clientCertificateSecretRef에 있는 비밀번호로 암호화된 개인 키를 복호화하는 비밀번호가 포함된 시크릿입니다. 시크릿에는 keyFilePassword 키 아래에 비밀번호가 포함되어 있어야 합니다. 개인 키가 암호화되지 않은 경우에는 이 필드를 생략합니다.

spec.source.tls

유형: 객체

SCRAM(사용자 이름과 비밀번호)인증을 사용하는 경우 mongot 동기화 소스 연결을 위한 TLS 클라이언트 인증서를 구성합니다. 이 필드를 설정하면 mongot 은 소스 MongoDB 배포서버와의 TLS 핸드쉐이크 동안 클라이언트 인증서를 제시합니다(상호 TLS 전송). mongot 은 사용자 이름과 비밀번호로 계속 인증합니다.

이 필드는 SCRAM 인증(spec.source.passwordSecretRef)에서만 사용합니다. 이 필드는 spec.source.x509과 상호 배타적입니다. 클라이언트 인증서 자체를 인증 자격 증명으로 사용하려면 spec.source.x509 를 사용하세요.

spec.source.tls.clientCertificateSecretRef

유형: 객체

소스 MongoDB 배포와의 TLS 핸드쉐이크 동안 mongot 이 제시하는 TLS 클라이언트 인증서 및 키가 포함된 시크릿입니다. 시크릿에는 다음 키가 포함되어야 합니다.

  • tls.crt — 클라이언트 인증서

  • tls.key — 개인 키

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

spec.source.tls.keyFilePasswordSecretRef

유형: 객체

spec.source.tls.clientCertificateSecretRef에 있는 비밀번호로 암호화된 개인 키를 복호화하는 비밀번호가 포함된 시크릿입니다. 시크릿에는 keyFilePassword 키 아래에 비밀번호가 포함되어 있어야 합니다. 개인 키가 암호화되지 않은 경우에는 이 필드를 생략합니다.

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

spec.source.external

유형: 객체

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

spec.source.external.keyfileSecretRef

유형: 객체

mongot 이 외부 MongoDB 배포에 연결하는 데 사용하는 mongod 키 파일이 포함된 시크릿.

spec.source.external.keyfileSecretRef.name

유형: 문자열

키 파일이 포함된 시크릿의 이름입니다. spec.source.external.keyfileSecretRef을 설정하는 경우 이 필드를 지정해야 합니다.

spec.source.external.keyfileSecretRef.key

유형: 문자열

키파일이 시크릿에 저장되는 키입니다. 이 필드는 선택 사항입니다.

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 인증서를 발급한 인증 기관의 신뢰할 수 있는 체인이 포함된 ConfigMap의 이름입니다.

예시

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

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

예시

kind: ConfigMap
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.clusters[].replicas에 지정된 수의 파드가 포함됩니다. 샤드 항목을 하나 이상 지정합니다.

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

유형: 문자열

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

명명 제약 조건:

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

  • 소문자 영숫자 및 하이픈(-)을 허용하며 이름이 영숫자로 시작하고 끝나도록 요구하는 Kubernetes DNS 레이블 이름 규칙(RFC 1123)을 준수해야 합니다. 마침표(.)와 및줄(_)은 허용되지 않습니다. 최대 길이는 63 자입니다.

  • Kubernetes 연산자는 metadata.name, 클러스터 인덱스 및 shardName 를 결합하여 생성하는 Kubernetes 리소스의 이름(예시: {name}-search-{clusterIndex}-{shardName})을 만들고 모든 생성된 이름이 레이블의 Kubernetes DNS 제한 63 자 및 하위 도메인 이름의 253 자 내에 맞는지 확인합니다. 이러한 제한에 맞도록 shardName 를 초기화합니다.

예시

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.clusters 배열의 각 엔트리를 설명합니다.

spec.clusters

유형: 객체 배열

MongoDBSearch의 Kubernetes 클러스터 별 배포 구성. 이 필드는 필수 필드이며 최소 하나 최대 50 개의 엔트리를 포함해야 합니다. replicas, loadBalancer, resourceRequirements, persistence, jvmFlags, statefulSet 등 모든 사이징 및 배치 설정은 clusters 엔트리 내에 있습니다. 이러한 설정에는 최상위 수준 대응하는 것이 없습니다.

단일 클러스터 배포서버의 경우 하나의 항목을 지정하십시오. nameindex은(는) 생략할 수 있습니다.

예시

spec:
clusters:
- {}

다중 클러스터 배포의 경우 mongot 팝을 실행하는 각 Kubernetes 클러스터에 대해 하나의 엔트리를 지정합니다. 두 개 이상의 엔트리를 지정하면 다음 규칙이 적용됩니다.

  • name 모든 에트리에 필요하며 고유해야 합니다.

  • index 모든 에트리에 필요하며 고유해야 합니다.

  • MongoDB 소스는 외부에 있어야 합니다(spec.source.external). 다중 클러스터 배포서버는 연산자가 managed하는 MongoDB 소스를 지원하지 않습니다.

  • 모든 엔트리는 연산자가 managed 로드 밸런서(loadBalancer.managed)를 구성해야 합니다. 다중 클러스터 배포서버는 관리되지 않는 로드 밸런서를 지원하지 않습니다.

Kubernetes 연산자는 CRD 유효성 검사 규칙과 조정 시점 유효성 검사를 통해 이러한 규칙을 시행합니다.

spec.clusters[].name

유형: 문자열

이 엔트리의 Kubernetes 클러스터 이름(최대 길이: 253 자). 단일 클러스터 배포의 경우에는 이 필드를 생략할 수 있습니다.

spec.clusters 에 항목이 하나 이상 포함되어 있는 경우 name 은 필수 사항이며, 항목 전체에서 고유해야 하고 리소스를 만든 후에는 변경할 수 없습니다.

spec.clusters[].index

유형: integer

이 엔트리의 Kubernetes 클러스터의 안정적인 정수 식별자입니다. 값은 0999 사이에 있어야 하며 엔트리 전체에 걸쳐 고유해야 합니다. spec.clusters 에 하나 이상의 엔트리가 포함되어 있는 경우 모든 엔트리에 index 가 필요합니다.

Kubernetes Operator는 이 클러스터 엔트리에 대해 만든 Kubernetes 리소스 이름에 인덱스를 포함합니다. 예를 들어 StatefulSets의 경우 {name}-search-{index}, Services의 경우 {name}-search-{index}-svc, ConfigMaps의 경우 {name}-search-{index}-config 입니다. 샤딩된 클러스터 소스의 경우 이름에는 샤드 이름도 포함됩니다. 예를 들어 {name}-search-{index}-{shardName}{name}-search-{index}-{shardName}-svc입니다.

경고

인덱스는 리소스 이름의 일부이므로 기존 항목의 index 를 변경하지 마십시오. 변경하면 Kubernetes 연산자가 새 인덱스 아래에 새 리소스를 만들고 이전 인덱스에 있는 리소스는 단절됩니다. 이는 프록시 서비스({name}-search-{index}[-{shardName}]-proxy-svc), Envoy 배포서버 및 ConfigMap({name}-search-lb-{index}), 로드 밸런서 인증서 시크릿 및 지표 전송기 리소스({name}-search-metrics-forwarder-{index})를 포함하여 모든 인덱스 포함 리소스에 적용됩니다.

단일 클러스터 배포의 경우에는 이 필드를 생략할 수 있으며 기본값은 0입니다. 하지만 각 노드 Kubernetes 클러스터가 고유한 Kubernetes 연산자 인스턴스를 실행하는 경우에는 각 클러스터의 MongoDBSearch 리소스에서 index 을 고유한 값으로 명시적으로 설정합니다. 고유한 인덱스는 생성된 호스트 이름과 리소스 이름이 클러스터 간에서 충돌하지 않도록 합니다.

spec.clusters[].replicas

유형: integer

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

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

spec.clusters[].replicas0로 설정하면 Kubernetes Operator가 이 클러스터의 mongot 배포서버를 오프라인으로 전환합니다. Kubernetes 연산자는 StatefulSet를 영 파드로 확장하고 MongoDBSearch 리소스 및 기타 Kubernetes 리소스를 제자리에 유지합니다.

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

예시

spec:
clusters:
- replicas: 2
spec.clusters[].resourceRequirements

유형: core/v1/ResourceRequirements

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

spec.clusters[].jvmFlags에서 JVM 힙 크기를 재정의하지 않으면 Kubernetes Operator는 기본 힙 크기(-Xmx)를 mongot 컨테이너의 메모리 요청의 50%로 설정합니다. 팝 리소스와 JVM 힙 크기 모두를 제어하려면 spec.clusters[].resourceRequirements 를 적절히 조정하십시오.

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

requests:
cpu: 2
memory: 4Gi
spec.clusters[].resourceRequirements.limits

유형: 객체

mongodb-search 컨테이너가 사용할 수 있는 리소스(CPU 및 메모리)의 상한선입니다. 기본적으로 제한이 설정되지 않습니다. 생략하면 팝이 제한되지 않아 노드의 모든 리소스를 사용할 수 있습니다. 워크로드에 따라 제한을 설정하는 것을 권장합니다.

spec.clusters[].resourceRequirements.requests

유형: 객체

mongodb-search 컨테이너에 요청된 CPU 및 메모리 양입니다. cpu 또는 memory 중 하나만 지정하면 Kubernetes Operator가 나머지 필드에 대한 기본값을 적용합니다. 생략하면 Kubernetes Operator는 다음 기본값을 사용합니다.

requests:
cpu: 2
memory: 4Gi
spec.clusters[].persistence.single

유형: 객체

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

스칼라
데이터 유형
설명

labelSelector

문자열

storage

문자열

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

기본값은 16G 입니다.

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

storageClass

문자열

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

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

MongoDBSearch는 모든 데이터에 하나의 볼륨을 사용하는 single 지속성 모드만 지원합니다. CRD 스키마에도 spec.clusters[].persistence.multiple 필드가 포함되어 있지만 Kubernetes 연산자는 이를 적용하지 않습니다. persistence를 생략하면 Kubernetes 연산자는 spec.clusters[].persistence.single.storage16G(으)로 설정핖니다.

spec.clusters[].loadBalancer

유형: 객체

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

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

spec.clusters 의 모든 엔트리는 로드 밸런서 모드에 대해 동의해야 합니다. 모든 엔트리가 loadBalancer.managed을 설정하거나, 모든 엔트리가 loadBalancer.unmanaged를 설정하거나, 엔트리가 loadBalancer을 설정하지 않아야 합니다. Kubernetes 연산자는 혼합 모드를 거부합니다. 다중 클러스터 배포서버는 managed 모드만 지원합니다.

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

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

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

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

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

    mongot TLS 인증서의 SAN 필드에 이러한 서비스 FQDN을 포함하는 것이 좋습니다. 연산자가 managed Envoy 프록시는 현재 mongot 인증서를 인증서 발급 기관에 대해서만 유효성을 검사하며 SAN 호스트 이름을 일치시키지 않습니다. 외부 mongod 프로세스는 Envoy 프록시의 TLS 인증서를 확인하므로 mongot 인증서에 아니라 Envoy 인증서의 SAN에 외부 도메인을 포함하세요.

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

spec.clusters[].loadBalancer.managed

유형: 객체

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

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

샤딩된 클러스터 소스의 경우 managed 로드 밸런서를 사용하는 경우 spec.security.tls 도 구성해야 합니다. Envoy 프록시는 TLS가 필요한 SNI를 사용하여 트래픽을 올바른 샤드로 라우팅합니다.

예시

spec:
clusters:
- loadBalancer:
managed: {}
spec.clusters[].loadBalancer.managed.externalHostname

유형: 문자열

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

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

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

다중 클러스터 배포서버에서는 각 클러스터 엔트리에 대해 별도의 호스트 이름이 사용됩니다. 하지만 Kubernetes 연산자는 예를 들어 가용 구역에 걸친 페일오버 프록시가 여러 클러스터의 Envoy 프록시를 전면에 배치하는 경우와 같이 클러스터 간에 하나의 호스트 이름 공유를 허용합니다.

예시

# Replica set with external MongoDB
spec:
clusters:
- loadBalancer:
managed:
externalHostname: "search.apps.example.com"
# Sharded cluster with external MongoDB
spec:
clusters:
- loadBalancer:
managed:
externalHostname: "{shardName}.search.example.com"
spec.clusters[].loadBalancer.managed.routerHostname

유형: 문자열

host:port 형식으로 managed Envoy 로드 밸런서를 통해 이 클러스터의 mongot 인스턴스에 도달하기 위해 mongos 라우터가 사용하는 엔드포인트입니다. Kubernetes Operator는 클러스터 수준 라우팅 체인에서 SNI 일치에 호스트 이름을 사용하므로 Envoy TLS 서버 인증서에는 SAN에 이 호스트 이름이 포함되어야 합니다.

외부 샤딩된 MongoDB 소스(spec.source.external.shardedCluster)가 있는 managed 로드 밸런서를 사용하는 경우 이 필드는 필수입니다. Kubernetes Operator는 복제본 세트 소스와 연산자 managed MongoDB에 대해 이 필드를 무시합니다.

externalHostname와 달리 Kubernetes 연산자는 이 값을 그대로 사용하므로 값에 {shardName} 자리 표시자가 포함되어 있으면 안 됩니다. 이 엔드포인트는 mongos의 샤드 아그노스틱 입력 점입니다.

다중 클러스터 배포에서는 각 클러스터 엔트리에 일반적으로 고유한 값이 사용됩니다. 하지만 Kubernetes Operator는 가용 영역에 걸쳐 있는 페일오버 프록시가 여러 클러스터의 Envoy 프록시를 제공하는 경우와 같이 클러스터 간에 하나의 값을 공유할 수 있습니다.

예시

spec:
clusters:
- loadBalancer:
managed:
externalHostname: "{shardName}.search.example.com"
routerHostname: "search-router.example.com:27028"
spec.clusters[].loadBalancer.managed.replicas

유형: integer

이 Kubernetes 클러스터에 배포할 Envoy 프록시 팝의 수. 값은 1 이상이어야 합니다. 생략하면 기본값은 1입니다.

spec.clusters[].loadBalancer.managed.resourceRequirements

유형: core/v1/ResourceRequirements

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

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

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

예시

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

유형: 객체

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

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

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

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

예시

spec:
clusters:
- loadBalancer:
managed:
deployment:
spec:
template:
spec:
nodeSelector:
kubernetes.io/os: linux
spec.clusters[].loadBalancer.managed.retryPolicy

유형: 객체

Envoy 프록시가 개별 gRPC 스트림에 적용하는 재시도 동작은 업스트림 mongot 인스턴스에 적용됩니다. Envoy 프록시는 실패한 시도와 다른 mongot 호스트로 각 재시도 시도를 보냅니다.

이 필드를 생략하면 Envoy 프록시는 기본값으로 다시 시도합니다. 시도당 타임아웃이 60s인 시도를 2 번 시도합니다.

예시

spec:
clusters:
- loadBalancer:
managed:
retryPolicy:
numRetries: 2
perTryTimeout: "60s"
spec.clusters[].loadBalancer.managed.retryPolicy.numRetries

유형: integer

요청당 최대 재시도 횟수입니다. 값은 1 이상이어야 합니다. 생략하면 각 요청에 대해 총 세 번의 시도가 허용되는 2로 기본값이 설정됩니다.

spec.clusters[].loadBalancer.managed.retryPolicy.perTryTimeout

유형: 문자열

원래 요청을 포함하여 각 개별 시도에 대한 타임아웃은 기간 string(예: "30s")으로 표현됩니다. 생략하면 기본값은 "60s"입니다.

spec.clusters[].loadBalancer.managed.minMongotReadyReplicas

유형: integer

Envoy 프록시가 트래픽을 보내기 전에 mongot 그룹(예: 하나의 샤드의 mongot 인스턴스) 이 가지고 있어야 하는 최소 수의 준비된 mongot 복제본입니다. 그룹이 이 임계값 미만인 동안 Envoy 프록시는 해당 그룹에 대한 트래픽을 정상적인 mongot 그룹에 전송하고 routed_from_another_shard 헤더로 요청을 표시합니다. 이러한 요청은 오류 대신 빈 결과를 반환합니다.

값은 1 이상이어야 합니다. 생략하면 기본값은 1입니다.

spec.clusters[].loadBalancer.unmanaged

유형: 객체

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

이 필드는 spec.clusters[].loadBalancer.managed와(과) 상호 배타적입니다. 다중 클러스터 배포서버는 관리되지 않는 로드 밸런서를 지원하지 않습니다.

spec.clusters[].loadBalancer.unmanaged.endpoint

유형: 문자열

host:port 형식으로 된 BYO 로드 밸런서의 엔드포인트. spec.clusters[].loadBalancer.unmanaged을(를) 구성하는 경우 이 필드를 지정해야 합니다.

Kubernetes Operator가 MongoDB 배포를 관리하는 경우(spec.source.mongodbResourceRef)에는 Kubernetes Operator가 이 값을 mongod 구성에 mongotHostsearchIndexManagementHostAndPort로 쓰기합니다. MongoDB가 외부에 있는 경우에는 동일한 값을 사용하여 mongod 매개변수를 직접 구성합니다.

외부 샤딩된 클러스터 소스의 경우 값에는 Kubernetes Operator가 샤드 별로 확장하는 {shardName} 자리 표시자가 포함되어야 하며, 자리 표시자만 포함되어서는 안 됩니다. 외부 복제본 세트 소스의 경우 값에는 {shardName} 자리 표시자가 포함되어서는 안 됩니다.

예시

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

유형: 객체 배열

클러스터 기본값과 다르게 이 클러스터 엔트리 내의 특정 샤드의 크기를 재정의하는 재정의. 이 필드를 사용하여 개별 샤드에 나머지 클러스터보다 더 많거나 덜 mongot 노드, 리소스 또는 저장 공간을 할당할 수 있습니다.

이 필드는 외부 샤딩된 클러스터 소스(spec.source.external.shardedCluster)에서만 사용할 수 있습니다. 참조하는 각 샤드 이름은 spec.source.external.shardedCluster.shards[*].shardName에 존재해야 하며, 클러스터 엔트리당 각 샤드를 최대 한 번만 재정의할 수 있습니다.

오버라이드에 replicas, resourceRequirements, persistence 또는 jvmFlags 을 설정하면 명명된 샤드의 클러스터 값을 대체합니다. Kubernetes Operator는 statefulSet 를 클러스터 값에 디프 병합합니다. 설정하지 않은 필드는 클러스터 값을 상속합니다.

예시

spec:
clusters:
- replicas: 2
shardOverrides:
- shardNames:
- shard-0
replicas: 3
resourceRequirements:
requests:
cpu: "4"
memory: 8Gi
spec.clusters[].shardOverrides[*].shardNames

유형: 문자열 배열

이 오버라이드가 적용되는 이 클러스터 엔트리 내의 샤드 이름입니다. 이 필드는 필수이며 적어도 하나의 엔트리가 포함되어야 합니다.

spec.clusters[].shardOverrides[*].replicas

유형: integer

명명된 샤드의 클러스터의 mongot 복제본 수를 대체합니다. 0 값은 이 샤드의 mongot 인스턴스를 오프라인으로 전환합니다.

spec.clusters[].shardOverrides[*].resourceRequirements

유형: core/v1/ResourceRequirements

명명된 샤드에 대한 클러스터의 CPU 및 메모리 요청 및 제한을 대체합니다.

spec.clusters[].shardOverrides[*].persistence

유형: 객체

명명된 샤드의 클러스터의 영구 볼륨 구성을 대체합니다. spec.clusters[].persistence과 동일한 스키마를 사용합니다.

spec.clusters[].shardOverrides[*].statefulSet

유형: 객체

이름이 지정된 샤드에 대한 StatefulSet 재정의. 다른 재정의 필드와 달리 Kubernetes Operator는 이 값을 대체하는 대신 클러스터의 spec.clusters[].statefulSet 값에 딥 병합합니다.

spec.clusters[].shardOverrides[*].jvmFlags

유형: 문자열 배열

빈 문자열이 아닌 목록으로 설정하면 명명된 샤드의 클러스터의 spec.clusters[].jvmFlags 을 대체합니다. spec.clusters[].jvmFlags 의 형식 규칙은 이 필드에도 적용됩니다.

spec.clusters[].syncSourceSelector

유형: 객체

이 클러스터 엔트리의 mongot 인스턴스가 데이터를 동기화할 mongod 노드를 선택합니다.

spec.clusters[].syncSourceSelector.matchTagSets

유형: 객체 배열

복제본 세트 태그를 사용하여 동기화 소스 mongod 노드를 선택하는 복제본 세트 태그 세트의 정렬된 목록입니다. Kubernetes Operator는 목록을 mongot 구성에 전달합니다. mongot 는 첫 번째 일치하는 태그 세트가 선택한 노드에서 동기화하고 세컨더리 노드를 선호합니다.

각 항목은 태그 이름을 태그 값에 매핑한 것입니다. 빈 문서({})는 모든 노드와 일치하므로 이전 태그 세트와 일치하는 것이 없는 경우 일치 어떤 것이든 폴백으로 후미에 {} 항목을 추가할 수 있습니다. 최대 50 개의 항목을 지정할 수 있습니다.

예시

spec:
clusters:
- syncSourceSelector:
matchTagSets:
- region: us-east-1
workload: search
- {}
spec.clusters[].jvmFlags

유형: 문자열 배열

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

각 플래그는 -X, -XX: 또는 -D(으)로 시작해야 하며 공백을 포함하지 않아야 합니다. 영수자 및 숫자 문자와 ., _, +, :, -, = 문자만 포함할 수 있습니다. Kubernetes 연산자는 이 규칙에 부합하지 않는 플래그를 거부합니다.

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

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

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

예시

spec:
clusters:
- jvmFlags:
- -Xms2g
- -Xmx2g
spec.clusters[].statefulSet

유형: 객체

Kubernetes 연산자가 mongot 포드 배포를 위해 만드는 StatefulSet 에 대한 재정의입니다. Kubernetes 연산자는 항상 재정의를 마지막에 적용하므로 Kubernetes 연산자가 계산하는 설정을 재정의가 재정의합니다.

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

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

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

참고

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

spec.clusters[].advancedMongotConfigs

유형: 객체

이 클러스터 항목에 대한 고급 mongot 설정입니다. Kubernetes Operator는 값을 읽거나 수정하지 않고 mongot 설정 파일의 advancedConfigs 키 아래에 그대로 렌더링합니다. 이 필드는 mongot 구성에서 Kubernetes 연산자가 다른 곳에서 생성하는 설정에 영향을 주지 않습니다.

MongoDBSearch 리소스가 최상위 필드로 노출하지 않는 mongot 설정에만 이 필드를 사용합니다.

spec.security

유형: 객체

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

spec.security.tls

유형: 객체

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

샤딩된 클러스터 소스와 함께 managed 로드 밸런서를 사용하는 경우 이 필드는 필수입니다. Envoy proxy 는 SNI 를 사용하여 올바른 샤드로 트래픽을 라우팅합니다. 이는 TLS ClientHello 에 따라 달라집니다. 이 구성에서 spec.security.tls 을(를) 생략하면 Kubernetes 연산자가 조정을 실패합니다.

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-{clusterIndex}-{shardName}-cert

managed 로드 밸런서 서버 인증서(클러스별, 모든 토폴로지)

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

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

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

구제척으로:

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

  • {clusterIndex} 인덱스를 설정하지 않는 단일 클러스터 배포서버의 경우 spec.clusters[].index 의 값은 0 입니다.

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

Kubernetes Operator는 모든 토폴로지에 대해 클러스터당 하나의 managed 로드 밸런서 서버 인증서를 사용합니다. 샤딩된 클러스터의 경우 이 인증서의 SAN에는 externalHostname 의 모든 확장된 샤드 호스트명과 routerHostname이 포함되어야 합니다.

Kubernetes 연산자는 다음 순서로 mongot 서버 인증서 시크릿 이름을 해결합니다.

  1. spec.security.tls.certificateKeySecretRef.name을 설정하면 Kubernetes 연산자가 해당 이름을 사용합니다.

  2. certsSecretPrefix을 설정하면 Kubernetes Operator가 위 표의 명명 패턴을 사용합니다.

  3. 두 필드 모두 설정하지 않으면 Kubernetes 연산자는 복제본 세트 배포에 대해 기본 이름 {name}-search-cert 을 사용하거나 샤딩된 배포에 대해 샤드당 기본 패턴 {name}-search-{clusterIndex}-{shardName}-cert 을 사용합니다.

certsSecretPrefix을 설정하지 않으면 managed 로드 밸런서 인증서에도 기본값 이름이 사용됩니다. Kubernetes 연산자는 서버 인증서에 {name}-search-lb-{clusterIndex}-cert 을 마운트하고 클라이언트 인증서에 {name}-search-lb-{clusterIndex}-client-cert 를 마운트합니다.

참고

샤딩된 클러스터 배포서버의 경우 Kubernetes Operator는 단일 시크릿 참조가 샤드별 인증서를 포함할 수 없으므로 certificateKeySecretRef 를 거부합니다. certsSecretPrefix를 사용하거나 두 필드 모두 설정하지 않고 기본값 샤드별 패턴과 기본값 이름의 로드 밸런서 인증서 시크릿을 만듭니다.

예시

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

유형: 객체

TLS 인증서 시크릿에서 암호로 암호화된 서버 개인 키를 복호화하는 비밀번호가 포함된 시크릿입니다. 시크릿에는 keyFilePassword 키 아래에 비밀번호가 포함되어 있어야 합니다. 서버 개인 키가 암호화되지 않은 경우에는 이 필드를 생략합니다.

spec.logLevel

유형: 문자열

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

  • TRACE

  • DEBUG

  • INFO

  • WARN

  • ERROR

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

spec.observability

유형: 객체

mongot 의 Prometheus 지표 엔드포인트와 MongoDB Ops Manager의 지표 포워더를 포함하여 MongoDBSearch 리소스에 대한 감시 설정입니다.

spec.observability.prometheus

유형: 객체

mongot에 있는 Prometheus 지표 엔드포인트에 대한 구성입니다. 이 필드를 생략하면 Kubernetes 연산자가 기본 포트 9946에서 지표 엔드포인트를 활성화합니다. 엔드포인트를 비활성화하려면 spec.observability.prometheus.modedisabled으로 설정합니다. 포트를 변경하려면 spec.observability.prometheus.port를 설정합니다.

spec.observability.prometheus.mode

유형: 문자열

mongot에서 Prometheus 지표 엔드포인트를 활성화 또는 비활성화합니다. 값은 다음 중 하나일 수 있습니다.

  • enabled

  • disabled

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

spec.observability.prometheus.port

유형: integer

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

spec.observability.metricsForwarder

유형: 객체

Kubernetes 연산자가 mongot Prometheus 지표를 스크래핑하고 MongoDB Ops Manager로 전송하기 위해 만들어내는 배포서버인 지표 전송기의 구성입니다.

spec.observability.metricsForwarder.mode

유형: 문자열

Kubernetes 연산자가 지표 전송기를 만들지 여부. 값은 다음 중 하나일 수 있습니다.

  • auto — Kubernetes Operator는 연산자가 관리하는 MongoDB (Ops Manager 지원) 소스와 spec.observability.metricsForwarder.opsManager을 설정하는 경우에만 외부 소스에 대한 전달자를 만듭니다. MongoDBCommunity 소스의 경우 Kubernetes Operator는 전달자를 만들지 않습니다.

  • enabled — Kubernetes Operator는 항상 포워더를 만듭니다. 소스가 MongoDBCommunity 리소스인 경우 Kubernetes Operator는 오류를 보고합니다. 그 이유는 MongoDBCommunity 소스에서는 포워더가 지원되지 않기 때문입니다.

  • disabled — Kubernetes 연산자는 포워더를 생성하지 않습니다.

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

enabledauto 모드에는 Prometheus 엔드포인트(spec.observability.prometheus)가 활성화되어 있어야 합니다. 엔드포인트를 비활성화하면 Kubernetes Operator가 Invalid 지표 전송자 상태를 보고합니다.

spec.observability.metricsForwarder.resourceRequirements

유형: core/v1/ResourceRequirements

지표 전송자 컨테이너가 요청하고 제한될 수 있는 CPU 및 메모리.

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

requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 256Mi
spec.observability.metricsForwarder.deployment

유형: 객체

Kubernetes Operator가 연산자가 만든 지표 전송자 배포서버에 병합하는 오버라이드입니다. spec.clusters[].loadBalancer.managed.deployment와 동일한 관례를 따릅니다. labelsannotations이 있는 metadata 필드와 apps/v1/DeploymentSpec 객체가 있는 spec 필드입니다.

spec.observability.metricsForwarder.opsManager

유형: 객체

지표 전송기가 지표를 전송하는 MongoDB Ops Manager 프로젝트 및 자격 증명. 생략하면 Kubernetes Operator는 소스 MongoDB 리소스의 연결 구성에서 프로젝트 및 자격 증명을 가져오게 됩니다. 소스 MongoDB 리소스가 존재하지 않는 외부 MongoDB 소스에 대해 이 필드를 설정하세요.

이 필드를 설정하는 경우 agentCredentialsprojectConfigMapRef을 모두 설정해야 합니다.

spec.observability.metricsForwarder.opsManager.agentCredentials.name

유형: 문자열

지표 전송기가 인증하는 MongoDB Ops Manager 에이전트 API 키가 포함된 시크릿의 이름입니다.

spec.observability.metricsForwarder.opsManager.projectConfigMapRef.name

유형: 문자열

지표 전송기가 지표를 보내는 Ops Manager 프로젝트 구성을 포함하는 ConfigMap의 이름.

중요

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

spec.autoEmbedding

유형: 객체

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

spec.autoEmbedding.embeddingModelAPIKeySecret

유형: 객체

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

spec.autoEmbedding.embeddingModelAPIKeySecret.name

유형: 문자열

mongot 가 인덱스 및 쿼리 시점에 임베딩을 생성하는 데 사용해야 하는 임베딩 모델 API 키가 포함된 시크릿의 이름입니다. 시크릿에는 indexing-key 키 아래에 인덱스 시점 키가 포함되어 있어야 하며 query-key 키 아래에 쿼리 시점 키가 포함되어 있어야 합니다.

spec.autoEmbedding.providerEndpoint 이 연산자가 관리하는 자가 호스팅된 Voyage AI 임베딩 서비스를 가리키는 경우에만 embeddingModelAPIKeySecret 을 생략할 수 있습니다. 그렇지 않으면 Kubernetes Operator에서 필요합니다.

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.featureFlags

유형: 객체

mongot의 기능 플래그입니다. 플래그를 true(으)로 설정하면 Kubernetes Operator가 mongot 구성에 렌더링합니다. featureFlags 객체 또는 개별 플래그를 생략하면 해당 플래그에 스키마 기본값이 적용됩니다(enableOverloadRetrySignal의 경우 true).

spec.featureFlags.enableOverloadRetrySignal

유형: 부울

mongot 오버로드 재시도 신호를 활성화합니다. 이 플래그를 활성화하면 mongot 은 gRPC RESOURCE_EXHAUSTED 응답을 통해 연산자 managed Envoy 로드 밸런서와 같은 업스트림 프록시에 로드 셰딩을 신호합니다. 그러면 프록시는 다른 mongot 인스턴스에 대한 요청을 다시 시도합니다.

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

spec.version

유형: 문자열

mongodb-search Docker 이미지의 버전. 생략하면 Kubernetes 연산자는 포함된 기본값 MongoDB Search 버전을 사용합니다. Kubernetes Operator를 업그레이드할 때 자동 업그레이드를 방지하기 위해 버전을 명시적으로 설정할 수 있습니다.

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

status.phase

유형: 문자열

MongoDBSearch 리소스의 현재 단계입니다. 값은 Pending, Running, Failed, Disabled, UpdatedUnsupported입니다.

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

status.message

유형: 문자열

리소스가 Pending 또는 Failed 단계에 있는 이유와 같이 현재 상태에 대한 세부 정보가 포함된 사람이 읽을 수 있는 메시지입니다.

status.lastTransition

유형: 문자열

status.phase의 마지막 전환 시간입니다.

status.observedGeneration

유형: integer

Kubernetes 연산자가 마지막으로 처리한 MongoDBSearch 리소스 생성.

status.warnings

유형: 문자열 배열

Kubernetes 연산자가 리소스에 대해 보고하는 경고.

status.version

유형: 문자열

Kubernetes 연산자가 조정한 MongoDB Search 버전(mongot)입니다.

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

status.resourcesNotReady

유형: 객체 배열

아직 준비되지 않은 종속된 Kubernetes 리소스입니다. 각 항목에는 리소스의 kindname, 선택 사항인 messageerrors 목록이 표시됩니다.

status.pvc

유형: 객체 배열

mongot StatefulSet의 영구 볼륨 요청의 상태. 각 항목에는 요청이 속한 phasestatefulsetName 가 보고됩니다.

status.loadBalancer

유형: 객체

연산자 managed 로드 밸런서(Envoy)의 상태입니다. 이 필드는 spec.clusters[].loadBalancer.managed을 설정한 경우에만 표시됩니다. 다중 클러스터 배포서버의 경우 Kubernetes 연산자는 모든 클러스터의 Envoy 배포서버중 최악 단계를 보고합니다.

status.loadBalancer.phase

유형: 문자열

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

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

status.loadBalancer.message

유형: 문자열

managed 로드 밸런서 상태에 대한 세부 정보가 포함된 사람이 읽을 수 있는 메시지입니다.

status.metricsForwarder

유형: 객체

지표 전송기의 상태입니다.

status.metricsForwarder.phase

유형: 문자열

지표 전송기의 현재 단계. 사용 가능한 값: Pending, Running, Failed. 단계에서 spec.observability.metricsForwarder.modedisabled(으)로 설정하면 Disabled 을 보고합니다.

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

status.metricsForwarder.message

유형: 문자열

지표 전송자 상태에 대한 세부 정보가 포함된 사람이 읽을 수 있는 메시지.

status.clusters

유형: 객체 배열

배포서버 토폴로지 전체의 클러스터별 상태입니다. Kubernetes Operator는 spec.clusters[]에서 클러스터 당 하나의 항목을 보고하므로 단일 클러스터 배포에는 정확히 하나의 항목이 있습니다. 각 항목은 해당 클러스터 에 대한 검색, 로드 밸런서 및 지표 전달 단계를 독립적으로 보고하므로 문제를 특정 클러스터 및 구성 요소로 현지화할 수 있습니다.

status.clusters[].name

유형: 문자열

멤버 클러스터 의 이름입니다. 단일 클러스터 배포에서는 비어 있습니다.

status.clusters[].index

유형: integer

이 클러스터 에 대한 spec.clusters[] 고정된 인덱스 입니다. 목록 순서와 관계없이 각 상태 항목을 해당 사양 항목에 다시 매핑합니다.

status.clusters[].search

유형: 문자열

이 클러스터의 mongot StatefulSet 중 가장 나쁜 단계입니다. 클러스터 복제본 세트 소스의 경우 mongot StatefulSet 한 개를 실행하거나 샤딩된 소스의 경우 샤드 당 하나씩 실행합니다. 값은 Pending, Running 또는 Failed일 수 있습니다.

status.clusters[].searchMessage

유형: 문자열

status.clusters[].search 이(가) Running이(가) 아닌 경우 이유가 포함된 사람이 읽을 수 있는 메시지입니다.

status.clusters[].loadBalancer

유형: 문자열

이 클러스터의 managed 로드 밸런서 (Envoy) 단계입니다. managed 로드 밸런서 구성되지 않은 경우 비어 있습니다. 값은 Pending, Running 또는 Failed일 수 있습니다.

status.clusters[].loadBalancerMessage

유형: 문자열

status.clusters[].loadBalancer 이(가) Running이(가) 아닌 경우 이유가 포함된 사람이 읽을 수 있는 메시지입니다.

status.clusters[].metricsForwarder

유형: 문자열

이 클러스터의 Ops Manager 지표 전달자 단계입니다. 지표 전달자가 활성화되지 않은 경우 비어 있습니다. 값은 Pending, Running 또는 Failed일 수 있습니다.

status.clusters[].metricsForwarderMessage

유형: 문자열

status.clusters[].metricsForwarder 이(가) Running이(가) 아닌 경우 이유가 포함된 사람이 읽을 수 있는 메시지입니다.

예시

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