Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Especificación de recursos de MongoDBSearch

El recurso personalizado MongoDBSearch permite implementar y configurar nodos de búsqueda de MongoDB y búsqueda vectorial junto con las implementaciones de la base de datos MongoDB en Kubernetes. El recurso MongoDBSearch implementa procesos mongot que proporcionan capacidades de búsqueda semántica y de texto completo mediante la sincronización de datos de la implementación de MongoDB.

Para obtener más información sobre cómo implementar MongoDB Search y Vector Search, consulte Implementar MongoDB Search y Vector Search.

El siguiente ejemplo muestra una especificación de recursos para un recurso personalizado MongoDBSearch:

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 y otros tienen prioridad (por ejemplo, source.external tiene prioridad sobre source.mongodbResourceRef). Consulte las descripciones de los campos a continuación para ver las combinaciones válidas.

1spec:
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

Esta sección describe los ajustes que debes utilizar para todos los recursos MongoDBSearch.

apiVersion

Tipo: string

Versión del esquema de recursos de MongoDB Kubernetes. Establecer el valor en mongodb.com/v1.

kind

Tipo: string

Tipo de recurso de Kubernetes de MongoDB que se va a crear. Configurar esto en MongoDBSearch.

metadata.namespace

Tipo: string

Espacio de nombres donde se debe crear el recurso MongoDBSearch. Para aprovechar la configuración automática de los recursos MongoDBSearch y MongoDB o MongoDBCommunity, el recurso MongoDBSearch debe crearse en el mismo namespace que el recurso MongoDB o MongoDBCommunity.

metadata.name

Tipo: string

Identificador único del recurso MongoDBSearch. El nombre debe ser un nombre de subdominio DNS válido de Kubernetes. El operador de Kubernetes deriva los nombres de los recursos de Kubernetes que crea a partir de este, por ejemplo, {name}-search-{clusterIndex}-{shardName}. El operador de Kubernetes valida que cada nombre generado cumpla con los límites de caracteres DNS de Kubernetes de 63 caracteres para etiquetas y 253 caracteres para nombres de subdominios.

spec.clusters

Tipo: arreglo de objetos

MongoDBSearch 50 mongot Configuración de name index despliegue por clúster de Kubernetes para el recurso. Este campo es obligatorio y debe contener al menos una entrada y como máximo: una entrada para un despliegue de un solo clúster o una entrada para cada clústerde Kubernetes que ejecute pods en un despliegue de varios clústeres. Para consultar la referencia completa del campo, incluidos y, vea Configuración de despliegue de clúster.

El recurso personalizado MongoDBSearch puede emplear las siguientes configuraciones:

spec.source

Tipo: 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:

  • MongoDB es externo

  • MongoDB tiene un nombre diferente de MongoDBSearch

El MongoDBSearch recurso siempre debe estar conectado a una implementación de MongoDB. Si implementó utilizando el Operador de Kubernetes con MongoDB el MongoDBCommunity CRD o, y si spec.source está vacío, el Operador de Kubernetes utiliza lo siguiente en función metadata.name de para buscar la base de datos en Kubernetes:

  • Busca MongoDB o MongoDBCommunity recursos con el mismo nombre que se estableció para metadata.name en MongoDBSearch, en el mismo namespace.

  • Encuentra la contraseña secreta para el usuario mongot a partir de la contraseña secreta <MongoDBSearch.metadata.name>-<username>-password, que para el nombre de usuario predeterminado produce <MongoDBSearch.metadata.name>-search-sync-source-password.

spec.source.mongodbResourceRef.name

Tipo: string

Nombre del recurso MongoDB o MongoDBCommunity que se asociará con este recurso de búsqueda de MongoDB y búsqueda vectorial. 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 recurso MongoDB o MongoDBCommunity.

Utilice este campo únicamente si su recurso MongoDB o MongoDBCommunity está implementado en el mismo clúster de Kubernetes y se encuentra en el mismo espacio de nombres que su recurso MongoDBSearch. Si su base de datos está implementada fuera de Kubernetes o se encuentra en un espacio de nombres diferente, utilice spec.source.external para configurar la conexión a la base de datos. Si configura ambos campos, spec.source.external tendrá prioridad.

Si se omite, el operador de Kubernetes busca un recurso MongoDB o MongoDBCommunity con el mismo nombre que este recurso MongoDBSearch.

spec.source.mongodbResourceRef.namespace

Tipo: string

