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

Configuraciones de MongoDB Search y búsqueda vectorial

Puede implementar MongoDB Search y búsqueda vectorial junto con MongoDB 8.2 o posterior usando MongoDB Controllers para el Kubernetes operador.

El siguiente ejemplo muestra la configuración dentro del objeto spec para la implementación de MongoDB Search y búsqueda vectorial. Para obtener más información sobre estas configuraciones, consulta Configuraciones obligatorias y Configuraciones opcionales.

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.

Ejemplo

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

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 MongoDB en Kubernetes que se va a crear. Configura esto como MongoDBSearch.

metadata.namespace

Tipo: string

Namespace en el que crear el recurso MongoDBSearch. Para aprovechar la configuración automática de MongoDBSearch y los recursos MongoDB o MongoDBCommunity, cree el recurso MongoDBSearch 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 de Kubernetes válido. Mantenga el nombre corto. El operador de Kubernetes deriva de él los nombres de los recursos de Kubernetes que crea, 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.clusters

Tipo: arreglo de objetos

Configuración de implementación por clúster de Kubernetes para 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 clúster único o una entrada para cada clúster de Kubernetes que ejecute pods mongot en una implementación de varios clúster. Para obtener la referencia completa del campo, incluidos name y index, consulte spec.clústeres.

Esta sección describe los parámetros opcionales para el recurso MongoDB Search y búsqueda vectorial. Si omites los parámetros opcionales y defines solo los parámetros requeridos en el CRD, los controladores de MongoDB para Kubernetes operador utilizan los valores por defecto para todos los parámetros opcionales para configurar MongoDBSearch.

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 recurso MongoDBSearch siempre debe estar conectado a una implementación de MongoDB. Si realizó la implementación usando el operador de Kubernetes con MongoDB o MongoDBCommunity CRD, y si spec.source está vacío, el operador de Kubernetes utiliza lo siguiente según el metadata.name para buscar la base de datos en Kubernetes:

  • Encuentra MongoDB o MongoDBCommunity recursos con el mismo nombre que se establece para metadata.name en MongoDBSearch, en el mismo namespace.

  • Encuentre el secreto de la contraseña para el usuario mongot del 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.name

Tipo: string

Nombre del recurso MongoDB o MongoDBCommunity para asociar con este recurso de MongoDB Search y búsqueda vectorial. El operador de Kubernetes admite tanto los sets de réplicas como los clústeres. No puede tener más de un recurso MongoDBSearch que haga referencia al mismo recurso MongoDB o MongoDBCommunity. Si especifica un nombre diferente, debe señalar explícitamente el MongoDB o MongoDBCommunity donde desea habilitar MongoDB Search y la búsqueda vectorial.

Si hace referencia a un recurso MongoDB de clúster particionado, el operador de Kubernetes autodetecta la topología de partición (nombres de partición, miembros del conjunto de réplicas, enrutadores mongos) y crea automáticamente conjuntos de estado mongot por partición. No es necesario realizar ninguna configuración externa adicional.

Este campo solo se debe utilizar si el recurso de MongoDB o MongoDBCommunity está implementado en el mismo clúster de Kubernetes y en el mismo espacio de nombres que el recurso de MongoDBSearch. Si configura este campo, el Operador de Kubernetes automáticamente:

  • Establece las cadenas de conexión adecuadas a la base de datos.

  • Reconfigura las implementaciones de la base de datos MongoDB estableciendo los parámetros necesarios para habilitar la funcionalidad de búsqueda y configurando las direcciones de los pods de búsqueda.

Si su base de datos está implementada fuera de Kubernetes o se encuentra en un namespace diferente, utilice spec.source.external para configurar la conexión a la base de datos. Si configura ambos campos, spec.source.external tiene 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

Namespace 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 namespace del recurso MongoDBSearch. Las referencias entre namespace no son compatibles. Si su base de datos está en un namespace 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 utilizar para autenticarse con mongod. Si se omite, el valor por defecto es <MongoDBSearch.metadata.name>-<username>-password, donde <username> es el valor de spec.source.username. Para el nombre de usuario predeterminado search-sync-source, esto produce <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 especifica 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 — 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.

Ejemplo

spec:
source:
x509:
clientCertificateSecretRef:
name: mongot-x509-client-cert
spec.source.x509.keyFilePasswordSecretRef

Tipo: 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 clave keyFilePassword. Omita este campo si la llave privada no está cifrado.

spec.source.tls

Tipo: Objeto

