MongoDB.local SF, Jan 15: See the speaker lineup & ship your AI vision faster. Use WEB50 to save 50%
Find out more >
Menu Docs
Página inicial do Docs
/ /

Instalar e usar o MongoDB Search e o Vector Search com edição externa do MongoDB Enterprise

Você pode usar o Kubernetes Operator para implantar o MongoDB Search e o Vector Search em um cluster do Kubernetes para ser executado com um servidor MongoDB Enterprise Edition v8.2.0 externo ou superior. Este procedimento demonstra como implantar e configurar o mongot processo em seu cluster Kubernetes para usar um sistema externo novo ou existente do conjunto de réplicas. Este tutorial demonstra como configurar uma implantação segura com o TLS habilitado. Você deve fornecer os certificados TLS:

  • O certificado do servidor e a chave para o serviço MongoDBSearch.

  • O certificado de CA pública para o banco de dados MongoDB externo.

Para implantar o MongoDB Search e o Vector Search, você deve ter o seguinte:

  • Um cluster Kubernetes em execução com kubeconfig disponível localmente.

  • A ferramenta de linha de comando do Kubernetes, kubectl, configurada para se comunicar com seu cluster.

  • Helm, o gerenciador de pacote do Kubernetes, para instalar o Operador Kubernetes.

  • Bash v5.1 ou superior para executar os comandos neste tutorial.

  • Um conjunto de réplicas do MongoDB Enterprise Edition executando a versão 8.2 ou superior para armazenar dados.

    Para saber mais sobre como implantar o MongoDB Enterprise, consulte Implantar e configurar recursos do banco de dados MongoDB.

  • Um MongoDB Cloud Manager ou Ops Manager em execução para gerenciar tarefas do MongoDB .

  • TLSde banco de dados externo

    Sua implantação externa do MongoDB Enterprise deve ser configurada para usar e exigir conexões TLS.

  • Arquivo CA do banco de dados externo

    Você deve ter o arquivo de certificado da Autoridade de Certificação (CA) pública (por exemplo , external-ca.crt) que foi usado para assinar os certificados de servidor do sistema MongoDB externo. Você precisará deste arquivo localmente.

  • Arquivos de certificado do serviço de pesquisa

    Você deve ter um certificado de servidor TLS válido e uma chave privada (por search-service.crt search-service.keyexemplo,,) para o serviço MongoDBSearch. Este certificado deve ser válido para o nome de host que você utilizará para acessar o serviço (por exemplo,). mdbs-search.example.com

Antes de instalar o MongoDB Search e o Vector Search usando o Kubernetes Operator, você deve fazer o seguinte:

Faça login na interface do usuário do Cloud Manager ou do Ops Manager e execute as etapas a seguir para configurar o Cloud Manager ou o Ops Manager para o MongoDB Search e o Vector Search.

1
  1. Faça login no MongoDB Cloud Manager ou no Ops Manager.

  2. Clique na aba Deployment.

  3. Selecione o cluster que deseja modificar.

2
  1. Clique no botão Modify para abrir o editor de configuração de implantação.

  2. Clique em Advanced Configuration Options na seção Process Configuration.

  3. Clique no botão Add Option e selecione setParameter Startup Option no menu suspenso.

  4. Adicione os seguintes parâmetros nos campos, um a um, clicando em Add após adicionar o nome e o valor:

    Parâmetro
    Valor

    mongotHost

    Seu nome de host e porta de pesquisa. Por exemplo: search-node1.example.com:27017.

    searchIndexManagementHostAndPort

    Seu nome de host e porta de pesquisa. Por exemplo: search-node1.example.com:27017.

    skipAuthenticationToSearchIndexManagementServer

    false

    searchTLSMode

    Seu modo TLS configurado. Por exemplo, preferTLS, se o processo mongot estiver configurado para aceitar conexões TLS.

    useGrpcForSearch

    true

3
  1. Clique no botão Review & Deploy.

  2. Revise e confirme para aplicar as alterações.

    O Cloud Manager ou o Ops Manager executa uma reinicialização contínua do seu conjunto de réplicas para aplicar a nova configuração.

Você deve criar um usuário com o role. Nas searchCoordinator versões 8.2 e posterior do MongoDB , o é um role embutido. Você deve criar um usuário e atribuir o role ao searchCoordinator usuário.

Para criar o usuário e atribuir ao usuário a função searchCoordinator integrada, conclua as seguintes etapas usando a interface do usuário do Cloud Manager ou do Ops Manager ou o mongosh:

1
  1. Faça login na interface do usuário do Cloud Manager ou do Ops Manager.

  2. Vá para a aba Security e clique em Users.