Espacio de nombres del recurso MongoDB o MongoDBCommunity al que hace referencia spec.source.mongodbResourceRef.name. El operador de Kubernetes actualmente ignora este campo y siempre utiliza el espacio de nombres del recurso MongoDBSearch. No se admiten referencias entre espacios de nombres. Si su base de datos se encuentra en un espacio de nombres diferente, utilice spec.source.external.

spec.source.username

Tipo: string

Nombre de usuario para usar para autenticar mongot con mongod. El usuario especificado debe tener el rol de searchCoordinator. Si se omite, el Operador Kubernetes asume que el nombre de usuario es search-sync-source.

spec.source.passwordSecretRef.name

Tipo: string

Nombre del secreto que contiene la contraseña que mongot debe usar para autenticarse con mongod. Si se omite, se usa por defecto <MongoDBSearch.metadata.name>-<username>-password, donde <username> es el valor de spec.source.username. Para el nombre de usuario predeterminado search-sync-source, esto da como resultado <MongoDBSearch.metadata.name>-search-sync-source-password.

spec.source.passwordSecretRef.key

Tipo: 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.

spec.source.x509

Tipo: Objeto

Configura la autenticación mediante certificado de cliente x509 para la conexión de sincronización mongot. Si configuras este campo, mongot se 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.username y spec.source.tls. El operador de Kubernetes rechaza la configuración si se especifican tanto x509 como la autenticación por contraseña.

spec.source.x509.clientCertificateSecretRef

Tipo: 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

  • tls.key — Clave privada

Si la clave privada está cifrada con una contraseña, almacene la contraseña en un Secreto separado y haga referencia a ella con spec.source.x509.keyFilePasswordSecretRef.

Debe especificar este campo si configura spec.source.x509.

spec.source.x509.keyFilePasswordSecretRef

Tipo: Objeto

Secreto que contiene la contraseña para descifrar la clave privada cifrada con contraseña en spec.source.x509.clientCertificateSecretRef. El secreto debe contener la contraseña bajo la clave keyFilePassword. Omita este campo si la clave privada no está cifrada.

spec.source.tls

Tipo: Objeto

Configura un certificado de cliente TLS para la conexión de origen de sincronización mongot si utiliza la autenticación SCRAM (nombre de usuario y contraseña). Si configura este campo, mongot presenta el certificado de cliente durante el protocolo de enlace TLS con la implementación de origen de MongoDB (transporte TLS mutuo). mongot se sigue autenticando con el nombre de usuario y la contraseña.

Utilice este campo únicamente con autenticación SCRAM (spec.source.passwordSecretRef). Este campo es mutuamente excluyente con spec.source.x509. Si desea que el certificado del cliente sirva como credencial de autenticación, utilice spec.source.x509 en su lugar.

spec.source.tls.clientCertificateSecretRef

Tipo: Objeto

Secreto que contiene el certificado y la clave de cliente TLS que mongot presenta durante el protocolo de enlace TLS con la implementación de MongoDB de origen. El secreto debe contener las siguientes claves:

  • tls.crt — Certificado de cliente

  • tls.key — Clave privada

Debe especificar este campo si configura spec.source.tls.

spec.source.tls.keyFilePasswordSecretRef

Tipo: Objeto

Secreto que contiene la contraseña para descifrar la clave privada cifrada con contraseña en spec.source.tls.clientCertificateSecretRef. El secreto debe contener la contraseña bajo la clave keyFilePassword. Omita este campo si la clave privada no está cifrada.

spec.source.external

Tipo: Objeto

Configuración que describe la fuente de datos externa. Especifique esta configuración solo si desea conectarse a una base de datos MongoDB externa que no se haya implementado mediante el operador de Kubernetes. Si especifica esta configuración, tendrá prioridad sobre spec.source.mongodbResourceRef.

spec.source.external.hostAndPorts

Tipo: arreglo de cadenas

Lista de nombres de host y puertos del conjunto de réplicas externo. Este campo es mutuamente excluyente con spec.source.external.shardedCluster. Utilice hostAndPorts para fuentes de conjuntos de réplicas y shardedCluster para fuentes de clústeres fragmentados.

spec.source.external.shardedCluster

Tipo: Objeto

Declara un clúster MongoDB particionado externo como fuente de datos para mongot. Contiene la configuración para los routers mongos y los miembros del conjunto de réplicas por partición.

spec.source.external.shardedCluster.router.hosts

Tipo: arreglo de cadenas