Configura un certificado de cliente TLS para la conexión de origen de sincronizar mongot si utiliza la autenticación SCRAM (nombre de usuario y contraseña). Si establece este campo, mongot presenta el certificado de cliente durante el protocolo de enlace TLS con la implementación de MongoDB de origen (transporte TLS mutuo). mongot todaví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 con spec.source.x509. Si desea que el propio certificado de cliente sirva como credencial de autenticación, utilice spec.source.x509 en su lugar.

spec.source.tls.clientCertificateSecretRef

Tipo: Objeto

Clave secreta que contiene el certificado de cliente TLS y la clave que mongot presenta 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 cliente

  • tls.key — llave privada

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

spec.source.tls.keyFilePasswordSecretRef

Tipo: 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 clave keyFilePassword. Omita este campo si la llave privada no está cifrado.

Las siguientes configuraciones solo son necesarias para configurar una conexión a una implementación externa de MongoDB.

spec.source.external

Tipo: Objeto

Configuración que describe la fuente de datos externa. Este objeto describe la configuración del recurso MongoDB Search y búsqueda vectorial para conectarse a un MongoDB externo. Especifique esta configuración solo si desea conectarse a un MongoDB externo que no se implementó con Kubernetes Operator. Si especifica esta configuración, tendrá prioridad sobre spec.source.mongodbResourceRef. Si utilizó Kubernetes Operator para instalar MongoDB en el mismo clúster, esta configuración es opcional.

spec.source.external.keyfileSecretRef

Tipo: Objeto

Secreto que contiene el archivo de claves mongod que mongot utiliza para conectarse a la implementación externa de MongoDB.

spec.source.external.keyfileSecretRef.name

Tipo: string

Nombre del secreto que contiene el archivo de claves. Debe especificar este campo si configura spec.source.external.keyfileSecretRef.

spec.source.external.keyfileSecretRef.key

Tipo: string

Clave bajo la cual se almacena el archivo de claves en el secreto. Este campo es opcional.

spec.source.external.hostAndPorts

Tipo: 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 mongot se conecta a la base de datos en modo de set de réplicas y obtiene la lista de todos los demás nodos utilizando db.hello().

Este campo es mutuamente excluyente con spec.source.external.shardedCluster. Use hostAndPorts para fuentes de sets de réplicas y shardedCluster para fuentes de clústeres.

Ejemplo

hostAndPorts:
- mdbc-rs-0.my-external-domain.example.com:27017
- mdbc-rs-1.my-external-domain.example.com:27017
- mdbc-rs-2.my-external-domain.example.com:27017
spec.source.external.tls

Tipo: Objeto

Configuraciones de TLS que mongot debe usar al conectarse a la base de datos externa MongoDB.

spec.source.external.tls.ca.name

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

Ejemplo

spec:
source:
external:
tls:
ca:
name: trusted-ca

Debe especificar el certificado (o cadena de certificados) bajo la clave ca.crt en este ConfigMap.

Ejemplo

kind: ConfigMap
apiVersion: v1
metadata:
name: trusted-ca
data:
ca.crt: |
-----BEGIN CERTIFICATE-----
MIIDBTCCAe2gAwIBAgIIH3EOUAGAsx0wDQYJKoZIhvcNAQELBQAwFTETMBEGA1UE
[...]
U/4rN8Ias/FONYFRtGfs9uXHmo2MP04BF+9ED2dlbNDUbat+6XCozLJj98nI4VEi
qaV3JrVFHTgN
-----END CERTIFICATE-----

Los siguientes ajustes son necesarios solo para configurar una conexión con un clúster segmentado externo de MongoDB. Extienden la configuración existente de spec.source.external.

Nota

spec.source.external.hostAndPorts (para sets de réplicas) y spec.source.external.shardedCluster son mutuamente excluyentes. Especifica solo uno de ellos.

spec.source.external.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.

Utilízalo sólo si el clúster compartido de MongoDB está implementado fuera de Kubernetes y no es gestionado por el Operador de Kubernetes. Para los clústeres fragmentados gestionados por operadores implementados con el MongoDB CRD, utiliza spec.source.mongodbResourceRef en su lugar. El operador de Kubernetes detecta automáticamente la topología de partición.

Ejemplo

spec:
source:
external:
shardedCluster:
router:
hosts:
- "mongos1.external:27017"
- "mongos2.external:27017"
shards:
- shardName: "shard-0"
hosts:
- "shard0-node1.external:27018"
- "shard0-node2.external:27018"
- shardName: "shard-1"
hosts:
- "shard1-node1.external:27018"
- "shard1-node2.external:27018"
spec.source.external.shardedCluster.router

Tipo: Objeto

Configuración para las instancias mongos (router) del clúster externo.

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.

Ejemplo

