Puedes implementar MongoDB Search y búsqueda vectorial junto a MongoDB v8.0 o superior utilizando MongoDB Controllers para Kubernetes operador.
Ejemplo de especificación de recursos
El siguiente ejemplo muestra la configuración dentro del spec objeto para la implementación de MongoDB Search y búsqueda vectorial. Para obtener más información sobre estos ajustes, consulta Requerido Ajustes y Opcional Ajustes.
Ejemplo
1 spec: 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 keyfileSecretRef: 11 name: mdbc-rs-keyfile 12 key: keyfile 13 tls: 14 ca: 15 name: mdbc-rs-ca 16 username: search-sync-source 17 passwordSecretRef: 18 name: mdbc-rs-search-sync-source-password 19 key: password 20 security: 21 tls: 22 certificateKeySecretRef: 23 name: mdbs-tls-secret 24 resourceRequirements: 25 limits: 26 cpu: "3" 27 memory: 5Gi 28 requests: 29 cpu: "2" 30 memory: 3Gi 31 logLevel: INFO
Configuraciones requeridas
Esta sección describe las configuraciones que se requieren para implementar el recurso de MongoDB Search y Búsqueda Vectorial. Si solo se definen los ajustes requeridos en la Definición de Recursos Personalizados (CRD), los Controladores de MongoDB para el Operador de Kubernetes utilizarán los valores predeterminados para todos los ajustes opcionales para configurar MongoDBSearch.
apiVersionTipo: string
Versión del esquema de recursos de MongoDB Kubernetes. Establecer el valor en
mongodb.com/v1.
kindTipo: string
Tipo de recurso de Kubernetes de MongoDB que se va a crear. Configurar esto en
MongoDBSearch.
metadata.namespaceTipo: string
Espacio de nombres donde se debe crear el recurso
MongoDBSearch. Para aprovechar la configuración automática de los recursosMongoDBSearchyMongoDBoMongoDBCommunity, el recursoMongoDBSearchdebe crearse en el mismo namespace que el recursoMongoDBoMongoDBCommunity.
metadata.nameTipo: string
Identificador único del recurso
MongoDBSearch. El nombre del recurso puede tener un máximo de 44 caracteres.
Configuraciones opcionales
Esta sección describe los ajustes opcionales para el recurso MongoDB Search y búsqueda vectorial. Si omite la configuración opcional y define solo la configuración obligatoria en la CRD, los controladores de MongoDB para Kubernetes Operator utilizan los valores por defecto para todas las configuraciones opcionales al configurar MongoDBSearch.
Configuraciones para la configuración de la fuente de datos
spec.sourceTipo: Objeto
Configuración que describe el set de réplicas de origen MongoDB para
mongot. Esto es necesario si:MongoDBes externoMongoDBtiene un nombre diferente deMongoDBSearch
El recurso
MongoDBSearchsiempre debe estar conectado al set de réplicas. Si implementó el set de réplicas usando el operador de Kubernetes conMongoDBoMongoDBCommunityCRD, y sispec.sourceestá vacío, el operador de Kubernetes utiliza lo siguiente basándose en elmetadata.namepara buscar la base de datos en Kubernetes:Busca
MongoDBoMongoDBCommunityrecursos con el mismo nombre que se estableció parametadata.nameenMongoDBSearch, en el mismo namespace.Encuentra el secreto de la contraseña para el usuario
mongotdel secreto<MongoDBSearch.metadata.name>-search-sync-source-password.
spec.source.mongodbResourceRef.nameTipo: string
Nombre del recurso
MongoDBoMongoDBCommunitya asociar con este recurso MongoDB Search y búsqueda vectorial. No puede tener más de un recursoMongoDBSearchhaciendo referencia al mismo recursoMongoDBoMongoDBCommunity. Si especifica un nombre diferente, debe señalar explícitamente elMongoDBoMongoDBCommunitydonde desea habilitar MongoDB Search y búsqueda vectorial.Utiliza este campo solo si tu recurso
MongoDBoMongoDBCommunityestá desplegado en el mismo clúster de Kubernetes y se encuentra en el mismo namespace que tu recursoMongoDBSearch. Configurar este campo permite que el Operador de Kubernetes realice automáticamente las siguientes acciones:Establece las cadenas de conexión adecuadas a la base de datos.
Vuelve a configurar las implementaciones de la base de datos de MongoDB configurando los parámetros necesarios para activar la funcionalidad de búsqueda y configurar las direcciones de los pods de búsqueda.
Si tu base de datos está implementada fuera de Kubernetes o se encuentra en un diferente namespace, usa
spec.externalpara configurar la conexión a la base de datos. Este campo es excluyente conspec.external.Si se omite, el Operador de Kubernetes buscará
MongoDBoMongoDBCommunityrecurso con el mismo nombre que este recursoMongoDBSearch.
Ajuste para configurar usuarios mongot
spec.source.usernameTipo: string
Nombre de usuario para usar para autenticar
mongotconmongod. El usuario especificado debe tener el rol desearchCoordinator. Si se omite, el Operador Kubernetes asume que el nombre de usuario essearch-sync-source.
spec.source.passwordSecretRef.nameTipo: string
Nombre del secreto que contiene la contraseña que
mongotdebe utilizar para autenticar{se} conmongod. Si se omite, el valor por defecto es<MongoDBSearch.metadata.name>-search-sync-source-password.
spec.source.passwordSecretRef.keyTipo: string
Clave bajo la cual se almacena el valor de la contraseña en el secreto. Si se omite, el valor por defecto es
password.
Configuraciones para conectar con MongoDB externo
Los siguientes ajustes solo se requieren para configurar una conexión a un set de réplicas externo de MongoDB.
spec.source.externalTipo: Objeto
Configuraciones que describen la fuente de datos externa. Este objeto describe la configuración del recurso de MongoDB Search y búsqueda vectorial para conectarse a un MongoDB externo. Estos ajustes solo deben especificarse si deseas conectarte a una MongoDB externa que no fue implementada mediante el Operador de Kubernetes. Si se especifica, estas configuraciones anulan las configuraciones para
spec.source.mongodbResourceRef.name. Si usaste el Operador de Kubernetes para instalar MongoDB en el mismo clúster, estas configuraciones son opcionales.
spec.source.external.hostAndPortsTipo: arreglo de cadenas
Lista de nombres de host y puertos del set de réplicas externas. Esta es una lista de nodos iniciales de host para el set de réplicas de MongoDB. El
mongotse conecta a la base de datos en modo de set de réplicas y obtiene la lista de todos los demás nodos utilizandodb.hello().Ejemplo
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.keyfileSecretRefTipo: Objeto
Referencia al secreto de Kubernetes que contiene el archivo clave para la autenticación interna del clúster.
spec.source.external.keyfileSecretRef.nameTipo: string
Nombre del archivo clave utilizado para autenticar
mongodamongot. El nombre de secreto especificado debe contener el mismo archivo de clave que utilizan los miembros del set de réplicas de MongoDB para la comunicación interna.
spec.source.external.keyfileSecretRef.keyTipo: string
Contenido del keyfile como string.
Tip
Puedes encontrar keyfile en el campo
auth.keyde la configuración de automatización de tu instancia de Cloud Manager u Ops Manager.
spec.source.external.tlsTipo: Objeto
Configuraciones de TLS que
mongotdebe usar al conectarse a la base de datos externa MongoDB.
spec.source.external.tls.ca.nameTipo: string
Nombre del Secreto que contiene la cadena confiable de las autoridades de certificación que emitieron el certificado TLS utilizado por los nodos
mongod.Ejemplo
spec: source: external: tls: ca: name: trusted-ca El certificado (o los certificados si se trata de una cadena de certificados de CA) debe especificarse bajo la clave
ca.crten este Secreto.Ejemplo
name: Secret apiVersion: v1 metadata: name: trusted-ca data: ca.crt: | -----BEGIN CERTIFICATE----- MIIDBTCCAe2gAwIBAgIIH3EOUAGAsx0wDQYJKoZIhvcNAQELBQAwFTETMBEGA1UE [...] U/4rN8Ias/FONYFRtGfs9uXHmo2MP04BF+9ED2dlbNDUbat+6XCozLJj98nI4VEi qaV3JrVFHTgN -----END CERTIFICATE-----
Ajustes para la Seguridad
spec.securityTipo: Objeto
Configuración de seguridad del servidor de escucha
mongot.
spec.security.tlsTipo: Objeto
TLS configuración para
mongot. Si se omite,mongotno utilizará TLS para conexiones entrantes.
spec.security.tls.certificateKeySecretRef.nameTipo: string
Nombre de un secreto TLS en el mismo namespace que contenga la llave privada (
tls.key) y el certificado (tls.crt). El secreto puede ser de tipokubernetes.io/tls(emitido por cert-manager) o puede ser creado manualmente. Esto es necesario para habilitar TLS enmongot.
Configuraciones para el provisionamineto de recursos
spec.resourceRequirementsTipo: core/v1/ResourceRequirements
CPU y memoria que el contenedor
mongodb-searchpuede solicitar y tener limitados. Recomendamos utilizar este campo para personalizar las asignaciones de recursos en lugar de sobrescribirlo conspec.statefulSet.Si se omite, el Operador de Kubernetes utiliza los siguientes valores por defecto:
requests: cpu: 2 memory: 2G
spec.resourceRequirements.limitsTipo: Objeto
Límite superior en el recurso, CPU y memoria, que el contenedor
mongodb-searchpuede consumir. Por defecto, no se establecen límites. Si se omite, el pod no está restringido y, por lo tanto, podría usar todos los recursos del nodo. Recomendamos establecer límites según su carga de trabajo.
spec.resourceRequirements.requestsTipo: Objeto
Cantidad de CPU y memoria solicitada para el contenedor
mongodb-search. En ausencia de valores especificados, el Operador de Kubernetes utilizará los siguientes valores por defecto:requests: cpu: 2 memory: 2G
spec.persistence.singleTipo: Objeto
Configuración de almacenamiento para el volumen persistente de MongoDB Search y búsqueda vectorial donde se almacenan los índices de MongoDB Search y búsqueda vectorial. Cada instancia de búsqueda (pod) tiene su propio almacenamiento independiente para mantener índices, que no se comparte con la base de datos MongoDB. Solo los metadatos del índice (definiciones) se almacenan en la propia base de datos.
EscalarTipo de datoDescripciónlabelSelectorstring
Etiqueta utilizada para vincular volúmenes montados a directorios.
storagestring
Tamaño mínimo de Volumen Persistente que debe montarse. Este valor se expresa como un número entero seguido de una unidad de almacenamiento en notación JEDEC.
El valor por defecto es 16 Gi.
Por ejemplo, si set de réplicas requiere 60 gigabytes de espacio de almacenamiento, establece este valor en
60Gi.storageClassstring
Tipo de almacenamiento especificado en un Reclamo de volumen persistente. Puede crear este tipo de almacenamiento como un objeto StorageClass antes de usarlo en esta especificación de objeto.
Asegúrate de establecer el StorageClass
reclaimPolicycomo Retain. Esto garantiza que los datos se conserven cuando se elimine una Solicitud de Volumen Persistente.MongoDBSearchsolo admite el campo de persistenciasingle. Si se omite, el Kubernetes operador establecespec.persistence.single.storagea10GB.
Configuraciones para registros
spec.logLevelTipo: string
Nivel de verbosidad de los registros de
mongot. El valor puede ser uno de los siguientes:TRACEDEBUGINFOWARNERROR
Si se omite, es por defecto
INFO.
Otros ajustes
spec.versionTipo: string
Versión de la imagen docker de
mongodb-search. Si se omite, el Kubernetes operador elige automáticamente la versión más nueva deMongoDBSearch. Puede configurarse explícitamente para evitar actualizaciones automáticas cuando la versión de Kubernetes Operator sea actualizada.
spec.statefulSetTipo: apps/v1/StatefulSet
Especificación para el StatefulSet, creado para la implementación de
mongotpods que sobrescribe la configuración aplicada por el operador de Kubernetes. Las sobrescrituras siempre se aplican al final. Admite tanto los camposspec.statefulSet.speccomospec.statefulSet.metadata.Nota
No establezcas requisitos de recursos o configuraciones de persistencia usando
spec.statefulSet. En su lugar, utilice los camposspec.resourceRequirementsyspec.persistencerespectivamente.