Lista de extremos para las instancias de router mongos en formato host:port. Todas las mongot instancias se conectan a estos routers. Especifique al menos una entrada.

spec.source.external.shardedCluster.shards

Tipo: 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 mongot para cada fragmento. Especifique al menos una entrada de fragmento.

spec.source.external.shardedCluster.shards[*].shardName

Tipo: string

El nombre lógico del fragmento. El nombre debe ser único en todos los fragmentos y debe ajustarse a las reglas de nombres de etiquetas DNS de Kubernetes 1123(RFC): caracteres alfanuméricos en minúscula y guiones- (), comenzando y terminando 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, y shardName en 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. Mantenga shardName lo suficientemente corto para cumplir con estos límites.

spec.source.external.shardedCluster.shards[*].hosts

Tipo: arreglo de cadenas

Lista de puntos finales de los mongod miembros del conjunto de réplicas para este fragmento en formato host:port. Especifique al menos una entrada. Cada fragmento tiene su propio grupo de mongot instancias, que obtienen datos únicamente del conjunto de réplicas de ese fragmento.

spec.source.external.keyfileSecretRef

Tipo: Objeto

Secreto que contiene el archivo de clave mongod que mongot utiliza para conectarse a la implementación externa de MongoDB. El campo name es obligatorio. El campo key es opcional.

spec.source.external.tls.ca.name

Tipo: string

Nombre del ConfigMap que contiene la cadena de confianza de las autoridades de certificación que emitieron el certificado TLS utilizado por los nodos mongod. Debe especificar el certificado (o la cadena de certificados) bajo la clave ca.crt en este ConfigMap.

Las siguientes configuraciones describen cada entrada del array spec.clusters requerido.

spec.clusters

Tipo: arreglo de objetos

Configuración de despliegue 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, como replicas, loadBalancer, resourceRequirements, persistence, jvmFlags y statefulSet, se encuentran dentro de una entrada clusters. Estas configuraciones no tienen equivalentes de nivel superior.

Para una implementación de clúster único, especifique una entrada. Puede omitir name y index.

Para una implementación de clústeres múltiples, especifique una entrada para cada clúster de Kubernetes que ejecute mongot pods. Si especifica más de una entrada, se aplican las siguientes reglas:

  • name Es obligatorio en cada entrada y debe ser único.

  • index Es obligatorio en cada entrada y debe ser único.

  • La fuente de MongoDB debe ser externa (spec.source.external). Las implementaciones de clústeres múltiples no admiten fuentes de MongoDB administradas por el operador.

  • Cada entrada debe configurar un balanceador de carga administrado por el operador (loadBalancer.managed). Las implementaciones de clústeres múltiples no admiten balanceadores de carga no administrados.

El operador de Kubernetes aplica estas reglas mediante reglas de validación de CRD y validación en tiempo de conciliación.

spec.clusters[].name

Tipo: 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.clusters contiene más de una entrada, name es obligatorio, debe ser único entre las entradas y no puede cambiar después de crear el recurso.

spec.clusters[].index

Tipo: entero

Identificador entero estable del clúster de Kubernetes para esta entrada. El valor debe estar entre 0 y 999, y debe ser único entre todas las entradas. Si spec.clusters contiene más de una entrada, se requiere index en cada una de ellas.

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}-svc para Services y {name}-search-{index}-config para ConfigMaps. Para las fuentes de clúster fragmentadas, los nombres también incluyen el nombre del fragmento; por ejemplo, {name}-search-{index}-{shardName} y {name}-search-{index}-{shardName}-svc.

Advertencia

No modifique el index de una entrada existente. Dado que el índice forma parte de los nombres de los recursos, al modificarlo, el operador de Kubernetes creará nuevos recursos bajo el nuevo índice y dejará huérfanos los recursos del índice anterior. Esto se aplica a todos los recursos que contienen un índice, incluidos los servicios proxy ({name}-search-{index}[-{shardName}]-proxy-svc), el despliegue y el ConfigMap 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; su valor predeterminado es 0. Sin embargo, si cada clúster de Kubernetes miembro ejecuta su propia instancia de Kubernetes Operator, establezca explícitamente index con un valor distinto en el recurso MongoDBSearch de cada clúster. Los índices distintos evitan que los nombres de host y los nombres de recursos generados entre clústeres entren en conflicto.

spec.clusters[].replicas

Tipo: entero

Número de mongot pods a desplegar en este clúster de Kubernetes. Para un origen de conjunto de réplicas, este es el número total de mongot pods. Para un origen de clúster fragmentado, este es el número de mongot pods por fragmento.