router:
hosts:
- "mongos1.external:27017"
- "mongos2.external:27017"
spec.source.external.shardedCluster.shards

Tipo: arreglo de objetos

Lista de todas las particiones del clúster externo de MongoDB. Cada entrada describe el conjunto de réplicas de una partición. El Kubernetes Operator crea un mongot StatefulSet para cada partición, donde cada StatefulSet contiene el número de pods especificado en spec.clusters[].replicas. Especifica al menos una entrada de partición.

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

Tipo: string

El nombre lógico de la partición. El Operador de Kubernetes utiliza este nombre para la nomenclatura de recursos de Kubernetes (StatefulSets, Servicios, Secretos). El valor puede ser diferente del nombre de la partición de MongoDB.

Restricciones de denominación:

  • Debe ser único en todas las particiones.

  • Debe ajustarse a las reglas de nombres de etiquetas DNS de Kubernetes (RFC 1123), las cuales permiten el uso de caracteres alfanuméricos en minúsculas y guiones (-), y exigen que el nombre comience y termine con un caracter alfanumérico. No se permiten puntos (.) ni guiones bajos (_). La longitud máxima es de 63 caracteres.

  • El operador de Kubernetes combina metadata.name, el índice del clúster y shardName en los nombres de los recursos de Kubernetes que crea (por ejemplo, {name}-search-{clusterIndex}-{shardName}), 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 estos límites.

Ejemplo

shards:
- shardName: "shard-0"
hosts:
- "shard0-node1.external:27018"
spec.source.external.shardedCluster.shards[*].hosts

Tipo: arreglo de cadenas

Lista de endpoints de los miembros del conjunto de réplicas mongod para esta partición en el formato host:port. Las instancias mongot replican los datos desde estos hosts. Especifique al menos una entrada.

Cada set de réplicas (partición) tiene su propio grupo de instancias mongot, que obtiene los datos solo de ese set de réplicas. Las diferentes particiones nunca comparten las mismas instancias de mongot.

Ejemplo

shards:
- shardName: "shard-0"
hosts:
- "shard0-node1.external:27018"
- "shard0-node2.external:27018"
- "shard0-node3.external:27018"

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

spec.clusters

Tipo: arreglo de objetos

Configuración de implementación por clúster de Kubernetes para 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.

Ejemplo

spec:
clusters:
- {}

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:

  • 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 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[].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, se requiere name, debe ser único en todas 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 en todas las entradas. Si spec.clusters contiene más de una entrada, se requiere index en 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}-svc para servicios y {name}-search-{index}-config para 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 index de una entrada existente porque el índice forma parte de los nombres de los recursos. Si lo cambia, el operador de Kubernetes creará nuevos recursos bajo el nuevo índice y huérfanos los recursos en el índice antiguo. 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 nodo del clúster de Kubernetes ejecuta su propia instancia del operador de Kubernetes, establezca index explícitamente en 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 entren en conflicto entre clústeres.

spec.clusters[].replicas

Tipo: entero

Número de pods mongot que se implementarán en este clúster de Kubernetes. Para una fuente de set de réplicas, este es el número total de pods mongot. Para una fuente de clúster particionado, este es el número de pods mongot por partición.

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 establece spec.clusters[].replicas en 0, el operador de Kubernetes desconecta la implementación de mongot en este clúster. El operador de Kubernetes escala el StatefulSet a cero pods y mantiene el recurso MongoDBSearch y sus otros recursos de Kubernetes en su lugar.

Si se omite, es por defecto 1.

Ejemplo

spec:
clusters:
- replicas: 2
spec.clusters[].resourceRequirements

Tipo: core/v1/ResourceRequirements

CPU y memoria que el contenedor mongodb-search puede solicitar y tener limitados. Recomendamos utilizar este campo para personalizar las asignaciones de recursos en lugar de sobrescribirlo con spec.clusters[].statefulSet.

Si no anulas el tamaño del heap de la JVM en spec.clusters[].jvmFlags, el operador de Kubernetes establece el tamaño por defecto del heap (-Xmx) en el 50% de la solicitud de memoria del contenedor mongot. Ajusta spec.clusters[].resourceRequirements en consecuencia para controlar tanto los recursos del pod como el tamaño del heap de la JVM.

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

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

Tipo: Objeto

Límite superior de los recursos (CPU y memoria) que el contenedor mongodb-search puede consumir. Por defecto, no se establecen límites. Si se omite, el pod no está restringido y, por lo tanto, podría usar todos los recursos del nodo. Recomendamos establecer límites en función de su carga de trabajo.

spec.clusters[].resourceRequirements.requests

Tipo: Objeto

