Puede implementar MongoDB Search y búsqueda vectorial junto con MongoDB 8.2 o posterior usando MongoDB Controllers para el 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.
Nota
Este ejemplo no es una configuración funcional. Contiene todos los campos disponibles completados con valores de muestra para referencia. Algunos campos son mutuamente excluyentes (por ejemplo, source.mongodbResourceRef y source.external). Consulta las descripciones de los campos a continuación para conocer las combinaciones válidas.
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 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: {}
Configuraciones requeridas
Esta sección describe la configuración requerida para implementar el recurso MongoDB Search y búsqueda vectorial. Si defines solo la configuración requerida en la Definición de recurso Personalizada (CRD), los MongoDB Controllers para Kubernetes Operator usarán los valores por defecto para todas las configuraciones opcionales al 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 MongoDB en Kubernetes que se va a crear. Configura esto como MongoDBSearch.
metadata.namespaceTipo: string
Espacio de nombres donde se debe crear el recurso MongoDBSearch. Para aprovechar la configuración automática de MongoDBSearch y los recursos
MongoDBoMongoDBCommunity, el recurso MongoDBSearch debe crearse en el mismo namespace que el recursoMongoDBoMongoDBCommunity.
metadata.nameTipo: string
Identificador único del recurso MongoDBSearch. El nombre del recurso puede tener una longitud máxima 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 operador utilizan los valores por defecto de todas las configuraciones opcionales para configurar MongoDBSearch.
Configuraciones para la configuración de la fuente de datos
spec.sourceTipo: Objeto
Configuración que describe la fuente de MongoDB para
mongot. La fuente puede ser un set de réplicas o un clúster particionado. Esta configuración es obligatoria si:MongoDBes externoMongoDBtiene un nombre diferente de MongoDBSearch
El recurso MongoDBSearch siempre debe estar conectado a una implementación de MongoDB. Si realizó la implementación usando el operador de Kubernetes con
MongoDBoMongoDBCommunityCRD, y sispec.sourceestá vacío, el operador de Kubernetes utiliza lo siguiente según elmetadata.namepara buscar la base de datos en Kubernetes:Encuentra
MongoDBoMongoDBCommunityrecursos con el mismo nombre que se establece parametadata.nameen MongoDBSearch, 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
MongoDBoMongoDBCommunitypara asociar con este recurso de MongoDB Search y búsqueda vectorial. El operador de Kubernetes admite tanto los sets de réplicas como los clústeres. No puede tener más de un recurso MongoDBSearch que haga referencia al mismo recursoMongoDBoMongoDBCommunity. Si especifica un nombre diferente, debe señalar explícitamente elMongoDBoMongoDBCommunitydonde desea habilitar MongoDB Search y la búsqueda vectorial.Si hace referencia a un recurso
MongoDBde clúster particionado, el operador de Kubernetes autodetecta la topología de partición (nombres de partición, miembros del conjunto de réplicas, enrutadoresmongos) y crea automáticamente conjuntos de estadomongotpor partición. No es necesario realizar ninguna configuración externa adicional.Este campo solo se debe utilizar si el recurso de
MongoDBoMongoDBCommunityestá implementado en el mismo clúster de Kubernetes y en el mismo espacio de nombres que el recurso de MongoDBSearch. Si configura este campo, el Operador de Kubernetes automáticamente:Establece las cadenas de conexión adecuadas a la base de datos.
Reconfigura las implementaciones de la base de datos MongoDB estableciendo los parámetros necesarios para habilitar la funcionalidad de búsqueda y configurando 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 busca un recurso
MongoDBoMongoDBCommunitycon el mismo nombre que este recurso MongoDBSearch.
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.
Configuración para la autenticación x509
spec.source.x509Tipo: Objeto
Configura la autenticación mediante certificado de cliente x509 para la conexión de sincronización
mongot. Si configuras este campo,mongotse autenticará en MongoDB usando x509 en lugar de nombre de usuario y contraseña.Este campo es mutuamente exclusivo con
spec.source.passwordSecretRefyspec.source.username. El operador de Kubernetes rechaza la configuración si se especifican tanto x509 como la autenticación por contraseña.
spec.source.x509.clientCertificateSecretRefTipo: Objeto
Secreto que contiene el certificado de cliente x509 y la clave para la autenticación en la fuente de sincronización de MongoDB. El secreto debe contener las siguientes claves:
tls.crt— Certificado de cliente (obligatorio)tls.key— Llave privada (obligatoria)tls.keyFilePassword— Contraseña para la clave privada (opcional)
Debe especificar este campo si configura
spec.source.x509.Ejemplo
spec: source: x509: clientCertificateSecretRef: name: mongot-x509-client-cert
Configuraciones para conectar con MongoDB externo
Las siguientes configuraciones solo son necesarias para configurar una conexión a una implementación externa 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.
Configuración para conectar a un set de réplicas externo
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().Este campo es mutuamente excluyente con
spec.source.external.shardedCluster. UsehostAndPortspara fuentes de sets de réplicas yshardedClusterpara fuentes de clústeres.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.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 Debe especificar el certificado (o cadena de certificados) 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-----
Configuraciones para conectar a un clúster fragmentado externo
Los siguientes ajustes son necesarios solo para configurar una conexión con un clúster segmentado externo de MongoDB. Extienden la configuración existente de spec.source.external.
Nota
spec.source.external.hostAndPorts (para sets de réplicas) y spec.source.external.shardedCluster son mutuamente excluyentes. Especifica solo uno de ellos.
spec.source.external.shardedClusterTipo: Objeto
Declara un clúster MongoDB particionado externo como fuente de datos para
mongot. Contiene la configuración para los routersmongosy los miembros del conjunto de réplicas por partición.Utilízalo sólo si el clúster compartido de MongoDB está implementado fuera de Kubernetes y no es gestionado por el Operador de Kubernetes. Para los clústeres fragmentados gestionados por operadores implementados con el
MongoDBCRD, utilizaspec.source.mongodbResourceRefen su lugar. El operador de Kubernetes detecta automáticamente la topología de partición.Ejemplo
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.routerTipo: Objeto
Configuración para las instancias
mongos(router) del clúster externo.
spec.source.external.shardedCluster.router.hostsTipo: arreglo de cadenas
Lista de extremos para las instancias de router
mongosen formatohost:port. Todas lasmongotinstancias se conectan a estos routers. Especifique al menos una entrada.Ejemplo
router: hosts: - "mongos1.external:27017" - "mongos2.external:27017"
spec.source.external.shardedCluster.shardsTipo: arreglo de objetos
Lista de todas las particiones del clúster externo de MongoDB. Cada entrada describe el conjunto de réplicas de una partición. El Kubernetes Operator crea un
mongotStatefulSet para cada partición, donde cada StatefulSet contiene el número de pods especificado enspec.replicas. Especifica al menos una entrada de partición.
spec.source.external.shardedCluster.shards[*].shardNameTipo: string
El nombre lógico de la partición. El Operador de Kubernetes utiliza este nombre para la nomenclatura de recursos de Kubernetes (StatefulSets, Servicios, Secretos). El valor puede ser diferente del nombre de la partición de MongoDB.
Restricciones de denominación:
Debe ser único en todas las particiones.
Debe ajustarse a las reglas de nombres de subdominios DNS de Kubernetes (RFC 1123) , las cuales permiten el uso de caracteres alfanuméricos en minúsculas, guión (
-) y punto (.), y exigen que el nombre comience con un caracter alfabético y termine con un caracter alfanumérico. Los guiones bajos (_) no están permitidos.La longitud combinada de
metadata.nameyshardNamedebe ser inferior a 50 caracteres.
Ejemplo
shards: - shardName: "shard-0" hosts: - "shard0-node1.external:27018"
spec.source.external.shardedCluster.shards[*].hostsTipo: arreglo de cadenas
Lista de endpoints de los miembros del conjunto de réplicas
mongodpara esta partición en el formatohost:port. Las instanciasmongotreplican los datos desde estos hosts. Especifique al menos una entrada.Cada set de réplicas (partición) tiene su propio grupo de instancias
mongot, que obtiene los datos solo de ese set de réplicas. Las diferentes particiones nunca comparten las mismas instancias demongot.Ejemplo
shards: - shardName: "shard-0" hosts: - "shard0-node1.external:27018" - "shard0-node2.external:27018" - "shard0-node3.external:27018"
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
Obsoleto desde la versión 1.8.0: Utiliza
spec.security.tls.certsSecretPrefixen su lugar.Nombre del secreto TLS en el mismo namespace que contiene la llave privada (
tls.key) y el certificado (tls.crt). El secreto puede ser de tipokubernetes.io/tls(emitido por cert-manager) o puede crearse manualmente.El Operador de Kubernetes sigue admitiendo este campo para las implementaciones de conjuntos de réplicas por motivos de compatibilidad con versiones anteriores. Sin embargo:
Para implementaciones de clúster segmentado, el operador de Kubernetes rechaza este campo durante la validación. Utilice
spec.security.tls.certsSecretPrefixen su lugar, porque una referencia individual de secreto no puede cubrir certificados por partición.Si especificas tanto
certificateKeySecretRefcomocertsSecretPrefix,certificateKeySecretReftiene prioridad para los despliegues en conjuntos de réplicas.
Para nuevas implementaciones, usa
spec.security.tls.certsSecretPrefixincluso para set de réplicas.
spec.security.tls.certsSecretPrefixTipo: string
Prefijo que el Operador de Kubernetes utiliza para derivar los nombres de los secretos TLS según la convención de nomenclatura. Si configuras este campo, el operador de Kubernetes busca secretos que siguen estos patrones en lugar de requerir referencias explícitas de secretos para cada componente:
ComponentePatrón de nombre secretoCertificado del set de réplicas
mongotservidor{certsSecretPrefix}-{name}-search-certCertificado particionado
mongot(por partición){certsSecretPrefix}-{name}-search-0-{shardName}-certCertificado del servidor de balanceador de carga administrado
{certsSecretPrefix}-{name}-search-lb-0-certCertificado de cliente de balanceador de carga gestionado
{certsSecretPrefix}-{name}-search-lb-0-client-certDónde:
{name}esmetadata.namedel recurso MongoDBSearch{shardName}es el valor quespec.source.external.shardedCluster.shards[*].shardName
Si se omite, este campo se restablece a una string vacía y el operador Kubernetes utiliza
spec.security.tls.certificateKeySecretRefen su lugar.Nota
Para implementaciones de clúster particionado, debes usar
certsSecretPrefixen lugar decertificateKeySecretRef. El operador de Kubernetes rechazacertificateKeySecretRefpara las topologías particionadas porque una única referencia de secreto no puede cubrir los certificados por partición.Ejemplo
spec: security: tls: certsSecretPrefix: my-prefix
Configuración para múltiples instancias de Mongot
spec.replicasTipo: entero
Número de pods
mongota desplegar. Para una fuente de set de réplicas, este es el número total de podsmongot. Para una fuente de clúster con partición, este es el número de podsmongotpor partición.Si
spec.replicases mayor que1, debe configurar tambiénspec.loadBalancerpara enrutar el tráfico entremongody las múltiples instancias demongot.Si se omite, es por defecto
1.Ejemplo
spec: replicas: 2
Configuración para balanceo de carga
spec.loadBalancerTipo: Objeto
Configuración para el balanceo de carga L7 entre
mongod(umongos) ymongot. Este campo es obligatorio sispec.replicases mayor que1. Sispec.replicases1, este campo es opcional. Puedes configurar un balanceador de carga incluso para una sola instanciamongotpara prepararte para un escalado posterior.Se debe establecer exactamente solo uno de
managedounmanaged.El equilibrador de carga afecta el tipo de certificados TLS que ven los clientes de
mongody los nombres de host que deben contener esos certificados:Sin un balanceador de carga,
mongodse conecta directamente amongot. El certificado TLS presentado amongodes el propio certificado demongot. Si el clúster de MongoDB está fuera de Kubernetes, el serviciomongotestá expuesto en un dominio externo. Debe incluir ese dominio externo en el campo SAN (Nombre Alternativo del Sujeto) del certificado TLSmongot.Con un balanceador de carga gestionado (
spec.loadBalancer.managed), el proxy Envoy es el único componente que se conecta directamente amongot. Envoy accede amongotpods utilizando sus FQDN internos de Servicio sin cabeza:set de réplicas:
<pod>.<name>-search-svc.<ns>.svc.cluster.localclúster particionado:
<pod>.<name>-search-0-<shard>-svc.<ns>.svc.cluster.local
Emita el certificado TLS
mongotcon estos dominios locales del clúster en el campo SAN. Puede usar un certificado wildcard para evitar la reemisión de certificados cuando cambie el número de podsmongot. Los procesos externosmongodven el certificado TLS del proxy Envoy, por lo que deben incluir dominos externos en los SANs del certificado Envoy y no en el certificadomongot.
Tip
Permite un balanceador de carga administrado incluso si inicialmente implementas un solo pod
mongot. Con el balanceador de carga en funcionamiento, los dominios en tus certificados TLS se mantienen estables si más adelante escalasspec.replicasporque el balanceador de carga ya está presente entremongodymongot.
spec.loadBalancer.managedTipo: Objeto
Configura un Envoy balanceador de carga gestionado por el operador. El Operador Kubernetes despliega y gestiona el proxy Envoy con un enrutamiento correcto, mTLS y fijación de flujos HTTP/2+ gRPC. Configura este campo a un objeto vacío (
{}) para usar los valores por defecto.Este campo es excluyente con
spec.loadBalancer.unmanaged.Ejemplo
spec: loadBalancer: managed: {}
spec.loadBalancer.managed.externalHostnameTipo: string
Nombre de host que el proxy Envoy espera para la coincidencia SNI en las solicitudes entrantes. El Operador de Kubernetes utiliza este valor para configurar reglas de enrutamiento que coincidan con el campo TLS SNI de las conexiones entrantes
mongod. El certificado de servidor Envoy TLS debe incluir este nombre de host en su campo SAN (Nombre Alternativo del Sujeto).Para clústeres segmentados, el valor debe contener un marcador de posición
{shardName}que el Operador de Kubernetes amplía por partición. Cada partición recibe un nombre de host único y el certificado del servidor Envoy TLS debe incluir todos los nombres de host ampliados de las particiones en sus SANs. Puedes utilizar un certificado comodín para abarcar todas las particiones con un solo certificado y evitar tener que volver a emitirlo cuando se añadan nuevas particiones.Este campo es obligatorio si MongoDB se gestiona externamente (no implementado por el Operador de Kubernetes). Si MongoDB está gestionado por el operador en el mismo clúster, omita este campo porque el Operador de Kubernetes configura automáticamente el enrutamiento.
Ejemplo
# 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.resourceRequirementsTipo: core/v1/ResourceRequirements
CPU y memoria que el contenedor Envoy puede solicitar y limitar. Si especifica esta configuración, el operador de Kubernetes reemplaza por completo los valores por defecto.
Si se omite, el Operador de Kubernetes utiliza los siguientes valores por defecto:
requests: cpu: 100m memory: 128Mi limits: cpu: 500m memory: 512Mi Ejemplo
spec: loadBalancer: managed: resourceRequirements: requests: cpu: "200m" memory: "256Mi" limits: cpu: "1" memory: "1Gi"
spec.loadBalancer.managed.deploymentTipo: Objeto
Anulaciones que el Operador de Kubernetes fusiona en la Implementación de Envoy creada por el operador. Sigue la misma convención que
spec.statefulSeten recursos de MongoDB. Si se omite, el Operador de Kubernetes utiliza los valores por defecto para el Despliegue de Envoy.Este objeto contiene dos campos:
metadata— contiene los camposlabelsyannotationsque el Operador de Kubernetes fusiona en los metadatos de la implementación de Envoy.spec— un objeto apps/v1/DeploymentSpec. El operador de Kubernetes fusiona estos valores anulados en la especificación de implementación de Envoy.
Ejemplo
spec: loadBalancer: managed: deployment: spec: template: spec: nodeSelector: kubernetes.io/os: linux
spec.loadBalancer.unmanagedTipo: Objeto
Configura un balanceador de carga L7 proporcionado por el usuario (Bring Your Own). Tú eres responsable de implementar y configurar el balanceador de carga externamente.
Este campo es excluyente con
spec.loadBalancer.managed.
spec.loadBalancer.unmanaged.endpointTipo: string
El endpoint del balanceador de carga BYO en el formato
host:port. El Kubernetes operador escribe este valor en la configuraciónmongodcomomongotHostysearchIndexManagementHostAndPort.Este campo solo es obligatorio cuando el Operador de Kubernetes gestiona la implementación de MongoDB (utilizando
spec.source.mongodbResourceRef), porque el Operador de Kubernetes necesita el endpoint para configurar los parámetros demongod. Si tanto el balanceador de carga como MongoDB son externos (no gestionados por el Operador de Kubernetes), este campo no es obligatorio porque usted mismo configura los parámetrosmongod.Para clústeres fragmentados, el valor debe contener un marcador de posición
{shardName}que el Operador de Kubernetes expanda por partición.Ejemplo
# 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"
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 no anulas el tamaño del heap de la JVM en
spec.jvmFlags, el Operador de Kubernetes establece el tamaño por defecto del heap (-Xmx) en el 50% de la memoria disponible para el podmongot. Ajustespec.resourceRequirementsen consecuencia para controlar tanto los recursos del pod como el tamaño del heap de la JVM.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.MongoDBSearch solo admite el campo de persistencia
single. 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.
Configuración para métricas
spec.prometheusTipo: Objeto
Esta función sólo está disponible en la versión v1.6 y posteriores.
Configuración para habilitar el endpoint de métricas de Prometheus. Si se omite, se desactiva el endpoint de métricas en
mongot. Para habilitar el endpoint de métricas de Prometheus en el puerto por defecto (9946), especifica un objeto{}vacío en el campospec.prometheus. Para cambiar el puerto, configúralo en el campospec.prometheus.port.
spec.prometheus.portTipo: string
Puerto en el que habilitar el endpoint de métricas de Prometheus. De forma predeterminada, el endpoint de métricas de Prometheus está habilitado en el puerto
9946.
Configuraciones para incrustación automatizada
Importante
La incrustación automatizada está disponible como una funcionalidad preliminar solo para la implementación de MongoDB Community Edition. La funcionalidad y la documentación correspondiente pueden cambiar en cualquier momento durante el periodo de Vista previa. Para obtener más información, consulte Funcionalidades de vista previa.
spec.autoEmbeddingTipo: Objeto
Configuración para Incrustación automátizada para datos de texto en tu colección.
spec.autoEmbedding.embeddingModelAPIKeySecretTipo: Objeto
Configuración para el proveedor de modelos de incrustación API keys. Para habilitar la Embedding Automatizada, debes crear dos claves, una para generar embedding en el momento del índice para los datos de tu colección y otra para generar embedding en el momento de la query para el texto de la query. Si no tienes ya las llaves, te recomendamos que crees llaves a partir de dos proyectos de Atlas. Para obtener más información sobre la creación de claves para los proyectos Atlas desde la Interfaz de Usuario de Atlas, consulte Gestionar claves API.
spec.autoEmbedding.embeddingModelAPIKeySecret.nameTipo: string
Nombre del secreto que contiene las llaves de la API del modelo de incrustación que
mongotdebe utilizar para generar incrustaciones en el momento del índice y de la query.
spec.autoEmbedding.providerEndpointTipo: string
URL de endpoint del modelo de incrustaciones para generar incrustaciones. El valor varía según si creas las claves desde la Interfaz de usuario de Atlas (recomendado) o directamente desde el servicio de incrustaciones (Voyage IA). Para las claves creadas a partir de:
Atlas Interfaz de Usuario, el valor es
https://ai.mongodb.com/v1/embeddings(por defecto)Voyage IA, el valor es
https://api.voyageai.com/v1/embeddings
Configuración para JVM
spec.jvmFlagsTipo: arreglo de cadenas
Señales de JVM pasadas al proceso
mongot. El operador de Kubernetes incluye las banderas sin modificaciones en el comando de iniciomongotusando--jvm-flags "<all flags space-separated>".Si no especifica
-Xmso-Xmxen este campo, el Operador de Kubernetes calcula automáticamente el tamaño del heap configurando ambos en la mitad despec.resourceRequirements.requests.memory. Si no se especifican los requisitos de recursos, el Operador de Kubernetes utiliza un valor predeterminado de 4Gi de solicitud de memoria, lo que genera aproximadamente-Xmx2048m -Xms2048m.Si proporciona sus propios valores de
-Xmso-Xmx, el operador de Kubernetes los utiliza y no los anula. El Operador de Kubernetes siempre añade los parámetros que usted proporciona después de los parámetros calculados por el operador.Para más información, consulte Dimensionamiento del hardware para mongot.
Ejemplo
spec: jvmFlags: - -Xms2g - -Xmx2g
Otros ajustes
spec.versionTipo: string
Versión de
mongodb-searchimagen docker. Si se omite, el Operador de Kubernetes elige automáticamente la versión más reciente de MongoDBSearch. Puedes establecerlo explícitamente para evitar actualizaciones automáticas cuando se actualice la versión del Operador de Kubernetes.
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.
Campos de estado
El Operador de Kubernetes reporta información de estado bajo el campo status del recurso MongoDBSearch.
status.loadBalancerTipo: Objeto
Estado del balanceador de carga gestionado por el operador (Envoy). Este campo solo está presente cuando
spec.loadBalancer.managedestá establecido.
status.loadBalancer.phaseTipo: string
Fase actual del balanceador de carga gestionado. Los valores posibles incluyen
Pending,Running, yFailed. El Operador de Kubernetes informa de esta fase independientemente delstatus.phaseprincipal, para que puedas supervisar la implementación de Envoy por separado.Este campo también es visible en la salida de
kubectl getbajo la columnaLOADBALANCER.Ejemplo
kubectl get mdbs NAME PHASE VERSION LOADBALANCER AGE mdb-rs-ext-lb-search Running 0.64.0 Running 14m