Si spec.clusters[].replicas es mayor que 1, debe configurar también spec.clusters[].loadBalancer para enrutar el tráfico entre mongod y las múltiples instancias de mongot.

Si se establece spec.clusters[].replicas en 0, el operador de Kubernetes desconecta el despliegue mongot de este clúster. El operador de Kubernetes escala el StatefulSet a cero pods y mantiene el recurso MongoDBSearch y sus demás recursos de Kubernetes en su lugar.

Si se omite, es por defecto 1.

spec.clusters[].resourceRequirements

Tipo: core/v1/ResourceRequirements

CPU y memoria que el contenedor mongodb-search puede solicitar y a las que puede estar limitado.

Si se omite, el Operador de Kubernetes utiliza los siguientes valores por defecto:

requests:
cpu: 2
memory: 4Gi
spec.clusters[].resourceRequirements.limits

Tipo: Objeto

Límite máximo de recursos, CPU y memoria, que el contenedor mongodb-search puede consumir. Por defecto, no hay límites establecidos.

spec.clusters[].resourceRequirements.requests

Tipo: Objeto

Cantidad de CPU y memoria solicitada para el contenedor mongodb-search. Si especifica solo uno de los valores cpu o memory, el operador de Kubernetes aplicará el valor predeterminado para el otro.

spec.clusters[].persistence.single

Tipo: Objeto

Configuración de almacenamiento para el volumen de persistencia de MongoDB Search y Vector Search donde se almacenan los índices. Cada instancia de búsqueda (pod) tiene su propio almacenamiento independiente.

Escalar
Tipo de dato
Descripción

labelSelector

string

Etiqueta utilizada para vincular volúmenes montados a directorios.

storage

string

Tamaño mínimo del volumen persistente que debe montarse. El valor predeterminado 16G es.

storageClass

string

Tipo de almacenamiento especificado en una solicitud de volumen persistente.

MongoDBSearch Solo admite el single modo de persistencia, que utiliza un único volumen para todos los datos. Aunque el esquema CRD también contiene un spec.clusters[].persistence.multiple campo, el operador de Kubernetes no lo aplica. Si persistence omite, el operador de Kubernetes spec.clusters[].persistence.single.storage establece 16G en.

spec.clusters[].loadBalancer

Tipo: Objeto

Configuración para el balanceo de carga L7 entre mongod (o mongos) y mongot. Este campo es obligatorio si spec.clusters[].replicas es mayor que 1.

Se debe establecer exactamente solo uno de managed o unmanaged.

Todas las entradas en spec.clusters deben coincidir en el modo de balanceador de carga: o bien todas las entradas establecen loadBalancer.managed, todas establecen loadBalancer.unmanaged, o ninguna establece loadBalancer. El operador de Kubernetes rechaza los modos mixtos. Las implementaciones de clústeres múltiples solo admiten el modo administrado.

spec.clusters[].loadBalancer.managed

Tipo: Objeto

Configura un balanceador de carga Envoy administrado por el operador. Este campo es mutuamente excluyente spec.clusters[].loadBalancer.unmanaged con.

Para fuentes de clúster fragmentadas, también debe configurar spec.security.tls si utiliza un balanceador de carga administrado. El proxy Envoy enruta el tráfico al fragmento correcto mediante SNI, que requiere TLS.

spec.clusters[].loadBalancer.managed.externalHostname

Tipo: string

Nombre de host que el proxy Envoy espera para la coincidencia SNI en las solicitudes entrantes. El certificado del servidor TLS de Envoy debe incluir este nombre de host en su campo SAN (Subject Alternative Name).

Para las fuentes de clúster fragmentadas, el valor debe contener un marcador de posición {shardName}, que el operador de Kubernetes expande para cada fragmento. Cada fragmento obtiene su propio nombre de host, y el certificado del servidor TLS de Envoy debe incluir todos los nombres de host de los fragmentos expandidos en sus SAN. Para las fuentes de conjunto 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 implementaciones con varios clústeres, cada entrada de clúster suele usar un nombre de host distinto. Sin embargo, el operador de Kubernetes permite compartir un mismo nombre de host entre clústeres, por ejemplo, si un proxy de conmutación por error que abarca varias zonas de disponibilidad actúa como proxy para los proxies Envoy de varios clústeres.

spec.clusters[].loadBalancer.managed.routerHostname

Tipo: string