Cantidad de CPU y memoria solicitadas para el contenedor mongodb-search. Si especifica solo uno de cpu o memory, el operador de Kubernetes aplica el valor predeterminado para el otro. Si se omite, el operador de Kubernetes utiliza los siguientes valores predeterminados:

requests:
cpu: 2
memory: 4Gi
spec.clusters[].persistence.single

Tipo: Objeto

Configuración de almacenamiento para el volumen persistente de MongoDB Search y búsqueda vectorial donde se almacenan los índices de MongoDB Search y búsqueda vectorial. Cada instancia de búsqueda (pod) tiene su propio almacenamiento independiente para mantener índices, que no se comparte con la base de datos MongoDB. Solo los metadatos del índice (definiciones) se almacenan en la propia base de datos.

Escalar
Tipo de dato
Descripción

labelSelector

string

Etiqueta utilizada para vincular volúmenes montados a directorios.

storage

string

Tamaño mínimo de Volumen Persistente que debe montarse. Este valor se expresa como un número entero seguido de una unidad de almacenamiento en notación JEDEC.

El valor por defecto es 16G.

Por ejemplo, si un set de réplicas requiere 60 gigabytes de espacio de almacenamiento, establece este valor en 60G.

storageClass

string

Tipo de almacenamiento especificado en una Persistent Volume Claim. Puede crear este tipo de almacenamiento como un StorageClass objeto antes de usarlo en esta especificación de objeto.

Asegúrate de establecer el StorageClass reclaimPolicy como Retain. Esto garantiza que los datos se conserven cuando se elimine una Solicitud de Volumen Persistente.

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

spec.clusters[].loadBalancer

Tipo: Objeto

Configuración para el balanceo de carga L7 entre mongod (u mongos) y mongot. Este campo es obligatorio si spec.clusters[].replicas es mayor que 1. Si spec.clusters[].replicas es 1, este campo es opcional. Puedes configurar un balanceador de carga incluso para una sola instancia mongot para prepararte para un escalado posterior.

Se debe establecer exactamente solo uno de managed o unmanaged.

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

El equilibrador de carga afecta el tipo de certificados TLS que ven los clientes de mongod y los nombres de host que deben contener esos certificados:

  • Sin un balanceador de carga, mongod se conecta directamente a mongot. El certificado TLS presentado a mongod es el propio certificado de mongot. Si el clúster de MongoDB está fuera de Kubernetes, el servicio mongot está expuesto en un dominio externo. Debe incluir ese dominio externo en el campo SAN (Nombre Alternativo del Sujeto) del certificado TLS mongot.

  • Con un balanceador de carga gestionado (spec.clusters[].loadBalancer.managed), el proxy Envoy es el único componente que se conecta directamente a mongot. El proxy Envoy accede a mongot a través de los FQDN de servicio internos:

    • set de réplicas: <name>-search-<clusterIndex>-svc.<ns>.svc.cluster.local

    • clúster particionado: <name>-search-<clusterIndex>-<shard>-svc.<ns>.svc.cluster.local

    Recomendamos que incluya estos FQDN de servicio en el campo SAN del certificado TLS mongot. El proxy Envoy gestionado por el operador actualmente valida el certificado mongot solo con la autoridad de certificación y no coincide con los nombres de host SAN. Los procesos mongod externos ven el certificado TLS del proxy Envoy, así que incluya dominios externos en los SAN del certificado Envoy, no en el certificado mongot.

Tip

Permite un balanceador de carga administrado incluso si inicialmente implementas un solo pod mongot. Con el balanceador de carga en funcionamiento, los dominios en tus certificados TLS se mantienen estables si más adelante escalas spec.clusters[].replicas porque el balanceador de carga ya está presente entre mongod y mongot.

spec.clusters[].loadBalancer.managed

Tipo: Objeto

Configura un Envoy balanceador de carga gestionado por el operador. El Operador Kubernetes despliega y gestiona el proxy Envoy con un enrutamiento correcto, mTLS y fijación de flujos HTTP/2+ gRPC. Configura este campo a un objeto vacío ({}) para usar los valores por defecto.

Este campo es excluyente con spec.clusters[].loadBalancer.unmanaged.

Para las fuentes de clústeres particionados, también debe configurar spec.security.tls si utiliza un balanceador de carga gestionado. El proxy Envoy enruta el tráfico a la partición correcta mediante SNI, lo que requiere TLS.

Ejemplo

spec:
clusters:
- loadBalancer:
managed: {}
spec.clusters[].loadBalancer.managed.externalHostname

Tipo: string