2
3

Username

Insira search-sync-source.

Password

Defina uma senha forte e segura.

Authentication Database

Escolha o banco de dados do admin.

4

Na seção Assign Roles, selecione a função searchCoordinator incorporada no menu suspenso do banco de dados admin.

5

No mongosh, execute os seguintes comandos:

1
use admin;
2
db.createUser({
user: "search-sync-source",
pwd: "<PASSWORD>", // Replace with your actual password
roles: [
{ role: "searchCoordinator", db: "admin" }
]
});

Prepare seu ambiente para executar o código de amostra deste tutorial em um terminal.

1

Para definir as variáveis de ambiente para uso nas etapas subsequentes deste procedimento, copie o seguinte, defina os valores para as variáveis de ambiente e, em seguida, execute os comandos no seu terminal:

1export K8S_CTX="<your kubernetes context here>"
2
3export MDB_NS="mongodb"
4
5export MDB_VERSION="8.2.0"
6
7export MDB_ADMIN_USER_PASSWORD="admin-user-password-CHANGE-ME"
8export MDB_USER_PASSWORD="mdb-user-password-CHANGE-ME"
9export MDB_SEARCH_SYNC_USER_PASSWORD="search-sync-user-password-CHANGE-ME"
10
11export MDB_TLS_CA_SECRET_NAME="ca"
12export MDB_SEARCH_TLS_SECRET_NAME="mdbs-search-tls"
13
14export MDB_SEARCH_SERVICE_NAME="mdbs-search"
15export MDB_SEARCH_HOSTNAME="mdbs-search.example.com"
16
17# External MongoDB replica set members - REPLACE THESE VALUES with your actual external MongoDB hosts
18# In production, replace with your actual external MongoDB replica set members
19export MDB_EXTERNAL_HOST_0="mdbc-rs-0.mdbc-rs-svc.${MDB_NS}.svc.cluster.local:27017"
20export MDB_EXTERNAL_HOST_1="mdbc-rs-1.mdbc-rs-svc.${MDB_NS}.svc.cluster.local:27017"
21export MDB_EXTERNAL_HOST_2="mdbc-rs-2.mdbc-rs-svc.${MDB_NS}.svc.cluster.local:27017"
22
23# REPLACE with your actual external MongoDB replica set name
24export MDB_EXTERNAL_REPLICA_SET_NAME="mdbc-rs"
25
26export OPERATOR_HELM_CHART="mongodb/mongodb-kubernetes"
27export OPERATOR_ADDITIONAL_HELM_VALUES=""
28
29export MDB_CONNECTION_STRING="mongodb://mdb-user:${MDB_USER_PASSWORD}@${MDB_EXTERNAL_HOST_0}/?replicaSet=${MDB_EXTERNAL_REPLICA_SET_NAME}&tls=true&tlsCAFile=/tls/ca.crt"

Observe que essas variáveis de ambiente só estão disponíveis na sessão atual do terminal e precisarão ser definidas novamente em qualquer nova sessão de terminal.

2

O Helm automatiza a implantação e o gerenciamento de instâncias do MongoDB no Kubernetes. Se você já adicionou o repositório Helm que contém o gráfico Helm para instalar o operador Kubernetes Operator, pule esta etapa. Caso contrário, adicione o repositório Helm.

Para adicionar, copie, cole e execute o seguinte comando:

1helm repo add mongodb https://mongodb.github.io/helm-charts
2helm repo update mongodb
3helm search repo mongodb/mongodb-kubernetes
1"mongodb" has been added to your repositories
2Hang tight while we grab the latest from your chart repositories...
3...Successfully got an update from the "mongodb" chart repository
4Update Complete. ⎈Happy Helming!⎈
5NAME CHART VERSION APP VERSION DESCRIPTION
6mongodb/mongodb-kubernetes 1.6.1 MongoDB Controllers for Kubernetes translate th...
3

O Operador Kubernetes MongoDB MongoDBOpsManagerobserva, e MongoDBSearch recursos personalizados e gerencia o ciclo de vida de suas implantações do MongoDB . Se você já instalou os Controladores MongoDB para Kubernetes Operator, pule esta etapa. Caso contrário, instale os Controladores MongoDB para Kubernetes Operator a partir do repositório Helm que você adicionou na etapa anterior.

Para instalar os Controladores MongoDB para o Operador Kubernetes no namespace do mongodb, copie, cole e execute o seguinte:

1helm upgrade --install --debug --kube-context "${K8S_CTX}" \
2 --create-namespace \
3 --namespace="${MDB_NS}" \
4 mongodb-kubernetes \
5 ${OPERATOR_ADDITIONAL_HELM_VALUES:+--set ${OPERATOR_ADDITIONAL_HELM_VALUES}} \
6 "${OPERATOR_HELM_CHART}"
1Release "mongodb-kubernetes" does not exist. Installing it now.
2NAME: mongodb-kubernetes
3LAST DEPLOYED: Wed Dec 17 11:23:39 2025
4NAMESPACE: mongodb
5STATUS: deployed
6REVISION: 1
7TEST SUITE: None
8USER-SUPPLIED VALUES:
9{}
10
11COMPUTED VALUES:
12agent:
13 name: mongodb-agent
14 version: 108.0.12.8846-1
15community:
16 agent:
17 name: mongodb-agent
18 version: 108.0.2.8729-1
19 mongodb:
20 imageType: ubi8
21 name: mongodb-community-server
22 repo: quay.io/mongodb
23 registry:
24 agent: quay.io/mongodb
25 resource:
26 members: 3
27 name: mongodb-replica-set
28 tls:
29 caCertificateSecretRef: tls-ca-key-pair
30 certManager:
31 certDuration: 8760h
32 renewCertBefore: 720h
33 certificateKeySecretRef: tls-certificate
34 enabled: false
35 sampleX509User: false
36 useCertManager: true
37 useX509: false
38 version: 4.4.0
39database:
40 name: mongodb-kubernetes-database
41 version: 1.6.1
42initAppDb:
43 name: mongodb-kubernetes-init-appdb
44 version: 1.6.1
45initDatabase:
46 name: mongodb-kubernetes-init-database
47 version: 1.6.1
48initOpsManager:
49 name: mongodb-kubernetes-init-ops-manager
50 version: 1.6.1
51managedSecurityContext: false
52mongodb:
53 appdbAssumeOldFormat: false
54 name: mongodb-enterprise-server
55 repo: quay.io/mongodb
56multiCluster:
57 clusterClientTimeout: 10
58 clusters: []
59 kubeConfigSecretName: mongodb-enterprise-operator-multi-cluster-kubeconfig
60 performFailOver: true
61operator:
62 additionalArguments: []
63 affinity: {}
64 baseName: mongodb-kubernetes
65 createOperatorServiceAccount: true
66 createResourcesServiceAccountsAndRoles: true
67 deployment_name: mongodb-kubernetes-operator
68 enableClusterMongoDBRoles: true
69 enablePVCResize: true
70 env: prod
71 maxConcurrentReconciles: 1
72 mdbDefaultArchitecture: non-static
73 name: mongodb-kubernetes-operator
74 nodeSelector: {}
75 operator_image_name: mongodb-kubernetes
76 podSecurityContext:
77 runAsNonRoot: true
78 runAsUser: 2000
79 replicas: 1
80 resources:
81 limits:
82 cpu: 1100m
83 memory: 1Gi
84 requests:
85 cpu: 500m
86 memory: 200Mi
87 securityContext: {}
88 telemetry:
89 collection:
90 clusters: {}
91 deployments: {}
92 frequency: 1h
93 operators: {}
94 send:
95 frequency: 168h
96 tolerations: []
97 vaultSecretBackend:
98 enabled: false
99 tlsSecretRef: ""
100 version: 1.6.1
101 watchedResources:
102 - mongodb
103 - opsmanagers
104 - mongodbusers
105 - mongodbcommunity
106 - mongodbsearch
107 webhook:
108 installClusterRole: true
109 registerConfiguration: true
110opsManager:
111 name: mongodb-enterprise-ops-manager-ubi
112readinessProbe:
113 name: mongodb-kubernetes-readinessprobe
114 version: 1.0.23
115registry:
116 agent: quay.io/mongodb
117 database: quay.io/mongodb
118 imagePullSecrets: null
119 initAppDb: quay.io/mongodb
120 initDatabase: quay.io/mongodb
121 initOpsManager: quay.io/mongodb
122 operator: quay.io/mongodb
123 opsManager: quay.io/mongodb
124 pullPolicy: Always
125 readinessProbe: quay.io/mongodb
126 versionUpgradeHook: quay.io/mongodb
127search:
128 name: mongodb-search
129 repo: quay.io/mongodb
130 version: 0.55.0
131versionUpgradeHook:
132 name: mongodb-kubernetes-operator-version-upgrade-post-start-hook
133 version: 1.0.10
134
135HOOKS:
136MANIFEST:
137---
138# Source: mongodb-kubernetes/templates/database-roles.yaml
139apiVersion: v1
140kind: ServiceAccount
141metadata:
142 name: mongodb-kubernetes-appdb
143 namespace: mongodb
144---
145# Source: mongodb-kubernetes/templates/database-roles.yaml
146apiVersion: v1
147kind: ServiceAccount
148metadata:
149 name: mongodb-kubernetes-database-pods
150 namespace: mongodb
151---
152# Source: mongodb-kubernetes/templates/database-roles.yaml
153apiVersion: v1
154kind: ServiceAccount
155metadata:
156 name: mongodb-kubernetes-ops-manager
157 namespace: mongodb
158---
159# Source: mongodb-kubernetes/templates/operator-sa.yaml
160apiVersion: v1
161kind: ServiceAccount
162metadata:
163 name: mongodb-kubernetes-operator
164 namespace: mongodb
165---
166# Source: mongodb-kubernetes/templates/operator-roles-clustermongodbroles.yaml
167kind: ClusterRole
168apiVersion: rbac.authorization.k8s.io/v1
169metadata:
170 name: mongodb-kubernetes-operator-mongodb-cluster-mongodb-role
171rules:
172 - apiGroups:
173 - mongodb.com
174 verbs:
175 - '*'
176 resources:
177 - clustermongodbroles
178---
179# Source: mongodb-kubernetes/templates/operator-roles-telemetry.yaml
180# Additional ClusterRole for clusterVersionDetection
181kind: ClusterRole
182apiVersion: rbac.authorization.k8s.io/v1
183metadata:
184 name: mongodb-kubernetes-operator-cluster-telemetry
185rules:
186 # Non-resource URL permissions
187 - nonResourceURLs:
188 - "/version"
189 verbs:
190 - get
191 # Cluster-scoped resource permissions
192 - apiGroups:
193 - ''
194 resources:
195 - namespaces
196 resourceNames:
197 - kube-system
198 verbs:
199 - get
200 - apiGroups:
201 - ''
202 resources:
203 - nodes
204 verbs:
205 - list
206---
207# Source: mongodb-kubernetes/templates/operator-roles-webhook.yaml
208kind: ClusterRole
209apiVersion: rbac.authorization.k8s.io/v1
210metadata:
211 name: mongodb-kubernetes-operator-mongodb-webhook-cr
212rules:
213 - apiGroups:
214 - "admissionregistration.k8s.io"
215 resources:
216 - validatingwebhookconfigurations
217 verbs:
218 - get
219 - create
220 - update
221 - delete
222 - apiGroups:
223 - ""
224 resources:
225 - services
226 verbs:
227 - get
228 - list
229 - watch
230 - create
231 - update
232 - delete
233---
234# Source: mongodb-kubernetes/templates/operator-roles-clustermongodbroles.yaml
235kind: ClusterRoleBinding
236apiVersion: rbac.authorization.k8s.io/v1
237metadata:
238 name: mongodb-kubernetes-operator-mongodb-cluster-mongodb-role-binding
239roleRef:
240 apiGroup: rbac.authorization.k8s.io
241 kind: ClusterRole
242 name: mongodb-kubernetes-operator-mongodb-cluster-mongodb-role
243subjects:
244 - kind: ServiceAccount
245 name: mongodb-kubernetes-operator
246 namespace: mongodb
247---
248# Source: mongodb-kubernetes/templates/operator-roles-telemetry.yaml
249# ClusterRoleBinding for clusterVersionDetection
250kind: ClusterRoleBinding
251apiVersion: rbac.authorization.k8s.io/v1
252metadata:
253 name: mongodb-kubernetes-operator-mongodb-cluster-telemetry-binding
254roleRef:
255 apiGroup: rbac.authorization.k8s.io
256 kind: ClusterRole
257 name: mongodb-kubernetes-operator-cluster-telemetry
258subjects:
259 - kind: ServiceAccount
260 name: mongodb-kubernetes-operator
261 namespace: mongodb
262---
263# Source: mongodb-kubernetes/templates/operator-roles-webhook.yaml
264kind: ClusterRoleBinding
265apiVersion: rbac.authorization.k8s.io/v1
266metadata:
267 name: mongodb-kubernetes-operator-mongodb-webhook-crb
268roleRef:
269 apiGroup: rbac.authorization.k8s.io
270 kind: ClusterRole
271 name: mongodb-kubernetes-operator-mongodb-webhook-cr
272subjects:
273 - kind: ServiceAccount
274 name: mongodb-kubernetes-operator
275 namespace: mongodb
276---
277# Source: mongodb-kubernetes/templates/database-roles.yaml
278kind: Role
279apiVersion: rbac.authorization.k8s.io/v1
280metadata:
281 name: mongodb-kubernetes-appdb
282 namespace: mongodb
283rules:
284 - apiGroups:
285 - ''
286 resources:
287 - secrets
288 verbs:
289 - get
290 - apiGroups:
291 - ''
292 resources:
293 - pods
294 verbs:
295 - patch
296 - delete
297 - get
298---
299# Source: mongodb-kubernetes/templates/operator-roles-base.yaml
300kind: Role
301apiVersion: rbac.authorization.k8s.io/v1
302metadata:
303 name: mongodb-kubernetes-operator
304 namespace: mongodb
305rules:
306 - apiGroups:
307 - ''
308 resources:
309 - services
310 verbs:
311 - get
312 - list
313 - watch
314 - create
315 - update
316 - delete
317 - apiGroups:
318 - ''
319 resources:
320 - secrets
321 - configmaps
322 verbs:
323 - get
324 - list
325 - create
326 - update
327 - delete
328 - watch
329 - apiGroups:
330 - apps
331 resources:
332 - statefulsets
333 verbs:
334 - create
335 - get
336 - list
337 - watch
338 - delete
339 - update
340 - apiGroups:
341 - ''
342 resources:
343 - pods
344 verbs:
345 - get
346 - list
347 - watch
348 - delete
349 - deletecollection
350 - apiGroups:
351 - mongodbcommunity.mongodb.com
352 resources:
353 - mongodbcommunity
354 - mongodbcommunity/status
355 - mongodbcommunity/spec
356 - mongodbcommunity/finalizers
357 verbs:
358 - '*'
359 - apiGroups:
360 - mongodb.com
361 verbs:
362 - '*'
363 resources:
364 - mongodb
365 - mongodb/finalizers
366 - mongodbusers
367 - mongodbusers/finalizers
368 - opsmanagers
369 - opsmanagers/finalizers
370 - mongodbmulticluster
371 - mongodbmulticluster/finalizers
372 - mongodbsearch
373 - mongodbsearch/finalizers
374 - mongodb/status
375 - mongodbusers/status
376 - opsmanagers/status
377 - mongodbmulticluster/status
378 - mongodbsearch/status
379---
380# Source: mongodb-kubernetes/templates/operator-roles-pvc-resize.yaml
381kind: Role
382apiVersion: rbac.authorization.k8s.io/v1
383metadata:
384 name: mongodb-kubernetes-operator-pvc-resize
385 namespace: mongodb
386rules:
387 - apiGroups:
388 - ''
389 resources:
390 - persistentvolumeclaims
391 verbs:
392 - get
393 - delete
394 - list
395 - watch
396 - patch
397 - update
398---
399# Source: mongodb-kubernetes/templates/database-roles.yaml
400kind: RoleBinding
401apiVersion: rbac.authorization.k8s.io/v1
402metadata:
403 name: mongodb-kubernetes-appdb
404 namespace: mongodb
405roleRef:
406 apiGroup: rbac.authorization.k8s.io
407 kind: Role
408 name: mongodb-kubernetes-appdb
409subjects:
410 - kind: ServiceAccount
411 name: mongodb-kubernetes-appdb
412 namespace: mongodb
413---
414# Source: mongodb-kubernetes/templates/operator-roles-base.yaml
415kind: RoleBinding
416apiVersion: rbac.authorization.k8s.io/v1
417metadata:
418 name: mongodb-kubernetes-operator
419 namespace: mongodb
420roleRef:
421 apiGroup: rbac.authorization.k8s.io
422 kind: Role
423 name: mongodb-kubernetes-operator
424subjects:
425 - kind: ServiceAccount
426 name: mongodb-kubernetes-operator
427 namespace: mongodb
428---
429# Source: mongodb-kubernetes/templates/operator-roles-pvc-resize.yaml
430kind: RoleBinding
431apiVersion: rbac.authorization.k8s.io/v1
432metadata:
433 name: mongodb-kubernetes-operator-pvc-resize-binding
434 namespace: mongodb
435roleRef:
436 apiGroup: rbac.authorization.k8s.io
437 kind: Role
438 name: mongodb-kubernetes-operator-pvc-resize
439subjects:
440 - kind: ServiceAccount
441 name: mongodb-kubernetes-operator
442 namespace: mongodb
443---
444# Source: mongodb-kubernetes/templates/operator.yaml
445apiVersion: apps/v1
446kind: Deployment
447metadata:
448 name: mongodb-kubernetes-operator
449 namespace: mongodb
450spec:
451 replicas: 1
452 selector:
453 matchLabels:
454 app.kubernetes.io/component: controller
455 app.kubernetes.io/name: mongodb-kubernetes-operator
456 app.kubernetes.io/instance: mongodb-kubernetes-operator
457 template:
458 metadata:
459 labels:
460 app.kubernetes.io/component: controller
461 app.kubernetes.io/name: mongodb-kubernetes-operator
462 app.kubernetes.io/instance: mongodb-kubernetes-operator
463 spec:
464 serviceAccountName: mongodb-kubernetes-operator
465 securityContext:
466 runAsNonRoot: true
467 runAsUser: 2000
468 containers:
469 - name: mongodb-kubernetes-operator
470 image: "quay.io/mongodb/mongodb-kubernetes:1.6.1"
471 imagePullPolicy: Always
472 args:
473 - -watch-resource=mongodb
474 - -watch-resource=opsmanagers
475 - -watch-resource=mongodbusers
476 - -watch-resource=mongodbcommunity
477 - -watch-resource=mongodbsearch
478 - -watch-resource=clustermongodbroles
479 command:
480 - /usr/local/bin/mongodb-kubernetes-operator
481 resources:
482 limits:
483 cpu: 1100m
484 memory: 1Gi
485 requests:
486 cpu: 500m
487 memory: 200Mi
488 env:
489 - name: OPERATOR_ENV
490 value: prod
491 - name: MDB_DEFAULT_ARCHITECTURE
492 value: non-static
493 - name: NAMESPACE
494 valueFrom:
495 fieldRef:
496 fieldPath: metadata.namespace
497 - name: WATCH_NAMESPACE
498 valueFrom:
499 fieldRef:
500 fieldPath: metadata.namespace
501 - name: MDB_OPERATOR_TELEMETRY_COLLECTION_FREQUENCY
502 value: "1h"
503 - name: MDB_OPERATOR_TELEMETRY_SEND_FREQUENCY
504 value: "168h"
505 - name: CLUSTER_CLIENT_TIMEOUT
506 value: "10"
507 - name: IMAGE_PULL_POLICY
508 value: Always
509 # Database
510 - name: MONGODB_ENTERPRISE_DATABASE_IMAGE
511 value: quay.io/mongodb/mongodb-kubernetes-database
512 - name: INIT_DATABASE_IMAGE_REPOSITORY
513 value: quay.io/mongodb/mongodb-kubernetes-init-database
514 - name: INIT_DATABASE_VERSION
515 value: "1.6.1"
516 - name: DATABASE_VERSION
517 value: "1.6.1"
518 # Ops Manager
519 - name: OPS_MANAGER_IMAGE_REPOSITORY
520 value: quay.io/mongodb/mongodb-enterprise-ops-manager-ubi
521 - name: INIT_OPS_MANAGER_IMAGE_REPOSITORY
522 value: quay.io/mongodb/mongodb-kubernetes-init-ops-manager
523 - name: INIT_OPS_MANAGER_VERSION
524 value: "1.6.1"
525 # AppDB
526 - name: INIT_APPDB_IMAGE_REPOSITORY
527 value: quay.io/mongodb/mongodb-kubernetes-init-appdb
528 - name: INIT_APPDB_VERSION
529 value: "1.6.1"
530 - name: OPS_MANAGER_IMAGE_PULL_POLICY
531 value: Always
532 - name: AGENT_IMAGE
533 value: "quay.io/mongodb/mongodb-agent:108.0.12.8846-1"
534 - name: MDB_AGENT_IMAGE_REPOSITORY
535 value: "quay.io/mongodb/mongodb-agent"
536 - name: MONGODB_IMAGE
537 value: mongodb-enterprise-server
538 - name: MONGODB_REPO_URL
539 value: quay.io/mongodb
540 - name: PERFORM_FAILOVER
541 value: 'true'
542 - name: MDB_MAX_CONCURRENT_RECONCILES
543 value: "1"
544 - name: POD_NAME
545 valueFrom:
546 fieldRef:
547 fieldPath: metadata.name
548 - name: OPERATOR_NAME
549 value: mongodb-kubernetes-operator
550 # Community Env Vars Start
551 - name: MDB_COMMUNITY_AGENT_IMAGE
552 value: "quay.io/mongodb/mongodb-agent:108.0.2.8729-1"
553 - name: VERSION_UPGRADE_HOOK_IMAGE
554 value: "quay.io/mongodb/mongodb-kubernetes-operator-version-upgrade-post-start-hook:1.0.10"
555 - name: READINESS_PROBE_IMAGE
556 value: "quay.io/mongodb/mongodb-kubernetes-readinessprobe:1.0.23"
557 - name: MDB_COMMUNITY_IMAGE
558 value: "mongodb-community-server"
559 - name: MDB_COMMUNITY_REPO_URL
560 value: "quay.io/mongodb"
561 - name: MDB_COMMUNITY_IMAGE_TYPE
562 value: "ubi8"
563 # Community Env Vars End
564 - name: MDB_SEARCH_REPO_URL
565 value: "quay.io/mongodb"
566 - name: MDB_SEARCH_NAME
567 value: "mongodb-search"
568 - name: MDB_SEARCH_VERSION
569 value: "0.55.0"