Punto final que los enrutadores mongos utilizan para llegar a las instancias mongot de este clúster a través del balanceador de carga Envoy administrado, en el formato host:port. El operador de Kubernetes utiliza el nombre de host para la coincidencia SNI en la cadena de enrutamiento a nivel de clúster, por lo que el certificado del servidor TLS de Envoy debe incluir este nombre de host en sus SAN.

Este campo es obligatorio si utiliza un balanceador de carga administrado con una fuente MongoDB fragmentada externa (spec.source.external.shardedCluster). El operador de Kubernetes ignora este campo para las fuentes de conjuntos de réplicas y para MongoDB administrado por el operador.

A diferencia de externalHostname, el operador de Kubernetes utiliza este valor tal cual, por lo que no debe contener un marcador de posición {shardName}. Este punto final es el punto de entrada independiente del fragmento para mongos.

spec.clusters[].loadBalancer.managed.replicas

Tipo: entero

Número de pods proxy de Envoy que se implementarán en este clúster de Kubernetes. El valor debe ser 1 o mayor. Si se omite, se utiliza 1 por defecto.

spec.clusters[].loadBalancer.managed.resourceRequirements

Tipo: 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.deployment

Tipo: Objeto

Anulaciones que el operador de Kubernetes fusiona en el despliegue de Envoy creado por el operador. Este objeto contiene un metadata campo con labels annotationsy, y un spec campo con un objeto apps/v1/DeploymentSpec.

spec.clusters[].loadBalancer.managed.retryPolicy

Tipo: Objeto

Comportamiento de reintento que el proxy Envoy aplica a flujos gRPC individuales a las instancias mongot ascendentes. El proxy Envoy envía cada intento de reintento a un host mongot diferente al del intento fallido.

Si omite este campo, el proxy Envoy reintenta con los valores predeterminados: 2 reintenta con un tiempo de espera por intento de 60s.

spec.clusters[].loadBalancer.managed.retryPolicy.numRetries

Tipo: entero

Número máximo de reintentos por solicitud. El valor debe ser 1 o mayor. Si se omite, se utiliza por defecto 2, lo que permite un total de tres intentos por solicitud.

spec.clusters[].loadBalancer.managed.retryPolicy.perTryTimeout

Tipo: string

Tiempo de espera para cada intento individual, incluida la solicitud original, expresado como una cadena de duración (por ejemplo, "30s"). Si se omite, el valor predeterminado es "60s".

spec.clusters[].loadBalancer.managed.minMongotReadyReplicas

Tipo: entero

Número mínimo de réplicas mongot listas que un grupo mongot (por ejemplo, las mongot instancias de un fragmento) debe tener antes de que el proxy Envoy dirija el tráfico hacia él. Mientras un grupo esté por debajo de este umbral, el proxy Envoy reenvía el tráfico destinado a ese grupo a un grupo mongot en buen estado y marca las solicitudes con el encabezado routed_from_another_shard. Estas solicitudes devuelven resultados vacíos en lugar de errores.

El valor debe ser 1 o mayor. Si se omite, se toma por defecto 1.

spec.clusters[].loadBalancer.unmanaged

Tipo: 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 en clústeres múltiples no admiten balanceadores de carga no administrados.

spec.clusters[].loadBalancer.unmanaged.endpoint

Tipo: string

El punto final del balanceador de carga BYO en formato host:port. Debe especificar este campo si configura spec.clusters[].loadBalancer.unmanaged.

Si el operador de Kubernetes gestiona el despliegue de MongoDB (usando spec.source.mongodbResourceRef), el operador de Kubernetes escribe este valor en la configuración mongod como mongotHost y searchIndexManagementHostAndPort.

Para fuentes de clústeres fragmentados externos, el valor debe contener un marcador de posición {shardName} que el operador de Kubernetes expande por cada fragmento, y debe contener más que solo dicho marcador. Para fuentes de conjuntos de réplicas externos, el valor no debe contener un marcador de posición {shardName}.

spec.clusters[].shardOverrides

Tipo: arreglo de objetos

Anula ese tamaño de fragmentos específicos dentro de esta entrada de clúster de manera diferente a los valores predeterminados del clúster.

Este campo solo se puede usar con una fuente de clúster fragmentada externa (spec.source.external.shardedCluster). Cada nombre de fragmento al que haga referencia debe existir en spec.source.external.shardedCluster.shards[*].shardName, y puede sobrescribir cada fragmento como máximo una vez por entrada de clúster.