Nombre de host que el proxy Envoy espera para la coincidencia SNI en las solicitudes entrantes. El Operador de Kubernetes utiliza este valor para configurar reglas de enrutamiento que coincidan con el campo TLS SNI de las conexiones entrantes mongod. El certificado de servidor Envoy TLS debe incluir este nombre de host en su campo SAN (Nombre Alternativo del Sujeto).

Para las fuentes de clústeres fragmentados, el valor debe contener un marcador de posición {shardName} que el operador de Kubernetes expanda 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. Puede utilizar un certificado comodín para cubrir todas las particiones con un único certificado y evitar volver a emitirlo cuando se agreguen particiones. Para 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.

Ejemplo

# Replica set with external MongoDB
spec:
clusters:
- loadBalancer:
managed:
externalHostname: "search.apps.example.com"
# Sharded cluster with external MongoDB
spec:
clusters:
- loadBalancer:
managed:
externalHostname: "{shardName}.search.example.com"
spec.clusters[].loadBalancer.managed.routerHostname

Tipo: string

Punto de conexión que los enrutadores mongos utilizan para llegar a las instancias mongot de este clúster a través del balanceador de carga de Envoy gestionado, en el formato host: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 para mongos.

En las implementaciones de varios clústeres, cada entrada de clúster suele utilizar un valor distinto. Sin embargo, el operador de Kubernetes permite compartir un valor 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.

Ejemplo

spec:
clusters:
- loadBalancer:
managed:
externalHostname: "{shardName}.search.example.com"
routerHostname: "search-router.example.com:27028"
spec.clusters[].loadBalancer.managed.replicas

Tipo: entero

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

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

Ejemplo

spec:
clusters:
- loadBalancer:
managed:
resourceRequirements:
requests:
cpu: "200m"
memory: "256Mi"
limits:
cpu: "1"
memory: "1Gi"
spec.clusters[].loadBalancer.managed.deployment

Tipo: Objeto

Anulaciones que el Operador de Kubernetes fusiona en la Implementación de Envoy creada por el operador. Sigue la misma convención que spec.statefulSet en recursos de MongoDB. Si se omite, el Operador de Kubernetes utiliza los valores por defecto para el Despliegue de Envoy.

Este objeto contiene dos campos:

  • metadata — contiene los campos labels y annotations que el Operador de Kubernetes fusiona en los metadatos de la implementación de Envoy.

  • spec — un objeto apps/v1/DeploymentSpec. El operador de Kubernetes fusiona estos valores anulados en la especificación de implementación de Envoy.

Ejemplo

spec:
clusters:
- loadBalancer:
managed:
deployment:
spec:
template:
spec:
nodeSelector:
kubernetes.io/os: linux
spec.clusters[].loadBalancer.managed.retryPolicy

Tipo: Objeto

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

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

Ejemplo

spec:
clusters:
- loadBalancer:
managed:
retryPolicy:
numRetries: 2
perTryTimeout: "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, el valor es por defecto 2, lo que permite tres intentos totales para cada solicitud.

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

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

Tipo: entero