O comando anterior instala o Kubernetes Operator no namespace mongodb , que é criado se ainda não existir. Após a instalação, o Operador Kubernetes procura recursos personalizados do MongoDBSearch e gerencia o ciclo de vida de seus sistemas MongoDB Search e Vector Search .

1

O processo do mongot exige credenciais de autenticação para conectar ao seu sistema MongoDB externo para criar índices de pesquisa e executar consultas de pesquisa. Esta etapa cria os seguintes segredos do Kubernetes:

  • mdb-admin-user-password - credenciais do administrador do MongoDB .

  • mdb-user-password - credenciais do usuário autorizado a realizar queries de pesquisa.

  • mdbc-rs-search-sync-source-password - credenciais de um usuário de pesquisa dedicado usado internamente pelo processo mongot para sincronizar dados e gerenciar índices.

O Kubernetes Operator monta esses segredos nos pods do MongoDB .

Para criar os segredos, copie, cole e execute o seguinte no namespace onde você planeja implantar a Pesquisa MongoDB e a Vector Search:

1# Create admin user secret
2kubectl create secret generic mdb-admin-user-password \
3 --from-literal=password="${MDB_ADMIN_USER_PASSWORD}" \
4 --dry-run=client -o yaml | kubectl apply --context "${K8S_CTX}" --namespace "${MDB_NS}" -f -
5
6# Create search sync source user secret
7kubectl create secret generic "${MDB_RESOURCE_NAME}-search-sync-source-password" \
8 --from-literal=password="${MDB_SEARCH_SYNC_USER_PASSWORD}" \
9 --dry-run=client -o yaml | kubectl apply --context "${K8S_CTX}" --namespace "${MDB_NS}" -f -
10
11# Create regular user secret
12kubectl create secret generic mdb-user-password \
13 --from-literal=password="${MDB_USER_PASSWORD}" \
14 --dry-run=client -o yaml | kubectl apply --context "${K8S_CTX}" --namespace "${MDB_NS}" -f -
15
16echo "User secrets created."
1secret/mdb-admin-user-password created
2secret/mdbc-rs-search-sync-source-password created
3secret/mdb-user-password created
2

