El recurso personalizado MongoDBSearch le permite implementar y configurar nodos de MongoDB Search y búsqueda vectorial junto con sus implementaciones de base de datos de MongoDB en Kubernetes. El recurso MongoDBSearch implementa procesos mongot que proporcionan capacidades de búsqueda semántica y de texto completo al sincronizar datos de su implementación de MongoDB.
Para obtener más información sobre la implementación de MongoDB Search y búsqueda vectorial, consulta Implementar MongoDB Search y búsqueda vectorial.
Ejemplo
El siguiente ejemplo muestra una especificación de recursos para un recurso personalizado MongoDBSearch:
Nota
Este ejemplo no es una configuración funcional. Contiene todos los campos disponibles rellenados con valores de muestra como referencia. Algunos campos son mutuamente excluyentes y algunos tienen prioridad sobre otros (por ejemplo, source.external tiene prioridad sobre source.mongodbResourceRef). Consulte las descripciones de los campos a continuación para ver las combinaciones válidas.
1 spec: 2 source: 3 # external takes precedence over mongodbResourceRef 4 mongodbResourceRef: 5 name: mdb 6 external: 7 # hostAndPorts and shardedCluster are mutually exclusive 8 hostAndPorts: 9 - mdb-rs-external-0.example.com:27017 10 - mdb-rs-external-1.example.com:27017 11 - mdb-rs-external-2.example.com:27017 12 shardedCluster: 13 router: 14 hosts: 15 - mongos1.example.com:27017 16 - mongos2.example.com:27017 17 shards: 18 - shardName: shard-0 19 hosts: 20 - shard0-node1.example.com:27018 21 - shard0-node2.example.com:27018 22 - shardName: shard-1 23 hosts: 24 - shard1-node1.example.com:27018 25 - shard1-node2.example.com:27018 26 keyfileSecretRef: 27 name: mdb-keyfile 28 key: keyfile 29 tls: 30 # ca references a ConfigMap that contains ca.crt 31 ca: 32 name: mdbc-rs-ca 33 username: search-sync-source 34 passwordSecretRef: 35 name: mdbc-rs-search-sync-source-password 36 key: password 37 # x509 authentication (mutually exclusive with 38 # username/passwordSecretRef and source.tls) 39 x509: 40 clientCertificateSecretRef: 41 name: mongot-x509-client-cert 42 # Set only if the private key is encrypted 43 keyFilePasswordSecretRef: 44 name: mongot-x509-key-password 45 # TLS client certificate for SCRAM connections 46 # (mutually exclusive with x509): 47 # tls: 48 # clientCertificateSecretRef: 49 # name: mongot-scram-client-cert 50 # keyFilePasswordSecretRef: 51 # name: mongot-scram-key-password 52 security: 53 tls: 54 certificateKeySecretRef: 55 name: mdbs-tls-secret 56 certsSecretPrefix: my-prefix 57 # Set only if the private key is encrypted 58 keyFilePasswordSecretRef: 59 name: mdbs-tls-key-password 60 version: "1.70.1" 61 autoEmbedding: 62 embeddingModelAPIKeySecret: 63 name: embedding-model-api-query-key 64 providerEndpoint: https://ai.mongodb.com/v1/embeddings 65 featureFlags: 66 enableOverloadRetrySignal: true 67 logLevel: INFO 68 observability: 69 prometheus: 70 mode: enabled 71 port: 9946 72 metricsForwarder: 73 mode: auto 74 resourceRequirements: 75 requests: 76 cpu: 100m 77 memory: 128Mi 78 limits: 79 cpu: 250m 80 memory: 256Mi 81 deployment: 82 spec: 83 template: 84 spec: 85 nodeSelector: 86 kubernetes.io/os: linux 87 opsManager: 88 agentCredentials: 89 name: om-agent-api-key 90 projectConfigMapRef: 91 name: om-project-config 92 clusters: 93 - name: cluster-1 94 index: 0 95 replicas: 2 96 loadBalancer: 97 # Option 1: Operator-managed Envoy load balancer 98 managed: 99 externalHostname: "{shardName}.search.apps.example.com" 100 routerHostname: "search-router.apps.example.com:27028" 101 replicas: 2 102 resourceRequirements: 103 requests: 104 cpu: "100m" 105 memory: 128Mi 106 limits: 107 cpu: "500m" 108 memory: 512Mi 109 deployment: 110 spec: 111 template: 112 spec: 113 nodeSelector: 114 kubernetes.io/os: linux 115 retryPolicy: 116 numRetries: 2 117 perTryTimeout: "60s" 118 minMongotReadyReplicas: 1 119 # Option 2: User-provided (BYO) load balancer 120 # (mutually exclusive with managed) 121 unmanaged: 122 endpoint: "{shardName}-search-lb.corp.example.com:443" 123 resourceRequirements: 124 limits: 125 cpu: "3" 126 memory: 5Gi 127 requests: 128 cpu: "2" 129 memory: 4Gi 130 persistence: 131 single: 132 storage: 16G 133 storageClass: standard 134 statefulSet: 135 spec: 136 template: 137 spec: 138 nodeSelector: 139 kubernetes.io/os: linux 140 jvmFlags: 141 - -Xms2g 142 - -Xmx2g 143 advancedMongotConfigs: 144 someAdvancedSetting: value 145 syncSourceSelector: 146 matchTagSets: 147 - region: us-east-1 148 workload: search 149 - {} 150 shardOverrides: 151 - shardNames: 152 - shard-0 153 replicas: 3 154 resourceRequirements: 155 requests: 156 cpu: "4" 157 memory: 8Gi 158 persistence: 159 single: 160 storage: 32G 161 jvmFlags: 162 - -Xms4g 163 - -Xmx4g 164 statefulSet: 165 spec: 166 template: 167 spec: 168 nodeSelector: 169 disktype: ssd
Configuraciones de recursos obligatorias MongoDBSearch
Esta sección describe los ajustes que debes utilizar para todos los recursos 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 debe ser un nombre de subdominio de DNS de Kubernetes válido. Mantén el nombre corto. El operador de Kubernetes deriva los nombres de los recursos de Kubernetes que crea a partir de él, por ejemplo{name}-search-{clusterIndex}-{shardName}. El operador de Kubernetes valida que cada nombre generado se ajuste a los límites de DNS de Kubernetes de 63 caracteres para etiquetas y 253 caracteres para nombres de subdominio.spec.clustersTipo: arreglo de objetos
Configuración de implementación por clúster de Kubernetes para el recurso
MongoDBSearch. Este campo es obligatorio y debe contener al menos una entrada y como máximo 50 entradas: una entrada para una implementación de un solo clúster o una entrada para cada clúster de Kubernetes que ejecute pods demongoten una implementación de varios clústeres. Para obtener la referencia completa del campo, incluidosnameyindex, consulte Configuración de implementación de clúster.
Configuración de recursos MongoDBSearch opcional
El recurso personalizado MongoDBSearch puede emplear las siguientes configuraciones:
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 deMongoDBSearch
El recurso
MongoDBSearchsiempre debe estar conectado a una implementación de MongoDB. Si implementó utilizando 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.Encuentre el secreto de la contraseña para el usuario
mongotdel secreto<MongoDBSearch.metadata.name>-<username>-password, que para el nombre de usuario por defecto produce<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 búsqueda vectorial. El operador de Kubernetes admite tanto set de réplicas como clúster particionado. No puedes tener más de un recursoMongoDBSearchque haga referencia al mismo recursoMongoDBoMongoDBCommunity.Utiliza este campo solo si tu recurso
MongoDBoMongoDBCommunityestá implementado en el mismo clúster de Kubernetes y se encuentra en el mismo namespace que tu recursoMongoDBSearch. Si tu base de datos está implementada fuera de Kubernetes o se encuentra en un namespace diferente, utilizaspec.source.externalpara configurar la conexión a la base de datos. Si configuras ambos campos,spec.source.externaltiene prioridad.Si se omite, el operador de Kubernetes buscará un recurso
MongoDBoMongoDBCommunitycon el mismo nombre que este recursoMongoDBSearch.spec.source.mongodbResourceRef.namespaceTipo: string
Namespace del recurso
MongoDBoMongoDBCommunityal que hace referenciaspec.source.mongodbResourceRef.name. El operador de Kubernetes actualmente ignora este campo y siempre utiliza el namespace del recursoMongoDBSearch. Las referencias entre namespace no son compatibles. Si su base de datos está en un namespace diferente, utilicespec.source.external.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 autenticarse conmongod. Si se omite, el valor por defecto es<MongoDBSearch.metadata.name>-<username>-password, donde<username>es el valor despec.source.username. Para el nombre de usuario predeterminadosearch-sync-source, esto produce<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.
x509 Configuración de autenticación
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 excluyente con
spec.source.passwordSecretRef,spec.source.usernameyspec.source.tls. El operador de Kubernetes rechaza la configuración si especifica 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 clientetls.key— llave privada
Si la llave privada está cifrada con una contraseña, almacene la contraseña en un secreto independiente y haga referencia a ella con
spec.source.x509.keyFilePasswordSecretRef.Debe especificar este campo si configura
spec.source.x509.spec.source.x509.keyFilePasswordSecretRefTipo: Objeto
Clave secreta que contiene la contraseña que descifra la clave privada cifrada con contraseña en
spec.source.x509.clientCertificateSecretRef. La clave secreta debe contener la contraseña bajo la clavekeyFilePassword. Omita este campo si la llave privada no está cifrado.
Configuración de certificados de cliente TLS de SCRAM
spec.source.tlsTipo: Objeto
Configura un certificado de cliente TLS para la conexión de origen de sincronizar
mongotsi utiliza la autenticación SCRAM (nombre de usuario y contraseña). Si establece este campo,mongotpresenta el certificado de cliente durante el protocolo de enlace TLS con la implementación de MongoDB de origen (transporte TLS mutuo).mongottodavía se autentica con el nombre de usuario y la contraseña.Utilice este campo solo con autenticación SCRAM (
spec.source.passwordSecretRef). Este campo es mutuamente excluyente conspec.source.x509. Si desea que el propio certificado de cliente sirva como credencial de autenticación, utilicespec.source.x509en su lugar.spec.source.tls.clientCertificateSecretRefTipo: Objeto
Clave secreta que contiene el certificado de cliente TLS y la clave que
mongotpresenta durante el protocolo de enlace TLS con la implementación de MongoDB de origen. La clave secreta debe contener las siguientes claves:tls.crt— Certificado de clientetls.key— llave privada
Debe especificar este campo si configura
spec.source.tls.spec.source.tls.keyFilePasswordSecretRefTipo: Objeto
Clave secreta que contiene la contraseña que descifra la clave privada cifrada con contraseña en
spec.source.tls.clientCertificateSecretRef. La clave secreta debe contener la contraseña bajo la clavekeyFilePassword. Omita este campo si la llave privada no está cifrado.
Configuración externa de MongoDB
spec.source.externalTipo: Objeto
Configuraciones que describen la fuente de datos externa. Especifique esta configuración solo si desea conectarse a un MongoDB externo que no se implementó con el operador de Kubernetes. Si especifica esta configuración, tendrá prioridad sobre
spec.source.mongodbResourceRef.spec.source.external.hostAndPortsTipo: arreglo de cadenas
Lista de nombres de host y puertos del set de réplicas externo. Este campo es mutuamente excluyente con
spec.source.external.shardedCluster. UsehostAndPortspara fuentes de sets de réplicas yshardedClusterpara fuentes de clústeres particionados.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.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.spec.source.external.shardedCluster.shardsTipo: arreglo de objetos
Lista de todas las particiones en el clúster externo de MongoDB. Cada entrada describe el set de réplicas de una partición. El operador de Kubernetes crea un
mongotStatefulSet para cada partición. Especifique al menos una entrada de partición.spec.source.external.shardedCluster.shards[*].shardNameTipo: string
El nombre lógico de la partición. El nombre debe ser único en todas las particiones y debe cumplir las reglas de nombre de etiqueta DNS de Kubernetes (RFC 1123): caracteres alfanuméricos en minúsculas y guiones (
-), que comiencen y terminen con un carácter alfanumérico, con una longitud máxima de 63 caracteres. No se permiten puntos (.) ni guiones bajos (_).El operador de Kubernetes combina
metadata.name, el índice del clúster yshardNameen los nombres de los recursos de Kubernetes que crea, y valida que cada nombre generado se ajuste a los límites de DNS de Kubernetes de 63 caracteres para etiquetas y 253 caracteres para nombres de subdominios. MantengashardNamelo suficientemente corto para estos límites.spec.source.external.shardedCluster.shards[*].hostsTipo: arreglo de cadenas
Lista de endpoints de los miembros del set de réplicas
mongodpara esta partición en el formatohost:port. Especifique al menos una entrada. Cada partición tiene su propio grupo de instanciasmongot, que obtienen datos solo del set de réplicas de esa partición.spec.source.external.keyfileSecretRefTipo: Objeto
Secreto que contiene el archivo de claves
mongodquemongotutiliza para conectarse a la implementación externa de MongoDB. El camponamees obligatorio. El campokeyes opcional.spec.source.external.tls.ca.nameTipo: string
Nombre del ConfigMap que contiene la cadena confiable de las autoridades de certificación que emitieron el certificado TLS utilizado por los nodos
mongod. Debe especificar el certificado (o cadena de certificados) bajo la claveca.crten este ConfigMap.
Configuración de implementación de clúster
Las siguientes configuraciones describen cada entrada del arreglo spec.clusters requerido.
spec.clustersTipo: arreglo de objetos
Configuración de implementación por clúster de Kubernetes para el recurso
MongoDBSearch. Este campo es obligatorio y debe contener al menos una entrada y como máximo 50 entradas. Todas las configuraciones de tamaño y ubicación, comoreplicas,loadBalancer,resourceRequirements,persistence,jvmFlagsystatefulSet, se encuentran dentro de una entradaclusters. Estas configuraciones no tienen equivalentes de nivel superior.Para una implementación de clúster único, especifique una entrada. Puede omitir
nameyindex.Para una implementación de varios clústeres, especifique una entrada para cada clúster de Kubernetes que ejecute pods
mongot. Si especifica más de una entrada, se aplican las siguientes reglas:namees obligatorio en cada entrada y debe ser único.indexes obligatorio en cada entrada y debe ser único.La fuente de MongoDB debe ser externa (
spec.source.external). Las implementaciones de varios clústeres no admiten fuentes de MongoDB gestionadas por el operador.Cada entrada debe configurar un balanceador de carga gestionado por el operador (
loadBalancer.managed). Las implementaciones de varios clústeres no admiten balanceadores de carga no gestionados.
El operador de Kubernetes aplica estas reglas a través de las reglas de validación de CRD y la validación en tiempo de reconciliación.
spec.clusters[].nameTipo: string
Nombre del clúster de Kubernetes para esta entrada, con una longitud máxima de 253 caracteres. Puede omitir este campo para una implementación de clúster único.
Si
spec.clusterscontiene más de una entrada, se requierename, debe ser único en todas las entradas y no puede cambiar después de crear el recurso.spec.clusters[].indexTipo: entero
Identificador entero estable del clúster de Kubernetes para esta entrada. El valor debe estar entre
0y999, y debe ser único en todas las entradas. Sispec.clusterscontiene más de una entrada, se requiereindexen cada entrada.El operador de Kubernetes incluye el índice en los nombres de los recursos de Kubernetes que crea para esta entrada de clúster, por ejemplo,
{name}-search-{index}para StatefulSets,{name}-search-{index}-svcpara servicios y{name}-search-{index}-configpara ConfigMaps. Para las fuentes de clúster particionado, los nombres también incluyen el nombre de la partición, por ejemplo,{name}-search-{index}-{shardName}y{name}-search-{index}-{shardName}-svc.Advertencia
No cambie el
indexde una entrada existente. Dado que el índice forma parte de los nombres de los recursos, al cambiarlo, el operador de Kubernetes crea nuevos recursos bajo el nuevo índice y deja huérfanos los recursos del índice anterior. Esto se aplica a todos los recursos que contienen índices, incluidos los servicios proxy ({name}-search-{index}[-{shardName}]-proxy-svc), la implementación y el mapa de configuración de Envoy ({name}-search-lb-{index}), los secretos de certificados del balanceador de carga y los recursos del reenviador de métricas ({name}-search-metrics-forwarder-{index}).Para una implementación de clúster único, puede omitir este campo y se establece por defecto en
0. Sin embargo, si cada clúster de Kubernetes nodo ejecuta su propia instancia de operador de Kubernetes, establezcaindexexplícitamente en un valor distinto en el recursoMongoDBSearchde cada clúster. Los índices distintos evitan que los nombres de host y los nombres de recursos generados entren en conflicto entre clústeres.
Dimensionamiento y almacenamiento
spec.clusters[].replicasTipo: entero
Número de pods
mongotque se implementarán en este clúster de Kubernetes. Para una fuente de set de réplicas, este es el número total de podsmongot. Para una fuente de clúster particionado, este es el número de podsmongotpor partición.Si
spec.clusters[].replicases mayor que1, debe configurar tambiénspec.clusters[].loadBalancerpara enrutar el tráfico entremongody las múltiples instancias demongot.Si establece
spec.clusters[].replicasen0, el operador de Kubernetes desconecta la implementaciónmongotde este clúster. El operador de Kubernetes escala el StatefulSet a cero pods y mantiene el recursoMongoDBSearchy sus otros recursos de Kubernetes en su lugar.Si se omite, es por defecto
1.spec.clusters[].resourceRequirementsTipo: core/v1/ResourceRequirements
CPU y memoria que el contenedor
mongodb-searchpuede solicitar y a las que puede limitarse.Si se omite, el Operador de Kubernetes utiliza los siguientes valores por defecto:
requests: cpu: 2 memory: 4Gi spec.clusters[].resourceRequirements.limitsTipo: Objeto
Límite superior del recurso, CPU y memoria, que el contenedor
mongodb-searchpuede consumir. Por defecto, no hay límites establecidos.spec.clusters[].resourceRequirements.requestsTipo: Objeto
Cantidad de CPU y memoria solicitadas para el contenedor
mongodb-search. Si especifica solo uno decpuomemory, el operador de Kubernetes aplica el valor por defecto para el otro.spec.clusters[].persistence.singleTipo: Objeto
Configuración de almacenamiento para el volumen de persistencia de MongoDB Search y búsqueda vectorial donde se almacenan los índices. Cada instancia de búsqueda (pod) tiene su propio almacenamiento independiente.
EscalarTipo de datoDescripciónlabelSelectorstring
Etiqueta utilizada para vincular volúmenes montados a directorios.
storagestring
Tamaño mínimo de Persistent Volume que debe montarse. El valor por defecto es
16G.storageClassstring
Tipo de almacenamiento especificado en una reclamación de volumen persistente.
MongoDBSearchsolo admite el modo de persistenciasingle, que utiliza un volumen para todos los datos. Aunque el esquema CRD también contiene un campospec.clusters[].persistence.multiple, el operador de Kubernetes no lo aplica. Si omitepersistence, el operador de Kubernetes establecespec.clusters[].persistence.single.storageen16G.
Equilibrio de carga
spec.clusters[].loadBalancerTipo: Objeto
Configuración para el equilibrio de carga L7 entre
mongod(omongos) ymongot. Este campo es obligatorio sispec.clusters[].replicases mayor que1.Se debe establecer exactamente solo uno de
managedounmanaged.Todas las entradas de
spec.clustersdeben coincidir en el modo de balanceador de carga: o bien cada entrada estableceloadBalancer.managed, cada entrada estableceloadBalancer.unmanagedo ninguna entrada estableceloadBalancer. El operador de Kubernetes rechaza los modos mixtos. Las implementaciones de varios clústeres solo admiten el modo gestionado.spec.clusters[].loadBalancer.managedTipo: Objeto
Configura un balanceador de carga Envoy gestionado por el operador. Este campo es mutuamente excluyente con
spec.clusters[].loadBalancer.unmanaged.Para las fuentes de clústeres particionados, también debe configurar
spec.security.tlssi utiliza un balanceador de carga gestionado. El proxy Envoy enruta el tráfico a la partición correcta mediante SNI, lo que requiere TLS.spec.clusters[].loadBalancer.managed.externalHostnameTipo: string
Nombre de host que el proxy Envoy espera para la coincidencia SNI en las solicitudes entrantes. El certificado de servidor TLS de Envoy debe incluir este nombre de host en su campo SAN (Nombre Alternativo del Sujeto).
Para las fuentes de clúster particionado, el valor debe contener un marcador de posición
{shardName}, que el operador de Kubernetes expande por partición. Cada partición obtiene su propio nombre de host, y el certificado de servidor TLS de Envoy debe incluir todos los nombres de host de partición expandidos en sus SAN. Para las fuentes de set de réplicas, no utilice el marcador de posición{shardName}.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.
En las implementaciones de varios clústeres, cada entrada de clúster suele utilizar un nombre de host distinto. Sin embargo, el operador de Kubernetes permite compartir un nombre de host entre clústeres, por ejemplo, si un proxy de conmutación por error que abarca zonas de disponibilidad se encuentra delante de los proxies de Envoy de varios clústeres.
spec.clusters[].loadBalancer.managed.routerHostnameTipo: string
Punto de conexión que los enrutadores
mongosutilizan para llegar a las instanciasmongotde este clúster a través del balanceador de carga de Envoy gestionado, en el formatohost:port. El operador de Kubernetes utiliza el nombre de host para la coincidencia de SNI en la cadena de enrutamiento a nivel de clúster, por lo que el certificado de servidor TLS de Envoy debe incluir este nombre de host en sus SAN.Este campo es obligatorio si utiliza un balanceador de carga gestionado con una fuente de MongoDB particionada externa (
spec.source.external.shardedCluster). El operador de Kubernetes ignora este campo para las fuentes de set de réplicas y para MongoDB gestionado por el operador.A diferencia de
externalHostname, el operador de Kubernetes utiliza este valor textualmente, por lo que el valor no debe contener un marcador de posición{shardName}. Este endpoint es el punto de entrada independiente de la partición paramongos.spec.clusters[].loadBalancer.managed.replicasTipo: entero
Número de pods de proxy de Envoy que se implementarán en este clúster de Kubernetes. El valor debe ser
1o mayor. Si se omite, por defecto se asigna a1.spec.clusters[].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 spec.clusters[].loadBalancer.managed.deploymentTipo: Objeto
Anulaciones que el operador de Kubernetes fusiona en la implementación de Envoy creada por el operador. Este objeto contiene un campo
metadataconlabelsyannotations, y un campospeccon un objeto apps/v1/DeploymentSpec.spec.clusters[].loadBalancer.managed.retryPolicyTipo: Objeto
Comportamiento de reintento que el proxy Envoy aplica a transmisiones gRPC individuales a las instancias
mongotascendentes. El proxy Envoy envía cada intento de reintento a un hostmongotdiferente al intento fallido.Si omite este campo, el proxy de Envoy reintenta con los valores por defecto:
2reintentos con un tiempo de espera por intento de60s.spec.clusters[].loadBalancer.managed.retryPolicy.numRetriesTipo: entero
Número máximo de reintentos por solicitud. El valor debe ser
1o mayor. Si se omite, el valor es por defecto2, lo que permite tres intentos totales para cada solicitud.spec.clusters[].loadBalancer.managed.retryPolicy.perTryTimeoutTipo: string
Tiempo de espera para cada intento individual, incluida la solicitud original, expresado como una string (por ejemplo,
"30s"). Si se omite, por defecto se asigna a"60s".spec.clusters[].loadBalancer.managed.minMongotReadyReplicasTipo: entero
Número mínimo de réplicas
mongotlistas que un grupomongot(por ejemplo, las instanciasmongotde una partición) debe tener antes de que el proxy de Envoy enrute el tráfico hacia él. Mientras un grupo está por debajo de este umbral, el proxy de Envoy reenvía el tráfico destinado a ese grupo a un grupomongoten buen estado y marca las solicitudes con el encabezadorouted_from_another_shard. Estas solicitudes devuelven resultados vacíos en lugar de errores.El valor debe ser
1o mayor. Si se omite, por defecto se asigna a1.spec.clusters[].loadBalancer.unmanagedTipo: Objeto
Configura un balanceador de carga L7 proporcionado por el usuario (Bring Your Own). Este campo es mutuamente excluyente con
spec.clusters[].loadBalancer.managed. Las implementaciones de clústeres múltiples no admiten balanceadores de carga no gestionados.spec.clusters[].loadBalancer.unmanaged.endpointTipo: string
El punto final del balanceador de carga BYO en formato
host:port. Debe especificar este campo si configuraspec.clusters[].loadBalancer.unmanaged.Si el operador de Kubernetes gestiona la implementación de MongoDB (mediante
spec.source.mongodbResourceRef), el operador de Kubernetes guarda este valor en la configuraciónmongodcomomongotHostysearchIndexManagementHostAndPort.Para fuentes de clústeres particionados externos, el valor debe contener un marcador de posición
{shardName}que el operador de Kubernetes expanda por partición, y debe contener más que solo el marcador de posición. Para fuentes de set de réplicas externos, el valor no debe contener un marcador de posición{shardName}.
Anulaciones por fragmento
spec.clusters[].shardOverridesTipo: arreglo de objetos
Anulaciones que particiones específicas de tamaño dentro de esta entrada de clúster de manera diferente a los valores predeterminados del clúster.
Puede utilizar este campo solo con una fuente de clúster particionado externo (
spec.source.external.shardedCluster). Cada nombre de partición al que haga referencia debe existir enspec.source.external.shardedCluster.shards[*].shardName, y puede anular cada partición como máximo una vez por entrada de clúster.Cada anulación contiene una lista
shardNamesobligatoria (al menos una entrada) y camposreplicas,resourceRequirements,persistence,jvmFlagsystatefulSetopcionales. Si establecereplicas,resourceRequirements,persistenceojvmFlagsen una anulación, reemplazarán el valor del clúster para las particiones con nombre.jvmFlagsreemplaza el valor del clúster solo si lo establece en una lista no vacía. El operador de Kubernetes combina en profundidadstatefulSetcon el valor del clúster. Los campos que no establezca heredarán el valor del clúster.
Sincronizar selección de fuente
spec.clusters[].syncSourceSelector.matchTagSetsTipo: arreglo de objetos
Lista ordenada de conjuntos de etiquetas de set de réplicas que selecciona los nodos
mongodde la fuente de sincronización por sus etiquetas de set de réplicas. El operador de Kubernetes pasa la lista a la configuraciónmongot.mongotse sincroniza desde los nodos que selecciona el primer conjunto de etiquetas coincidentes y prefiere los nodos secundarios.Cada entrada es un mapa de nombres de etiquetas a valores de etiquetas. Un documento vacío (
{}) coincide con cualquier nodo, por lo que puede agregar una entrada{}final como reserva de coincidencia si ningún conjunto de etiquetas anterior coincide. Puede especificar un máximo de 50 entradas.
JVM Flags
spec.clusters[].jvmFlagsTipo: arreglo de cadenas
Marcadores JVM pasados al proceso
mongot. Cada marcador debe comenzar con-X,-XX:o-D, no debe contener espacios y solo puede contener caracteres alfanuméricos y los caracteres.,_,+,:,-y=. El operador de Kubernetes rechaza los marcadores que no coinciden con estas reglas.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.clusters[].resourceRequirements.requests.memory. Si no se especifican los requisitos de recursos, el operador de Kubernetes utiliza un valor por defecto de 4Gi de solicitud de memoria, lo que genera aproximadamente-Xmx2048m -Xms2048m. El operador de Kubernetes siempre añade las marcas que proporcione después de las marcas calculadas por el operador.
Anulaciones de StatefulSet
spec.clusters[].statefulSetTipo: Objeto
Anulaciones para el StatefulSet que el operador de Kubernetes crea para implementar pods
mongot. Este objeto contiene un campometadataconlabelsyannotations, y un campospeccon un objeto apps/v1/StatefulSetSpec. El operador de Kubernetes siempre aplica las anulaciones al final, por lo que sobrescriben la configuración que calcula el operador de Kubernetes.Nota
No establezcas requisitos de recursos o configuraciones de persistencia usando
spec.clusters[].statefulSet. En su lugar, utilice los camposspec.clusters[].resourceRequirementsyspec.clusters[].persistencerespectivamente.
Configuración avanzada de mongot
spec.clusters[].advancedMongotConfigsTipo: Objeto
Configuración avanzada de
mongotpara esta entrada de clúster. El operador de Kubernetes renderiza el valor textualmente bajo la claveadvancedConfigsdel archivo de configuraciónmongot, sin leerlo ni modificarlo. Utilice este campo solo para la configuración demongotque el recursoMongoDBSearchno expone como campos de primera clase.
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.Si utiliza un balanceador de carga gestionado con una fuente de clúster particionado, este campo es obligatorio. El proxy de Envoy enruta el tráfico a la partición correcta utilizando SNI, que depende del TLS ClientHello. El operador de Kubernetes falla la conciliación si omite
spec.security.tlsen esta configuración.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 Operador de Kubernetes sigue admitiendo este campo para las implementaciones de sets de réplicas por motivos de compatibilidad con versiones anteriores. Para implementaciones de clúster particionado, el Operador de Kubernetes rechaza este campo durante la validación porque una referencia de secreto única no puede cubrir certificados por partición.spec.security.tls.certsSecretPrefixTipo: string
Prefijo que utiliza el operador de Kubernetes para derivar nombres secretos de TLS mediante la convención de nomenclatura. Si establece este campo, el operador de Kubernetes buscará secretos que sigan estos patrones:
ComponentePatrón de nombre secretoCertificado del set de réplicas
mongotservidor{certsSecretPrefix}-{name}-search-certCertificado particionado
mongot(por clúster y partición){certsSecretPrefix}-{name}-search-{clusterIndex}-{shardName}-certCertificado de servidor de balanceador de carga gestionado (por clúster, todas las topologías)
{certsSecretPrefix}-{name}-search-lb-{clusterIndex}-certCertificado de cliente de balanceador de carga gestionado
{certsSecretPrefix}-{name}-search-lb-{clusterIndex}-client-certEl operador de Kubernetes utiliza un certificado de servidor de balanceador de carga gestionado por clúster para todas las topologías. Para los clústeres particionados, los SAN de este certificado deben incluir todos los nombres de host de partición expandidos de
externalHostnamey elrouterHostname.El operador de Kubernetes resuelve el nombre secreto del certificado del servidor
mongoten el siguiente orden:Si establece
spec.security.tls.certificateKeySecretRef.name, el operador de Kubernetes utiliza ese nombre.Si establece
certsSecretPrefix, el operador de Kubernetes utiliza los patrones de nomenclatura de la tabla anterior.Si no establece ningún campo, el operador de Kubernetes utiliza el nombre predeterminado
{name}-search-certpara las implementaciones de set de réplicas o el patrón predeterminado por partición{name}-search-{clusterIndex}-{shardName}-certpara las implementaciones particionadas.
Si no establece
certsSecretPrefix, los certificados del balanceador de carga gestionado también utilizan nombres por defecto: el operador de Kubernetes monta{name}-search-lb-{clusterIndex}-certpara el certificado del servidor y{name}-search-lb-{clusterIndex}-client-certpara el certificado del cliente.spec.security.tls.keyFilePasswordSecretRefTipo: Objeto
Secreto que contiene la contraseña que descifra la clave privada del servidor cifrada con contraseña en el secreto del certificado TLS. El secreto debe contener la contraseña en la clave
keyFilePassword. Omita este campo si la clave privada del servidor no está cifrada.
Configuración de registro
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 de métricas
spec.observability.prometheusTipo: Objeto
Configuración del punto final de métricas de Prometheus en
mongot. Si omite este campo, el operador de Kubernetes habilita el punto final de métricas en el puerto por defecto9946.spec.observability.prometheus.modeTipo: string
Habilita o deshabilita el punto final de métricas de Prometheus en
mongot. El valor puede serenabledodisabled. Si se omite, el valor por defecto esenabled.spec.observability.prometheus.portTipo: entero
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.spec.observability.metricsForwarderTipo: Objeto
Configuración para el reenviador de métricas, una implementación que el operador de Kubernetes crea para extraer las métricas de Prometheus
mongoty reenviarlas a Ops Manager.spec.observability.metricsForwarder.modeTipo: string
Si el operador de Kubernetes crea el reenviador de métricas. El valor puede ser uno de los siguientes:
auto— El operador de Kubernetes crea el reenviador para fuentes deMongoDBgestionadas por el operador (respaldadas por MongoDB Ops Manager) y para fuentes externas solo si establecespec.observability.metricsForwarder.opsManager. Para las fuentes deMongoDBCommunity, el operador de Kubernetes no crea el reenviador.enabled— El operador de Kubernetes siempre crea el reenviador. Si el origen es un recurso deMongoDBCommunity, el operador de Kubernetes informa un error porque el reenviador no es compatible con los orígenes deMongoDBCommunity.disabled— El operador de Kubernetes nunca crea el reenviador.
Si se omite, es por defecto
auto.Los modos
enabledyautorequieren que el punto de conexión de Prometheus (spec.observability.prometheus) esté habilitado. Si deshabilita el punto de conexión, el operador de Kubernetes informa un estado de reenviador de métricasInvalid.spec.observability.metricsForwarder.resourceRequirementsTipo: core/v1/ResourceRequirements
CPU y memoria que el contenedor del reenviador de métricas puede solicitar y a las que puede estar limitado. Si se omite, el operador de Kubernetes utiliza solicitudes de
cpu: 100mymemory: 128Mi, y límites decpu: 250mymemory: 256Mi.spec.observability.metricsForwarder.deploymentTipo: Objeto
Anulaciones que el operador de Kubernetes fusiona en la implementación del reenviador de métricas creado por el operador. Este objeto contiene un campo
metadataconlabelsyannotations, y un campospeccon un objeto apps/v1/DeploymentSpec.spec.observability.metricsForwarder.opsManagerTipo: Objeto
Proyecto de MongoDB Ops Manager y credenciales a los que el reenviador de métricas envía métricas. Si se omite, el operador de Kubernetes obtiene el proyecto y las credenciales de la configuración de conexión del recurso de MongoDB de origen. Establezca este campo para fuentes de MongoDB externas, donde no existe ningún recurso de MongoDB de origen.
Si establece este campo, debe establecer
agentCredentials.name(el secreto que contiene la clave API del agente de MongoDB Ops Manager) yprojectConfigMapRef.name(el ConfigMap que contiene la configuración del proyecto de MongoDB Ops Manager).
Configuración de 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.embeddingModelAPIKeySecret.nameTipo: string
Nombre del secreto que contiene las claves de la API del modelo de incrustación que
mongotdebe utilizar para generar incrustaciones en el momento del índice y de la query. El secreto debe contener la clave de tiempo de índice bajo la claveindexing-keyy la clave de tiempo de query bajo la clavequery-key.Puede omitir
embeddingModelAPIKeySecretsolo sispec.autoEmbedding.providerEndpointapunta al servicio de incrustación de Voyage AI autohospedado y gestionado por el operador. De lo contrario, el Operador de Kubernetes lo requiere.spec.autoEmbedding.providerEndpointTipo: string
URL del endpoint del modelo de incrustación para generar las incrustaciones.
Configuración de la funcionalidad
spec.featureFlagsTipo: Objeto
Marcadores de funcionalidad para
mongot. Si establece un marcador entrue, el operador de Kubernetes lo renderiza en la configuración demongot. Si omite elfeatureFlagsobjeto o un marcador individual, se aplicará el valor por defecto del esquema para ese marcador (trueparaenableOverloadRetrySignal).spec.featureFlags.enableOverloadRetrySignalTipo: booleano
Habilita la señal de reintento de sobrecarga de
mongot. Si habilita esta marca,mongotseñala la reducción de carga a los proxies ascendentes (como el balanceador de carga de Envoy gestionado por el operador) a través de las respuestas gRPCRESOURCE_EXHAUSTED. Los proxies reintentan la solicitud en otra instancia demongot.Si se omite, es por defecto
true.
Otros ajustes
spec.versionTipo: string
Versión de la imagen de Docker de
mongodb-search. Si se omite, el operador de Kubernetes utiliza la versión predeterminada de MongoDB Search incluida con él. Puede establecer la versión explícitamente para evitar actualizaciones automáticas al actualizar el operador de Kubernetes.
Campos de estado
El Operador de Kubernetes reporta información de estado bajo el campo status del recurso MongoDBSearch.
status.phaseTipo: string
Fase actual del recurso
MongoDBSearch. Los valores posibles incluyenPending,Running,Failed,Disabled,UpdatedyUnsupported.status.messageTipo: string
Mensaje legible con detalles sobre el estado actual.
status.lastTransitionTipo: string
Marca de tiempo de la última transición de
status.phase.status.observedGenerationTipo: entero
Generación del recurso
MongoDBSearchque el operador de Kubernetes procesó por última vez.status.warningsTipo: arreglo de cadenas
Advertencias que el operador de Kubernetes informa para el recurso.
status.versionTipo: string
Versión de MongoDB Search (
mongot) que el operador de Kubernetes reconcilió.status.resourcesNotReadyTipo: arreglo de objetos
Recursos de Kubernetes dependientes que aún no están listos. Cada entrada informa del
kindynamedel recurso y de unmessageopcional y una lista deerrors.status.pvcTipo: arreglo de objetos
Estado de las reclamaciones de volumen persistente de los StatefulSets
mongot. Cada entrada informa elphasey elstatefulsetNamea los que pertenecen las reclamaciones.status.loadBalancerTipo: Objeto
Estado del balanceador de carga gestionado por el operador (Envoy). Este campo solo está presente si establece
spec.clusters[].loadBalancer.managed. Para implementaciones de varios clústeres, el operador de Kubernetes informa la peor fase en todas las implementaciones de Envoy de todos los clústeres.status.loadBalancer.phaseTipo: string
Fase actual del balanceador de carga gestionado. Los valores posibles incluyen
Pending,RunningyFailed. Este campo es visible en la salida dekubectl getbajo la columnaLOADBALANCER.status.loadBalancer.messageTipo: string
Mensaje legible con detalles sobre el estado del balanceador de carga gestionado.
status.metricsForwarderTipo: Objeto
Estado del reenviador de métricas.
status.metricsForwarder.phaseTipo: string
Fase actual del reenviador de métricas. Los valores posibles incluyen
Pending,RunningyFailed. La fase informaDisabledsi establecespec.observability.metricsForwarder.modeendisabled. Este campo es visible en la salida dekubectl geten la columnaMETRICSFORWARDER.status.metricsForwarder.messageTipo: string
Mensaje legible con detalles sobre el estado del reenviador de métricas.
status.clustersTipo: arreglo de objetos
Estado por clúster en toda la topología de implementación. El operador de Kubernetes informa una entrada por clúster en
spec.clusters[], por lo que las implementaciones de un solo clúster tienen exactamente una entrada. Cada entrada informa las fases de búsqueda, balanceador de carga y reenviador de métricas para ese clúster de forma independiente, de modo que pueda localizar un problema en un clúster y componente específicos.status.clusters[].nameTipo: string
Nombre del clúster de nodos. Vacío en implementaciones de un solo clúster.
status.clusters[].indexTipo: entero
El índice anclado
spec.clusters[]para este clúster. Asigna cada entrada de estado a su entrada de especificación independientemente del orden de la lista.status.clusters[].searchTipo: string
La peor fase en los
mongotStatefulSets de este clúster. Un clúster ejecuta unmongotStatefulSet para una fuente de set de réplicas, o uno por partición para una fuente particionada. Los valores pueden serPending,RunningoFailed.status.clusters[].searchMessageTipo: string
Mensaje legible por humanos con el motivo cuando
searchno esRunning.status.clusters[].loadBalancerTipo: string
Fase de balanceador de carga gestionado (Envoy) de este clúster. Vacío cuando no hay un balanceador de carga gestionado configurado. Los valores pueden ser
Pending,RunningoFailed.status.clusters[].loadBalancerMessageTipo: string
Mensaje legible por humanos con el motivo cuando
loadBalancerno esRunning.status.clusters[].metricsForwarderTipo: string
Fase de reenvíador de métricas de MongoDB Ops Manager de este clúster. Vacío cuando el reenvíador de métricas no está habilitado. Los valores pueden ser
Pending,RunningoFailed.status.clusters[].metricsForwarderMessageTipo: string
Mensaje legible por humanos con el motivo cuando
metricsForwarderno esRunning.