Número mínimo de réplicas mongot listas que un grupo mongot (por ejemplo, las instancias mongot de 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 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, por defecto se asigna a 1.

spec.clusters[].loadBalancer.unmanaged

Tipo: Objeto

Configura un balanceador de carga L7 proporcionado por el usuario (Bring Your Own). Tú eres responsable de implementar y configurar el balanceador de carga externamente.

Este campo es excluyente con spec.clusters[].loadBalancer.managed. Las implementaciones de varios clústeres no admiten balanceadores de carga no gestionados.

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 la implementación de MongoDB (mediante spec.source.mongodbResourceRef), el operador de Kubernetes guarda este valor en la configuración mongod como mongotHost y searchIndexManagementHostAndPort. Si MongoDB es externo, configure usted mismo los parámetros mongod con el mismo valor.

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

Ejemplo

# Replica set example
spec:
clusters:
- loadBalancer:
unmanaged:
endpoint: "search-lb.corp.example.com:443"
# Sharded cluster example
spec:
clusters:
- loadBalancer:
unmanaged:
endpoint: "{shardName}-lb.corp.example.com:443"
spec.clusters[].shardOverrides

Tipo: arreglo de objetos

Anulaciones que partición de tamaño específico dentro de esta entrada de clúster de manera diferente a los valores por defecto del clúster. Utilice este campo para dar a las partición individuales más o menos réplicas, recursos o almacenamiento mongot que el resto 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 en spec.source.external.shardedCluster.shards[*].shardName, y puede anular cada partición como máximo una vez por entrada de clúster.

Si establece replicas, resourceRequirements, persistence o jvmFlags en una anulación, reemplazan el valor del clúster para las particiones con nombre. El operador de Kubernetes combina statefulSet en profundidad con el valor del clúster. Los campos que no establezca heredan el valor del clúster.

Ejemplo

spec:
clusters:
- replicas: 2
shardOverrides:
- shardNames:
- shard-0
replicas: 3
resourceRequirements:
requests:
cpu: "4"
memory: 8Gi
spec.clusters[].shardOverrides[*].shardNames

Tipo: arreglo de cadenas

Nombres de las particiones dentro de esta entrada de clúster a las que se aplica la anulación. Este campo es obligatorio y debe contener al menos una entrada.

spec.clusters[].shardOverrides[*].replicas

Tipo: entero

Reemplaza el recuento de réplicas mongot del clúster para las particiones con nombre. Un valor de 0 desconecta las instancias mongot de estas particiones.

spec.clusters[].shardOverrides[*].resourceRequirements

Tipo: core/v1/ResourceRequirements

Reemplaza las solicitudes y los límites de CPU y memoria del clúster para las particiones con nombre.

spec.clusters[].shardOverrides[*].persistence

Tipo: Objeto

Reemplaza la configuración de volumen persistente del clúster para las particiones con nombre. Utiliza el mismo esquema que spec.clusters[].persistence.

spec.clusters[].shardOverrides[*].statefulSet

Tipo: Objeto

Anulaciones de StatefulSet para las particiones con nombre. A diferencia de los demás campos de anulación, el operador de Kubernetes combina en profundidad este valor con el valor spec.clusters[].statefulSet del clúster en lugar de reemplazarlo.

spec.clusters[].shardOverrides[*].jvmFlags

Tipo: arreglo de cadenas

Reemplaza el spec.clusters[].jvmFlags del clúster para las particiones con nombre si lo establece en una lista no vacía. Las reglas de formato para spec.clusters[].jvmFlags también se aplican a este campo.

spec.clusters[].syncSourceSelector

Tipo: Objeto

Selecciona de qué nodos mongod sincronizan los datos las instancias mongot de esta entrada de clúster.

spec.clusters[].syncSourceSelector.matchTagSets

Tipo: arreglo de objetos

Lista ordenada de conjuntos de etiquetas de set de réplicas que selecciona los nodos mongod de la fuente de sincronización por sus etiquetas de set de réplicas. El operador de Kubernetes pasa la lista a la configuración mongot. mongot se 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.

Ejemplo

spec:
clusters:
- syncSourceSelector:
matchTagSets:
- region: us-east-1
workload: search
- {}
spec.clusters[].jvmFlags

Tipo: arreglo de cadenas

Señales de JVM pasadas al proceso mongot. El operador de Kubernetes incluye las banderas sin modificaciones en el comando de inicio mongot usando --jvm-flags "<all flags space-separated>".

Cada marca 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 las marcas que no coinciden con estas reglas.

Si no especifica -Xms o -Xmx en este campo, el Operador de Kubernetes calcula automáticamente el tamaño del heap configurando ambos en la mitad de spec.clusters[].resourceRequirements.requests.memory. Si no se especifican los requisitos de recursos, el Operador de Kubernetes utiliza un valor predeterminado de 4Gi de solicitud de memoria, lo que genera aproximadamente -Xmx2048m -Xms2048m.

Si proporciona sus propios valores de -Xms o -Xmx, el operador de Kubernetes los utiliza y no los anula. El Operador de Kubernetes siempre añade los parámetros que usted proporciona después de los parámetros calculados por el operador.

Para más información, consulte Dimensionamiento del hardware para mongot.

Ejemplo

spec:
clusters:
- jvmFlags:
- -Xms2g
- -Xmx2g
spec.clusters[].statefulSet

Tipo: Objeto

Anulaciones para el StatefulSet que crea el operador de Kubernetes para implementar pods mongot. El operador de Kubernetes siempre aplica las anulaciones al final, por lo que sobrescriben la configuración que calcula el operador de Kubernetes.

Este objeto contiene dos campos:

  • metadata — contiene los campos labels y annotations que el operador de Kubernetes fusiona en los metadatos de StatefulSet.

  • spec — un objeto apps/v1/StatefulSetSpec. El operador de Kubernetes fusiona estos valores anulados en la especificación de StatefulSet.

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 de mongot para esta entrada de clúster. El operador de Kubernetes renderiza el valor textualmente bajo la clave advancedConfigs del archivo de configuración mongot, sin leerlo ni modificarlo. Este campo no afecta la configuración que el operador de Kubernetes genera en otras partes de la configuración mongot.

Utiliza este campo solo para la configuración de mongot que el recurso MongoDBSearch no expone 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 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.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 namespace que contiene la llave privada (tls.key) y el certificado (tls.crt). El secreto puede ser de tipo kubernetes.io/tls (emitido por cert-manager) o puede crearse manualmente.

El Operador de Kubernetes sigue admitiendo este campo para las implementaciones de conjuntos de réplicas por motivos de compatibilidad con versiones anteriores. Sin embargo:

  • Para implementaciones de clúster segmentado, el operador de Kubernetes rechaza este campo durante la validación. Utilice spec.security.tls.certsSecretPrefix en su lugar, porque una referencia individual de secreto no puede cubrir certificados por partición.

  • Si especificas tanto certificateKeySecretRef como certsSecretPrefix, certificateKeySecretRef tiene prioridad para los despliegues en conjuntos de réplicas.

Para nuevas implementaciones, usa spec.security.tls.certsSecretPrefix incluso para set de réplicas.

spec.security.tls.certsSecretPrefix

Tipo: string

Prefijo que el Operador de Kubernetes utiliza para derivar los nombres de los secretos TLS según la convención de nomenclatura. Si configuras este campo, el operador de Kubernetes busca secretos que siguen estos patrones en lugar de requerir referencias explícitas de secretos para cada componente:

Componente
Patrón de nombre secreto

Certificado del set de réplicas mongot servidor

{certsSecretPrefix}-{name}-search-cert

Certificado particionado mongot (por clúster y partición)

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

Certificado de servidor de balanceador de carga gestionado (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

Dónde:

  • {name} es metadata.name del recurso MongoDBSearch

  • {clusterIndex} es el valor de spec.clusters[].index (0 para una implementación de clúster único que no establece un índice)

  • {shardName} es el valor que spec.source.external.shardedCluster.shards[*].shardName

El 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 externalHostname y el 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 establece ningún campo, el operador de Kubernetes utiliza el nombre predeterminado {name}-search-cert para las implementaciones de set de réplicas o el patrón predeterminado por partición {name}-search-{clusterIndex}-{shardName}-cert para 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}-cert para el certificado del servidor y {name}-search-lb-{clusterIndex}-client-cert para el certificado del cliente.

Nota

Para implementaciones de clúster particionado, el operador de Kubernetes rechaza certificateKeySecretRef porque una referencia individual de secreto no puede cubrir certificados por partición. Usa certsSecretPrefix, o no establezcas ninguno de los campos y crea secretos que sigan el patrón por defecto por partición y los secretos de certificado del balanceador de carga con nombre por defecto.

Ejemplo

spec:
security:
tls:
certsSecretPrefix: my-prefix
spec.security.tls.keyFilePasswordSecretRef

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

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

Tipo: Objeto

Configuración de observabilidad para el recurso MongoDBSearch, incluido el punto final de métricas de Prometheus en mongot y el reenviador de métricas para MongoDB Ops Manager.

spec.observability.prometheus

Tipo: 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 predeterminado 9946. Para deshabilitar el punto final, establezca spec.observability.prometheus.mode en disabled. Para cambiar el puerto, establezca spec.observability.prometheus.port.

spec.observability.prometheus.mode

Tipo: string

Habilita o deshabilita el punto final de métricas de Prometheus en mongot. El valor puede ser uno de los siguientes:

  • enabled

  • disabled

Si se omite, es por defecto 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, una implementación que el operador de Kubernetes crea para extraer las métricas de Prometheus mongot y reenviarlas a Ops Manager.

spec.observability.metricsForwarder.mode

Tipo: 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 de MongoDB gestionadas por el operador (respaldadas por MongoDB Ops Manager) y para fuentes externas solo si establece spec.observability.metricsForwarder.opsManager. Para las fuentes de MongoDBCommunity, el operador de Kubernetes no crea el reenviador.

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

  • disabled — El operador de Kubernetes nunca crea el reenviador.

Si se omite, es por defecto auto.

Los modos enabled y auto requieren 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é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 limitarse.

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

requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 256Mi
spec.observability.metricsForwarder.deployment

Tipo: Objeto

Anulaciones que el operador de Kubernetes fusiona en la implementación del reenviador de métricas creado por el operador. Sigue la misma convención que spec.clusters[].loadBalancer.managed.deployment: un campo de metadata con labels y annotations, y un campo de spec con un objeto apps/v1/DeploymentSpec.

spec.observability.metricsForwarder.opsManager

Tipo: 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 configura este campo, debe configurar agentCredentials y projectConfigMapRef.

spec.observability.metricsForwarder.opsManager.agentCredentials.name

Tipo: string

Nombre del secreto que contiene la clave API del agente de Ops Manager con la que se autentica el reenviador de métricas.

spec.observability.metricsForwarder.opsManager.projectConfigMapRef.name

Tipo: string

Nombre del ConfigMap que contiene la configuración del proyecto de Ops Manager a la que el reenviador de métricas envía métricas.

Importante

La incrustación automática está disponible únicamente como funcionalidad de vista previa 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 aprender más, consulte Funcionalidades de vista previa.

spec.autoEmbedding

Tipo: Objeto

Configuración para Incrustación automátizada para datos de texto en tu colección.

spec.autoEmbedding.embeddingModelAPIKeySecret

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

Tipo: string

Nombre del secreto que contiene las claves de la API del modelo de incrustación que mongot debe 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 clave indexing-key y la clave de tiempo de query bajo la clave query-key.

Puede omitir embeddingModelAPIKeySecret solo si spec.autoEmbedding.providerEndpoint apunta 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.providerEndpoint

Tipo: string

URL de endpoint del modelo de incrustaciones para generar incrustaciones. El valor varía según si creas las claves desde la Interfaz de usuario de Atlas (recomendado) o directamente desde el servicio de incrustaciones (Voyage IA). Para las claves creadas a partir de:

  • Atlas Interfaz de Usuario, el valor es https://ai.mongodb.com/v1/embeddings (por defecto)

  • Voyage IA, el valor es https://api.voyageai.com/v1/embeddings

spec.featureFlags

Tipo: Objeto

Marcadores de funcionalidad para mongot. Si establece un marcador en true, el operador de Kubernetes lo renderiza en la configuración de mongot. Si omite el featureFlags objeto o un marcador individual, se aplicará el valor por defecto del esquema para ese marcador (true para enableOverloadRetrySignal).

spec.featureFlags.enableOverloadRetrySignal

Tipo: booleano

Habilita la señal de reintento de sobrecarga de mongot. Si habilita esta marca, mongot señ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 gRPC RESOURCE_EXHAUSTED. Los proxies reintentan la solicitud en otra instancia de mongot.

Si se omite, es por defecto true.

spec.version

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

El Operador de Kubernetes reporta información de estado bajo 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.

Este campo es visible en la salida de kubectl get bajo la columna PHASE.

status.message

Tipo: string

Mensaje legible con detalles sobre el estado actual, como el motivo por el que el recurso se encuentra en una fase Pending o Failed.

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 para el recurso.

status.version

Tipo: string

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

Este campo es visible en la salida de kubectl get bajo la columna VERSION.

status.resourcesNotReady

Tipo: arreglo de objetos

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

status.pvc

Tipo: arreglo de objetos

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

status.loadBalancer

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

Tipo: string

Fase actual del balanceador de carga gestionado. Los valores posibles incluyen Pending, Running, y Failed. El Operador de Kubernetes informa de esta fase independientemente del status.phase principal, para que puedas supervisar la implementación de Envoy por separado.

Este campo también es visible en la salida de kubectl get bajo la columna LOADBALANCER.

status.loadBalancer.message

Tipo: string

Mensaje legible con detalles sobre el estado del balanceador de carga gestionado.

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 son Pending, Running y Failed. La fase informa Disabled si establece spec.observability.metricsForwarder.mode en disabled.

Este campo también es visible en la salida de kubectl get bajo la columna METRICSFORWARDER.

status.metricsForwarder.message

Tipo: string

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

status.clusters

Tipo: 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[].name

Tipo: string

Nombre del clúster de nodos. Vacío en implementaciones de un solo clúster.

status.clusters[].index

Tipo: 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[].search

Tipo: string

La peor fase en los mongot StatefulSets de este clúster. Un clúster ejecuta un mongot StatefulSet para una fuente de set de réplicas, o uno por partición para una fuente particionada. Los valores pueden ser Pending, Running o Failed.

status.clusters[].searchMessage

Tipo: string

Mensaje legible por humanos con el motivo cuando status.clusters[].search no es Running.

status.clusters[].loadBalancer

Tipo: 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, Running o Failed.

status.clusters[].loadBalancerMessage

Tipo: string

Mensaje legible por humanos con el motivo cuando status.clusters[].loadBalancer no es Running.

status.clusters[].metricsForwarder

Tipo: 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, Running o Failed.

status.clusters[].metricsForwarderMessage

Tipo: string

Mensaje legible por humanos con el motivo cuando status.clusters[].metricsForwarder no es Running.

Ejemplo

$ kubectl get mdbs
NAME PHASE VERSION LOADBALANCER METRICSFORWARDER AGE
mdb-rs-ext-lb-search Running 1.70.1 Running Running 14m