Você pode implementar uma instância do nó de pesquisa sem nenhum balanceamento de carga. Para implantar, conclua as seguintes etapas:

  1. Crie um recurso personalizado do MongoDBSearch denominado mdbs.

    Este recurso contém o seguinte:

    spec.source.external.hostAndPorts

    Lista de nós externos do conjunto de réplicas do MongoDB .

    spec.source.username

    Nome de usuário do usuário de sincronização de pesquisa.

    spec.source.passwordSecretRef

    Pesquise a senha do usuário de sincronização.

    spec.source.external.tls.ca.name

    Configura os pods MongoDBSearch para confiar no banco de dados externo. Ele aponta para o segredo do Kubernetes que contém o certificado de CA público para seu MongoDB externo.

    spec.security.tls.certificateKeySecretRef.name

    Protege o serviço MongoDBSearch. Ele aponta para o segredo do Kubernetes que contém o certificado do servidor TLS e a chave privada que os pods do MongoDBSearch apresentarão aos clientes que entram.

    spec.resourceRequirements

    Requisitos de recursos de CPU e memória para o container de pesquisa.

    Para saber mais sobre as configurações neste recurso personalizado, consulte Configurações de pesquisa do MongoDB e Vector Search.

    1kubectl apply --context "${K8S_CTX}" -n "${MDB_NS}" -f - <<EOF
    2apiVersion: mongodb.com/v1
    3kind: MongoDBSearch
    4metadata:
    5 name: ${MDB_SEARCH_RESOURCE_NAME:-mdbs}
    6spec:
    7 source:
    8 external:
    9 hostAndPorts:
    10 - ${MDB_EXTERNAL_HOST_0}
    11 - ${MDB_EXTERNAL_HOST_1}
    12 - ${MDB_EXTERNAL_HOST_2}
    13 tls:
    14 ca:
    15 name: ${MDB_TLS_CA_SECRET_NAME}
    16 username: search-sync-source
    17 passwordSecretRef:
    18 name: ${MDB_RESOURCE_NAME}-search-sync-source-password
    19 key: password
    20 security:
    21 tls:
    22 certificateKeySecretRef:
    23 name: ${MDB_SEARCH_TLS_SECRET_NAME}
    24 resourceRequirements:
    25 limits:
    26 cpu: "3"
    27 memory: 5Gi
    28 requests:
    29 cpu: "2"
    30 memory: 3Gi
    31EOF
  2. Aguarde a conclusão do sistema do recurso MongoDBSearch.

    Quando você aplica o recurso personalizado MongoDBSearch, o operador Kubernetes começa a distribuir os nós de pesquisa (Pods). Esta etapa pausa a execução até que a fase de status do recurso mdbs seja Running, o que indica que o MongoDB Search StatefulSet está operacional.

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