Cada anulación contiene una lista shardNames obligatoria (al menos una entrada) y campos opcionales replicas, resourceRequirements, persistence, jvmFlags y statefulSet. Si se establecen replicas, resourceRequirements, persistence o jvmFlags en una anulación, estos reemplazan el valor del clúster para los fragmentos con nombre. jvmFlags reemplaza el valor del clúster solo si se establece como una lista no vacía. El operador de Kubernetes fusiona profundamente statefulSet con el valor del clúster. Los campos que no se establecen heredan el valor del clúster.

spec.clusters[].syncSourceSelector.matchTagSets

Tipo: arreglo de objetos

Lista ordenada de conjuntos de etiquetas de conjuntos de réplicas que selecciona los nodos de origen de sincronización mongod según sus etiquetas de conjunto de réplicas. El operador de Kubernetes pasa la lista a la configuración mongot. mongot sincroniza desde los nodos que selecciona el primer conjunto de etiquetas coincidente y da preferencia a 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 {} al final como alternativa si ningún conjunto de etiquetas anterior coincide. Puede especificar como máximo 50 entradas.

spec.clusters[].jvmFlags

Tipo: arreglo de cadenas

Indicadores de la JVM que se pasan al proceso mongot. Cada indicador 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 indicadores que no cumplen estas reglas.

Si no especifica -Xms o -Xmx en este campo, el operador de Kubernetes calcula automáticamente el tamaño del montón estableciendo ambos valores a la mitad de spec.clusters[].resourceRequirements.requests.memory. Si no especifica los requisitos de recursos, el operador de Kubernetes utiliza una solicitud de memoria predeterminada de 4Gi, lo que resulta en aproximadamente -Xmx2048m -Xms2048m. El operador de Kubernetes siempre agrega los indicadores que usted proporciona después de los indicadores calculados por el operador.

spec.clusters[].statefulSet

Tipo: Objeto

Anulaciones para el StatefulSet que el Operador de Kubernetes crea para desplegar mongot pods. Este objeto contiene un metadata campo con labels annotationsy, y un spec campo con 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 campos spec.clusters[].resourceRequirements y spec.clusters[].persistence respectivamente.

spec.clusters[].advancedMongotConfigs

Tipo: Objeto

Configuración avanzada mongot para esta entrada de clúster. El operador de Kubernetes reproduce el valor tal cual bajo la clave advancedConfigs del archivo de configuración mongot, sin leerlo ni modificarlo. Utilice este campo únicamente para configuraciones mongot que el recurso MongoDBSearch no exponga como campos de primera clase.

spec.security

Tipo: Objeto

Configuración de seguridad del servidor de escucha mongot.

spec.security.tls

Tipo: Objeto

TLS configuración para mongot. Si se omite, mongot no utilizará TLS para conexiones entrantes.

Si utiliza un balanceador de carga administrado con un origen de clúster fragmentado, este campo es obligatorio. El proxy Envoy enruta el tráfico al fragmento correcto mediante SNI, que depende del TLS ClientHello. El operador de Kubernetes fallará en la reconciliación si omite spec.security.tls en esta configuración.

spec.security.tls.certificateKeySecretRef.name

Tipo: string

Obsoleto desde la versión 1.8.0. : Utiliza spec.security.tls.certsSecretPrefix en 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 operador de Kubernetes aún admite este campo para implementaciones de conjuntos de réplicas por motivos de compatibilidad con versiones anteriores. Para implementaciones de clústeres fragmentados, el operador de Kubernetes rechaza este campo durante la validación, ya que una única referencia secreta no puede abarcar los certificados por fragmento.

spec.security.tls.certsSecretPrefix

Tipo: 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:

Componente
Patrón de nombre secreto

Certificado del set de réplicas mongot servidor

{certsSecretPrefix}-{name}-search-cert

Certificado mongot fragmentado (por clúster y fragmento)

{certsSecretPrefix}-{name}-search-{clusterIndex}-{shardName}-cert

Certificado de servidor de balanceador de carga administrado (por clúster, todas las topologías)

{certsSecretPrefix}-{name}-search-lb-{clusterIndex}-cert

Certificado de cliente de balanceador de carga gestionado

{certsSecretPrefix}-{name}-search-lb-{clusterIndex}-client-cert

El operador de Kubernetes utiliza un certificado de servidor de balanceador de carga administrado por clúster para todas las topologías. Para clústeres fragmentados, los SAN de este certificado deben incluir todos los nombres de host de fragmento expandidos desde externalHostname hasta routerHostname.

