Puede implementar MongoDB Search y Vector Search junto con MongoDB 8.2 o posterior utilizando MongoDB Controllers for Kubernetes Operator.
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 representa una configuración funcional. Contiene todos los campos disponibles con valores de muestra a modo de referencia. Algunos campos son mutuamente excluyentes (por ejemplo, source.mongodbResourceRef y source.external). Consulte las descripciones de los campos a continuación para ver 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 Kubernetes de MongoDB. Establezca 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 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 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 el origen de MongoDB para
mongot. El origen puede ser un conjunto de réplicas o un clúster fragmentado. Esta configuración es necesaria si:MongoDBes externoMongoDBtiene un nombre diferente de MongoDBSearch
El recurso MongoDBSearch siempre debe estar conectado a una implementación de MongoDB. Si implementó utilizando el operador de Kubernetes con
MongoDBelMongoDBCommunityCRD o, y sispec.sourceestá vacío, el operador de Kubernetes utiliza lo siguiente en funciónmetadata.namede para buscar la base de datos en Kubernetes:Encuentra
MongoDBoMongoDBCommunityrecursos con el mismo nombre que se establece parametadata.nameen MongoDBSearch, en el mismo namespace.Encuentre la contraseña secreta para el usuario
mongota partir del secreto<MongoDBSearch.metadata.name>-search-sync-source-password.
spec.source.mongodbResourceRef.nameTipo: string
Nombre del recurso
MongoDBoMongoDBCommunityque se asociará con este recurso de MongoDB Search y Vector Search. El operador de Kubernetes admite conjuntos de réplicas y clústeres fragmentados. No puede haber más de un recurso MongoDBSearch que haga referencia al mismo recursoMongoDBoMongoDBCommunity. Si especifica un nombre diferente, debe indicar explícitamente el recursoMongoDBoMongoDBCommunitydonde desea habilitar MongoDB Search y Vector Search.Si haces referencia a un recurso de clúster fragmentado
MongoDB, el operador de Kubernetes descubre automáticamente la topología de fragmentación (nombres de fragmentación, miembros del conjunto de réplicas, enrutadoresmongos) y crea conjuntos de estadomongotpor fragmentación de forma automática. No necesitas realizar ninguna configuración externa adicional.Utilice este campo solo si su recurso
MongoDBoMongoDBCommunityestá implementado en el mismo clúster de Kubernetes y se encuentra en el mismo espacio de nombres que su recurso 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 configura 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.
Configuración para configurar el mongot usuario
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 usar para autenticarse conmongod. Si se omite, el valor predeterminado 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 predeterminado es
password.
Configuración para la autenticación x509
spec.source.x509Tipo: objeto
Configura la autenticación del certificado de cliente x509 para la conexión de la fuente de sincronización
mongot. Si configura este campo,mongotse autentica en MongoDB usando x509 en lugar de nombre de usuario y contraseña.Este campo es mutuamente excluyente con
spec.source.passwordSecretRefyspec.source.username. El operador de Kubernetes rechaza la configuración si se especifica tanto x509 como autenticación por contraseña.
spec.source.x509.clientCertificateSecretRefTipo: objeto
Secreto que contiene el certificado de cliente x509 y la clave para autenticarse en la fuente de sincronización de MongoDB. El secreto debe contener las siguientes claves:
tls.crt— Certificado de cliente (obligatorio)tls.key— Clave privada (obligatoria)tls.keyFilePassword— Contraseña para la clave privada (opcional)
Debe especificar este campo si establece
spec.source.x509.Ejemplo
spec: source: x509: clientCertificateSecretRef: name: mongot-x509-client-cert
Configuraciones para conectar con MongoDB externo
Los siguientes ajustes son necesarios únicamente 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 conectarse a un conjunto 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. UtilicehostAndPortspara fuentes de conjuntos de réplicas yshardedClusterpara fuentes de clústeres fragmentados.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 la 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-----
Configuración para conectarse a un clúster fragmentado externo.
Los siguientes ajustes son necesarios únicamente para configurar una conexión a un clúster sharded de MongoDB externo. Extienden los ajustes spec.source.external existentes.
Nota
spec.source.external.hostAndPorts (para conjuntos de réplicas) y spec.source.external.shardedCluster son mutuamente excluyentes. Especifique solo uno de ellos.
spec.source.external.shardedClusterTipo: objeto
Declara un clúster MongoDB fragmentado externo como fuente de datos para
mongot. Contiene la configuración paramongosenrutadores y miembros del conjunto de réplicas por fragmento.Utilice esta opción únicamente si el clúster fragmentado de MongoDB se implementa fuera de Kubernetes y no está gestionado por el
MongoDBoperador de Kubernetes. Para clústeres fragmentados gestionados por el operador e implementados con el CRD, utilice enspec.source.mongodbResourceRefsu lugar. El operador de Kubernetes detecta automáticamente la topología de fragmentació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(enrutador) del clúster fragmentado externo.
spec.source.external.shardedCluster.router.hostsTipo: arreglo de cadenas
Lista de puntos finales para las
mongosinstancias de enrutador en formatohost:port. Todas lasmongotinstancias se conectan a estos enrutadores. Especifique al menos una entrada.Ejemplo
router: hosts: - "mongos1.external:27017" - "mongos2.external:27017"
spec.source.external.shardedCluster.shardsTipo: arreglo de objetos
Lista de todos los fragmentos en el clúster externo de MongoDB. Cada entrada describe el conjunto de réplicas de un fragmento. El operador de Kubernetes crea un StatefulSet
mongotpara cada fragmento, donde cada StatefulSet contiene el número de pods especificado enspec.replicas. Especifique al menos una entrada de fragmento.
spec.source.external.shardedCluster.shards[*].shardNameTipo: string
El nombre lógico del fragmento. El operador de Kubernetes utiliza este nombre para la nomenclatura de los recursos de Kubernetes (StatefulSets, Services, Secrets). El valor puede ser diferente del nombre del fragmento de MongoDB.
Restricciones de nomenclatura:
Debe ser único en todos los fragmentos.
Debe ajustarse a las reglas de nombres de subdominio DNS 1123de Kubernetes (RFC), que permiten caracteres alfanuméricos en minúscula, guiones
-() y puntos.(), y requieren que el nombre comience con un carácter alfabético y termine con un carácter alfanumérico._No se permiten guiones bajos ().La longitud combinada de
metadata.nameyshardNamedebe ser menor que 50 caracteres.
Ejemplo
shards: - shardName: "shard-0" hosts: - "shard0-node1.external:27018"
spec.source.external.shardedCluster.shards[*].hostsTipo: arreglo de cadenas
Lista de puntos finales de los
mongodmiembros del conjunto de réplicas para este fragmento en el formatohost:port.mongotinstancias replican datos desde estos hosts. Especifique al menos una entrada.Cada conjunto de réplicas (fragmento) tiene su propio grupo de instancias
mongot, que obtienen datos únicamente de ese conjunto de réplicas. Los diferentes fragmentos nunca comparten las mismas instanciasmongot.Ejemplo
shards: - shardName: "shard-0" hosts: - "shard0-node1.external:27018" - "shard0-node2.external:27018" - "shard0-node3.external:27018"
Configuración de 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 1.8.0 versión: utilice
spec.security.tls.certsSecretPrefixen su lugar.Nombre del secreto TLS en el mismo espacio de nombres que contiene la clave 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 aún admite este campo para implementaciones de conjuntos de réplicas por motivos de compatibilidad con versiones anteriores. Sin embargo:
Para implementaciones de clústeres fragmentados, el operador de Kubernetes rechaza este campo durante la validación. En su lugar, utilice
spec.security.tls.certsSecretPrefix, ya que una única referencia secreta no puede abarcar los certificados por fragmento.Si especifica tanto
certificateKeySecretRefcomocertsSecretPrefix,certificateKeySecretReftendrá prioridad para las implementaciones de conjuntos de réplicas.
Para nuevas implementaciones, utilice
spec.security.tls.certsSecretPrefixincluso para conjuntos de réplicas.
spec.security.tls.certsSecretPrefixTipo: string
Prefijo que el operador de Kubernetes utiliza para derivar nombres de secretos TLS mediante una convención de nomenclatura. Si configura este campo, el operador de Kubernetes buscará secretos que sigan estos patrones en lugar de requerir referencias explícitas de secretos para cada componente:
ComponentePatrón de nombre secretoCertificado del servidor
mongotdel conjunto de réplicas{certsSecretPrefix}-{name}-search-certCertificados fragmentados
mongot(por fragmento){certsSecretPrefix}-{name}-search-0-{shardName}-certCertificado de servidor de balanceador de carga administrado
{certsSecretPrefix}-{name}-search-lb-0-certCertificado de cliente de balanceador de carga administrado
{certsSecretPrefix}-{name}-search-lb-0-client-certDónde:
{name}esmetadata.namedel recurso MongoDBSearch{shardName}es el valor despec.source.external.shardedCluster.shards[*].shardName
Si se omite, este campo toma por defecto una cadena vacía y el operador de Kubernetes utiliza
spec.security.tls.certificateKeySecretRefen su lugar.Nota
Para implementaciones de clústeres fragmentados, debe usar
certsSecretPrefixen lugar decertificateKeySecretRef. El operador de Kubernetes rechazacertificateKeySecretRefpara topologías fragmentadas porque una única referencia secreta no puede cubrir certificados por fragmento.Ejemplo
spec: security: tls: certsSecretPrefix: my-prefix
Configuración para múltiples instancias de Mongot
spec.replicasTipo: entero
Número de
mongotpods a desplegar. Para una fuente de conjunto de réplicas, este es el número total demongotpods. Para una fuente de clúster fragmentado, este es el número demongotpods por fragmento.Si
spec.replicases mayor que1, también debe configurarspec.loadBalancerpara enrutar el tráfico entremongody las múltiples instanciasmongot.Si se omite, es por defecto
1.Ejemplo
spec: replicas: 2
Configuración para el equilibrio de carga
spec.loadBalancerTipo: objeto
Configuración para el balanceo de carga L7 entre
mongod(omongos) ymongot. Este campo es obligatorio sispec.replicases mayor que1. Sispec.replicases igual a1, este campo es opcional. Puede configurar un balanceador de carga incluso para una única instanciamongotpara prepararse para el escalado posterior.Se debe establecer exactamente uno de
managedounmanaged.El balanceador de carga afecta a qué certificados TLS ven los clientes
mongody qué nombres de host deben contener esos certificados:Sin un balanceador de carga, se
mongodconecta directamentemongota. El certificado TLS presentado amongodes elmongotpropio certificado de. Si el clúster de MongoDB está fuera de Kubernetes, elmongotservicio se expone en un dominio externo. Debe incluir ese dominio externo en elmongotcampo SAN (Subject Alternative Name) del certificado TLS.Con un balanceador de carga administrado
spec.loadBalancer.managed(), el proxy Envoy es el único componente que se conecta directamentemongota. Envoy llega a losmongotpods utilizando sus FQDN de servicio internos sin cabeza:Conjunto de réplicas:
<pod>.<name>-search-svc.<ns>.svc.cluster.localClúster fragmentado:
<pod>.<name>-search-0-<shard>-svc.<ns>.svc.cluster.local
Emita el
mongotcertificado TLS con estos dominios locales del clúster en el campo SAN. Puede usar un certificado comodín para evitar volver a emitir certificados cuando cambie el número demongotpods. Losmongodprocesos externos ven el certificado TLS del proxy Envoy, por lo que debe incluir los dominios externos en los SAN del certificado Envoy, no en elmongotcertificado.
Tip
Habilite un balanceador de carga administrado incluso si inicialmente implementa un solo pod
mongot. Con el balanceador de carga configurado, los dominios en sus certificados TLS se mantienen estables si aumenta la escalaspec.replicasposteriormente, ya que el balanceador de carga ya está presente entremongodymongot.
spec.loadBalancer.managedTipo: objeto
Configura un balanceador de carga Envoy administrado por el operador. El operador de Kubernetes implementa y administra el proxy Envoy con enrutamiento, mTLS y fijación de flujo HTTP/2+gRPC correctos. Establezca este campo en un objeto vacío
{}() para usar los valores predeterminados.Este campo es mutuamente 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 SNI de TLS de las conexiones entrantes
mongod. El certificado del servidor TLS de Envoy debe incluir este nombre de host en su campo SAN (Subject Alternative Name).Para clústeres fragmentados, el valor debe contener un marcador de posición
{shardName}que el operador de Kubernetes expande para cada fragmento. Cada fragmento obtiene un nombre de host único, y el certificado del servidor TLS de Envoy debe incluir todos los nombres de host de los fragmentos expandidos en sus SAN. Puede usar un certificado comodín para cubrir todos los fragmentos con un solo certificado y evitar tener que volver a emitirlo cuando se agreguen fragmentos.Este campo es obligatorio si MongoDB se gestiona externamente (no se implementa mediante el operador de Kubernetes). Si MongoDB se gestiona mediante el operador en el mismo clúster, omita este campo, ya que 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 a las que puede estar limitado. Si especifica esta configuración, el operador de Kubernetes reemplaza por completo los valores predeterminados.
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
Anula las configuraciones que el operador de Kubernetes incorpora al despliegue de Envoy creado por el operador. Sigue la misma convención que
spec.statefulSeten los recursos de MongoDB. Si se omite, el operador de Kubernetes utiliza la configuración predeterminada para el despliegue de Envoy.Este objeto contiene dos campos:
metadata— contiene 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 estas anulaciones en la especificación de despliegue 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). Usted es responsable de implementar y configurar el balanceador de carga externamente.
Este campo es mutuamente excluyente con
spec.loadBalancer.managed.
spec.loadBalancer.unmanaged.endpointTipo: string
El punto final del balanceador de carga BYO en formato
host:port. El operador de Kubernetes escribe este valor en la configuraciónmongodcomomongotHostysearchIndexManagementHostAndPort.Este campo solo es necesario cuando el operador de Kubernetes gestiona el despliegue de MongoDB (mediante
spec.source.mongodbResourceRef), ya que el operador de Kubernetes necesita el punto final para configurar los parámetrosmongod. Si tanto el balanceador de carga como MongoDB son externos (no gestionados por el operador de Kubernetes), este campo no es necesario, ya que 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 expande por cada fragmento.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 se modifica el tamaño del montón de la JVM en
spec.jvmFlags, el operador de Kubernetes establece el tamaño predeterminado del montón (-Xmx) en el 50% de la memoria disponible para el podmongot. Ajustespec.resourceRequirementssegún corresponda para controlar tanto los recursos del pod como el tamaño del montón 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 máximo de recursos (CPU y memoria) que el contenedor
mongodb-searchpuede consumir. De forma predeterminada, no hay límites definidos. Si se omite, el pod no se restringe y, por lo tanto, podría usar todos los recursos del nodo. Recomendamos establecer límites según la carga de trabajo.
spec.resourceRequirements.requestsTipo: objeto
Cantidad de CPU y memoria solicitada para el contenedor
mongodb-search. Si se omite, el operador de Kubernetes utiliza los siguientes valores predeterminados:requests: cpu: 2 memory: 2G
spec.persistence.singleTipo: objeto
Configuración de almacenamiento para el volumen de persistencia de MongoDB Search y Vector Search, donde se almacenan los índices de MongoDB Search y Vector Search. Cada instancia de búsqueda (pod) tiene su propio almacenamiento independiente para mantener los índices, que no se comparte con la base de datos MongoDB. Solo los metadatos del índice (definiciones) se almacenan en la base de datos.
EscalarTipo de datoDescripciónlabelSelectorstring
Etiqueta utilizada para vincular volúmenes montados a directorios.
storagestring
Tamaño mínimo del volumen persistente que debe montarse. Este valor se expresa como un 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 una notificación 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
Esto solo está disponible en v1.6 y versiones 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.
Configuración para la 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 del punto final del modelo de incrustación para generar incrustaciones. El valor varía según se creen las claves desde la interfaz de usuario de Atlas (recomendado) o directamente desde el servicio de incrustación (Voyage AI). Para claves creadas desde:
Atlas Interfaz de Usuario, el valor es
https://ai.mongodb.com/v1/embeddings(por defecto)Voyage AI, el valor es
https://api.voyageai.com/v1/embeddings
Configuración de JVM
spec.jvmFlagsTipo: arreglo de cadenas
Indicadores de JVM pasados al proceso
mongot. El operador de Kubernetes incluye los indicadores sin modificación 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 montón estableciendo ambos a la mitad despec.resourceRequirements.requests.memory. Si no especifica los requisitos de recursos, el operador de Kubernetes utiliza una solicitud de memoria predeterminada de 4Gi, lo que produce aproximadamente-Xmx2048m -Xms2048m.Si proporciona sus propios valores
-Xmso-Xmx, el operador de Kubernetes los utiliza y no los sobrescribe. El operador de Kubernetes siempre agrega los indicadores que usted proporciona después de los indicadores calculados por el operador.Para obtener más información, consulte Dimensionamiento de 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 informa información de estado en 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 se establece
spec.loadBalancer.managed.
status.loadBalancer.phaseTipo: string
Fase actual del balanceador de carga administrado. Los valores posibles incluyen
Pending,RunningyFailed. El operador de Kubernetes informa esta fase independientemente de la principalstatus.phase, por lo que puede supervisar el despliegue de Envoy por separado.Este campo también es visible en la salida
kubectl getbajo la columnaLOADBALANCER.Ejemplo
kubectl get mdbs NAME PHASE VERSION LOADBALANCER AGE mdb-rs-ext-lb-search Running 0.64.0 Running 14m