Para permitir que suas instâncias externas do MongoDB se conectem ao serviço de pesquisa, você deve configurar o acesso externo para MongoDB Search e Vector Search. Você pode criar um serviço LoadBalancer que exponha os pods de pesquisa fora do cluster do Kubernetes.

Este seguinte serviço expõe o serviço MongoDBSearch na porta 27028 com um endereço IP externo ou nome de host que pode ser acessado de fora do cluster Kubernetes.

1kubectl apply --context "${K8S_CTX}" -n "${MDB_NS}" -f - <<YAML
2apiVersion: v1
3kind: Service
4metadata:
5 name: ${MDB_SEARCH_SERVICE_NAME}
6spec:
7 type: LoadBalancer
8 selector:
9 app: ${MDB_SEARCH_RESOURCE_NAME:-mdbs}-search-svc
10 ports:
11 - name: mongot
12 port: 27028
13 targetPort: 27028
14YAML
15
16echo "Waiting for external IP to be assigned to service ${MDB_SEARCH_SERVICE_NAME}..."
17TIMEOUT=120 # 2 minutes timeout
18ELAPSED=0
19while [ ${ELAPSED} -lt ${TIMEOUT} ]; do
20 EXTERNAL_IP=$(kubectl get service "${MDB_SEARCH_SERVICE_NAME}" --context "${K8S_CTX}" -n "${MDB_NS}" -o jsonpath='{.status.loadBalancer.ingress[0].ip}' 2>/dev/null)
21 if [ -n "${EXTERNAL_IP}" ] && [ "${EXTERNAL_IP}" != "null" ]; then
22 echo "External IP assigned: ${EXTERNAL_IP}"
23 break
24 fi
25 echo "Still waiting for external IP assignment... (${ELAPSED}s/${TIMEOUT}s)"
26 sleep 5
27 ELAPSED=$((ELAPSED + 5))
28done
29
30if [ ${ELAPSED} -ge ${TIMEOUT} ]; then
31 echo "ERROR: Timeout reached (${TIMEOUT}s) while waiting for external IP assignment"
32 echo "LoadBalancer service may take longer to provision or there may be an issue"
33 exit 1
34fi
4