El operador de Kubernetes resuelve el nombre secreto del certificado del servidor mongot en el siguiente orden:

  1. Si establece spec.security.tls.certificateKeySecretRef.name, el operador de Kubernetes utiliza ese nombre.

  2. Si establece certsSecretPrefix, el operador de Kubernetes utiliza los patrones de nomenclatura de la tabla anterior.

  3. Si no configura ninguno de los dos campos, el operador de Kubernetes utiliza el nombre predeterminado {name}-search-cert para las implementaciones de conjuntos de réplicas, o el patrón predeterminado por fragmento {name}-search-{clusterIndex}-{shardName}-cert para las implementaciones fragmentadas.

Si no se establece certsSecretPrefix, los certificados del balanceador de carga administrado también utilizan nombres predeterminados: el operador de Kubernetes monta {name}-search-lb-{clusterIndex}-cert para el certificado del servidor y {name}-search-lb-{clusterIndex}-client-cert para el certificado del cliente.

spec.security.tls.keyFilePasswordSecretRef

Tipo: Objeto

Secreto que contiene la contraseña para descifrar la clave privada del servidor, cifrada con contraseña, en el secreto del certificado TLS. El secreto debe contener la contraseña bajo la clave keyFilePassword. Omita este campo si la clave privada del servidor no está cifrada.

spec.logLevel

Tipo: string

Nivel de verbosidad de los registros de mongot. El valor puede ser uno de los siguientes:

  • TRACE

  • DEBUG

  • INFO

  • WARN

  • ERROR

Si se omite, es por defecto INFO.

spec.observability.prometheus

Tipo: Objeto

Configuración para el 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 predeterminado 9946.

spec.observability.prometheus.mode

Tipo: string

Habilita o deshabilita el punto final de métricas de Prometheus en mongot. El valor puede ser enabled o disabled. Si se omite, se utiliza el valor predeterminado enabled.

spec.observability.prometheus.port

Tipo: 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.metricsForwarder

Tipo: Objeto

Configuración para el reenviador de métricas, un despliegue que el operador de Kubernetes crea para recopilar las métricas mongot de Prometheus y reenviarlas a Ops Manager.

spec.observability.metricsForwarder.mode

Tipo: string

Indica si el operador de Kubernetes crea el agente de reenvío de métricas. El valor puede ser uno de los siguientes:

  • auto — El operador de Kubernetes crea el agente de reenvío para las fuentes MongoDB (respaldadas por Ops Manager) gestionadas por el operador, y para las fuentes externas solo si se establece spec.observability.metricsForwarder.opsManager. Para las fuentes MongoDBCommunity, el operador de Kubernetes no crea el agente de reenvío.

  • enabled — El operador de Kubernetes siempre crea el agente de reenvío. Si el origen es un recurso MongoDBCommunity, el operador de Kubernetes informa un error porque el agente de reenvío no es compatible con los orígenes MongoDBCommunity.

  • disabled — El operador de Kubernetes nunca crea el agente de reenvío.

Si se omite, es por defecto auto.

Los modos enabled y auto requieren que el punto final de Prometheus (spec.observability.prometheus) esté habilitado. Si deshabilita el punto final, el operador de Kubernetes informa un estado de reenviador de métricas Invalid.

spec.observability.metricsForwarder.resourceRequirements

Tipo: core/v1/ResourceRequirements

CPU y memoria que el contenedor de reenvío de métricas puede solicitar y a las que puede estar limitado. Si se omite, el operador de Kubernetes utiliza solicitudes de cpu: 100m y memory: 128Mi, y límites de cpu: 250m y memory: 256Mi.

spec.observability.metricsForwarder.deployment

Tipo: Objeto

Anulaciones que el operador de Kubernetes fusiona en el despliegue del reenviador de métricas creado por el operador. Este objeto contiene un metadata campo con labels annotationsy, y un spec campo con un objeto apps/v1/DeploymentSpec.

spec.observability.metricsForwarder.opsManager

Tipo: Objeto

Proyecto y credenciales de Ops Manager a los que el agente de reenvío de métricas envía las métricas. Si se omite, el operador de Kubernetes obtiene el proyecto y las credenciales de la configuración de conexión del recurso MongoDB de origen. Configure este campo para fuentes MongoDB externas, cuando no exista ningún recurso MongoDB de origen.