Visualize todos os pods em execução nos pods do seu namespace para os nós do conjunto de réplicas do MongoDB , o operador do MongoDB Controladores for Kubernetes e os nós de pesquisa.

1echo; echo "MongoDBSearch resource"
2kubectl --context "${K8S_CTX}" -n "${MDB_NS}" get mdbs/mdbs
3echo; echo "Search pods running in cluster ${K8S_CTX}"
4kubectl --context "${K8S_CTX}" -n "${MDB_NS}" get pods -l app=mdbs-search-svc
5echo; echo "All pods in namespace ${MDB_NS}"
6kubectl --context "${K8S_CTX}" -n "${MDB_NS}" get pods
1MongoDBSearch resource
2NAME PHASE VERSION AGE
3mdbs Running 0.55.0 33s
4
5Search pods running in cluster kind-kind
6NAME READY STATUS RESTARTS AGE
7mdbs-search-0 1/1 Running 0 33s
8
9All pods in namespace mongodb
10NAME READY STATUS RESTARTS AGE
11mdbc-rs-0 2/2 Running 0 3m3s
12mdbc-rs-1 2/2 Running 0 116s
13mdbc-rs-2 2/2 Running 0 68s
14mdbs-search-0 1/1 Running 0 33s
15mongodb-kubernetes-operator-7bd6cdd889-z9w4z 1/1 Running 0 3m23s

Agora que você implementou com sucesso o MongoDB Search e o Vector Search para uso com o MongoDB Enterprise Edition externo, você pode adicionar dados ao cluster MongoDB , criar índices do MongoDB Search e Vector Search e executar queries em seus dados. Para saber mais, consulte Configurações do MongoDB Search e Vector Search.

Nesta página