Si configura este campo, debe configurar tanto agentCredentials.name (el Secret que contiene la clave API del agente de Ops Manager) como projectConfigMapRef.name (el ConfigMap que contiene la configuración del proyecto de Ops Manager).

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.autoEmbedding

Tipo: Objeto

Configuración para la inserción automatizada de datos de texto en su colección.

spec.autoEmbedding.embeddingModelAPIKeySecret.name

Tipo: string

Nombre del secreto que contiene las claves API del modelo de incrustación que mongot debe usar para generar incrustaciones en el momento de la indexación y de la consulta. El secreto debe contener la clave de tiempo de indexación bajo la indexing-key clave y la clave de tiempo de consulta bajo la query-key clave.

Puedes omitir embeddingModelAPIKeySecret solo si spec.autoEmbedding.providerEndpoint apunta al servicio de incrustación de IA Voyage autohospedado y administrado por el operador. De lo contrario, el operador de Kubernetes lo requiere.

spec.autoEmbedding.providerEndpoint

Tipo: string

URL del punto final del modelo de incrustación para generar incrustaciones.

spec.featureFlags

Tipo: Objeto

Indicadores de características para mongot. Si establece un indicador en true, el operador de Kubernetes lo convierte en la configuración mongot. Si omite el objeto featureFlags o un indicador individual, se aplica el esquema predeterminado para ese indicador (true para enableOverloadRetrySignal).

spec.featureFlags.enableOverloadRetrySignal

Tipo: booleano

Habilita la señal de reintento por sobrecarga mongot. Si habilita esta bandera, mongot indica la reducción de carga a los proxies ascendentes (como el balanceador de carga Envoy administrado por el operador) a través de respuestas gRPC RESOURCE_EXHAUSTED. Los proxies reintentan la solicitud en otra instancia mongot.

Si se omite, es por defecto true.

spec.version

Tipo: string

Versión de la imagen Docker mongodb-search. Si se omite, el operador de Kubernetes utiliza la versión predeterminada de MongoDB Search incluida. Puede especificar la versión explícitamente para evitar actualizaciones automáticas al actualizar el operador de Kubernetes.

El operador de Kubernetes informa información de estado en el campo status del recurso MongoDBSearch.

status.phase

Tipo: string

Fase actual del recurso MongoDBSearch. Los valores posibles incluyen Pending, Running, Failed, Disabled, Updated y Unsupported.

status.message

Tipo: string

Mensaje legible para humanos con detalles sobre el estado actual.

status.lastTransition

Tipo: string

Marca de tiempo de la última transición de status.phase.

status.observedGeneration

Tipo: entero

Generación del recurso MongoDBSearch que el operador de Kubernetes procesó por última vez.

status.warnings

Tipo: arreglo de cadenas

Advertencias que el operador de Kubernetes informa sobre el recurso.

status.version

Tipo: string

Versión de MongoDB Search (mongot) que el operador de Kubernetes resolvió.

status.resourcesNotReady

Tipo: arreglo de objetos

Recursos de Kubernetes dependientes que aún no están listos. Cada entrada informa el kind y el name del recurso y un message opcional y una lista de errors.

status.pvc

Tipo: arreglo de objetos

Estado de las reclamaciones de volumen persistente de los mongot StatefulSets. Cada entrada informa el phase y el statefulsetName a los que pertenecen las reclamaciones.

status.loadBalancer

Tipo: Objeto

Estado del balanceador de carga administrado por el operador (Envoy). Este campo solo está presente si se establece spec.clusters[].loadBalancer.managed. Para implementaciones de varios clústeres, el operador de Kubernetes informa la peor fase de todas las implementaciones de Envoy de todos los clústeres.

status.loadBalancer.phase

Tipo: string

Fase actual del balanceador de carga gestionado. Los valores posibles incluyen Pending, Running y Failed. Este campo es visible en la salida kubectl get bajo la columna LOADBALANCER.

status.loadBalancer.message

Tipo: string

Mensaje legible para humanos con detalles sobre el estado del balanceador de carga administrado.

status.metricsForwarder

Tipo: Objeto

Estado del reenviador de métricas.

status.metricsForwarder.phase

Tipo: string

Fase actual del reenviador de métricas. Los valores posibles incluyen Pending, Running y Failed. La fase informa Disabled si se establece spec.observability.metricsForwarder.mode en disabled. Este campo es visible en la salida kubectl get bajo la columna METRICSFORWARDER.

status.metricsForwarder.message

Tipo: string

Mensaje legible para humanos con detalles sobre el estado del reenviador de métricas.