Puede implementar MongoDB Search y búsqueda vectorial junto con MongoDB 8.2 o posterior usando MongoDB Controllers para el Kubernetes operador.
Ejemplo de especificación de recursos
El siguiente ejemplo muestra la configuración dentro del 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 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.
Ejemplo
1 spec: 2 source: 3 # external takes precedence over mongodbResourceRef 4 mongodbResourceRef: 5 name: mdb 6 external: 7 # hostAndPorts and shardedCluster are mutually exclusive 8 hostAndPorts: 9 - mdb-rs-external-0.example.com:27017 10 - mdb-rs-external-1.example.com:27017 11 - mdb-rs-external-2.example.com:27017 12 shardedCluster: 13 router: 14 hosts: 15 - mongos1.example.com:27017 16 - mongos2.example.com:27017 17 shards: 18 - shardName: shard-0 19 hosts: 20 - shard0-node1.example.com:27018 21 - shard0-node2.example.com:27018 22 - shardName: shard-1 23 hosts: 24 - shard1-node1.example.com:27018 25 - shard1-node2.example.com:27018 26 keyfileSecretRef: 27 name: mdb-keyfile 28 key: keyfile 29 tls: 30 # ca references a ConfigMap that contains ca.crt 31 ca: 32 name: mdbc-rs-ca 33 username: search-sync-source 34 passwordSecretRef: 35 name: mdbc-rs-search-sync-source-password 36 key: password 37 # x509 authentication (mutually exclusive with 38 # username/passwordSecretRef and source.tls) 39 x509: 40 clientCertificateSecretRef: 41 name: mongot-x509-client-cert 42 # Set only if the private key is encrypted 43 keyFilePasswordSecretRef: 44 name: mongot-x509-key-password 45 # TLS client certificate for SCRAM connections 46 # (mutually exclusive with x509): 47 # tls: 48 # clientCertificateSecretRef: 49 # name: mongot-scram-client-cert 50 # keyFilePasswordSecretRef: 51 # name: mongot-scram-key-password 52 security: 53 tls: 54 certificateKeySecretRef: 55 name: mdbs-tls-secret 56 certsSecretPrefix: my-prefix 57 # Set only if the private key is encrypted 58 keyFilePasswordSecretRef: 59 name: mdbs-tls-key-password 60 version: "1.70.1" 61 autoEmbedding: 62 embeddingModelAPIKeySecret: 63 name: embedding-model-api-query-key 64 providerEndpoint: https://ai.mongodb.com/v1/embeddings 65 featureFlags: 66 enableOverloadRetrySignal: true 67 logLevel: INFO 68 observability: 69 prometheus: 70 mode: enabled 71 port: 9946 72 metricsForwarder: 73 mode: auto 74 resourceRequirements: 75 requests: 76 cpu: 100m 77 memory: 128Mi 78 limits: 79 cpu: 250m 80 memory: 256Mi 81 deployment: 82 spec: 83 template: 84 spec: 85 nodeSelector: 86 kubernetes.io/os: linux 87 opsManager: 88 agentCredentials: 89 name: om-agent-api-key 90 projectConfigMapRef: 91 name: om-project-config 92 clusters: 93 - name: cluster-1 94 index: 0 95 replicas: 2 96 loadBalancer: 97 # Option 1: Operator-managed Envoy load balancer 98 managed: 99 externalHostname: "{shardName}.search.apps.example.com" 100 routerHostname: "search-router.apps.example.com:27028" 101 replicas: 2 102 resourceRequirements: 103 requests: 104 cpu: "100m" 105 memory: 128Mi 106 limits: 107 cpu: "500m" 108 memory: 512Mi 109 deployment: 110 spec: 111 template: 112 spec: 113 nodeSelector: 114 kubernetes.io/os: linux 115 retryPolicy: 116 numRetries: 2 117 perTryTimeout: "60s" 118 minMongotReadyReplicas: 1 119 # Option 2: User-provided (BYO) load balancer 120 # (mutually exclusive with managed) 121 unmanaged: 122 endpoint: "{shardName}-search-lb.corp.example.com:443" 123 resourceRequirements: 124 limits: 125 cpu: "3" 126 memory: 5Gi 127 requests: 128 cpu: "2" 129 memory: 4Gi 130 persistence: 131 single: 132 storage: 16G 133 storageClass: standard 134 statefulSet: 135 spec: 136 template: 137 spec: 138 nodeSelector: 139 kubernetes.io/os: linux 140 jvmFlags: 141 - -Xms2g 142 - -Xmx2g 143 advancedMongotConfigs: 144 someAdvancedSetting: value 145 syncSourceSelector: 146 matchTagSets: 147 - region: us-east-1 148 workload: search 149 - {} 150 shardOverrides: 151 - shardNames: 152 - shard-0 153 replicas: 3 154 resourceRequirements: 155 requests: 156 cpu: "4" 157 memory: 8Gi 158 persistence: 159 single: 160 storage: 32G 161 jvmFlags: 162 - -Xms4g 163 - -Xmx4g 164 statefulSet: 165 spec: 166 template: 167 spec: 168 nodeSelector: 169 disktype: ssd
Configuraciones requeridas
Esta sección describe la configuración requerida para implementar el recurso MongoDB Search y búsqueda vectorial. Si defines solo la configuración requerida en la Definición de recurso Personalizada (CRD), los MongoDB Controllers para Kubernetes Operator usarán los valores por defecto para todas las configuraciones opcionales al configurar MongoDBSearch.
apiVersionTipo: string
Versión del esquema de recursos de MongoDB Kubernetes. Establecer el valor en
mongodb.com/v1.
kindTipo: string
Tipo de recurso de MongoDB en Kubernetes que se va a crear. Configura esto como MongoDBSearch.
metadata.namespaceTipo: string
Espacio de nombres en el que crear el recurso MongoDBSearch. Para aprovechar la configuración automática de MongoDBSearch y los recursos
MongoDBoMongoDBCommunity, cree el recurso MongoDBSearch en el mismo espacio de nombres que el recursoMongoDBoMongoDBCommunity.
metadata.nameTipo: string
Identificador único del recurso MongoDBSearch. El nombre debe ser un nombre de subdominio DNS válido de Kubernetes. El nombre debe ser corto. 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: 63 caracteres para etiquetas y 253 caracteres para nombres de subdominios.spec.clustersTipo: arreglo de objetos
Configuración de despliegue 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 un despliegue de un solo clúster o una entrada para cada clúster de Kubernetes que ejecute
mongotpods en un despliegue de varios clústeres. Paranameindexconsultar la referencia completa del campo,incluyendo y, véase spec.clusters.
Configuraciones opcionales
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.
Configuraciones para la configuración de la fuente de datos
spec.sourceTipo: Objeto
Configuración que describe la fuente de MongoDB para
mongot. La fuente puede ser un set de réplicas o un clúster particionado. Esta configuración es obligatoria si:MongoDBes externoMongoDBtiene un nombre diferente de MongoDBSearch
El recurso MongoDBSearch siempre debe estar conectado a una implementación de MongoDB. Si realizó la implementación usando el operador de Kubernetes con
MongoDBoMongoDBCommunityCRD, y sispec.sourceestá vacío, el operador de Kubernetes utiliza lo siguiente según elmetadata.namepara buscar la base de datos en Kubernetes:Encuentra
MongoDBoMongoDBCommunityrecursos con el mismo nombre que se establece parametadata.nameen MongoDBSearch, en el mismo namespace.Encuentra la contraseña secreta para el usuario
mongota 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.nameTipo: string
Nombre del recurso
MongoDBoMongoDBCommunitypara asociar con este recurso de MongoDB Search y búsqueda vectorial. El operador de Kubernetes admite tanto los sets de réplicas como los clústeres. No puede tener más de un recurso MongoDBSearch que haga referencia al mismo recursoMongoDBoMongoDBCommunity. Si especifica un nombre diferente, debe señalar explícitamente elMongoDBoMongoDBCommunitydonde desea habilitar MongoDB Search y la búsqueda vectorial.Si hace referencia a un recurso
MongoDBde clúster particionado, el operador de Kubernetes autodetecta la topología de partición (nombres de partición, miembros del conjunto de réplicas, enrutadoresmongos) y crea automáticamente conjuntos de estadomongotpor partición. No es necesario realizar ninguna configuración externa adicional.Este campo solo se debe utilizar si el recurso de
MongoDBoMongoDBCommunityestá implementado en el mismo clúster de Kubernetes y en el mismo espacio de nombres que el recurso de MongoDBSearch. Si configura este campo, el Operador de Kubernetes automáticamente:Establece las cadenas de conexión adecuadas a la base de datos.
Reconfigura las implementaciones de la base de datos MongoDB estableciendo los parámetros necesarios para habilitar la funcionalidad de búsqueda y configurando las direcciones de los pods de búsqueda.
Si su base de datos está desplegada fuera de Kubernetes o se encuentra en un espacio de nombres diferente, utilice
spec.source.externalpara configurar la conexión a la base de datos. Si configura ambos campos,spec.source.externaltendrá prioridad.Si se omite, el Operador de Kubernetes busca un recurso
MongoDBoMongoDBCommunitycon el mismo nombre que este recurso MongoDBSearch.
spec.source.mongodbResourceRef.namespaceTipo: string
Espacio de nombres del recurso
MongoDBoMongoDBCommunityal que hace referenciaspec.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, utilicespec.source.external.
Ajuste para configurar usuarios mongot
spec.source.usernameTipo: string
Nombre de usuario para usar para autenticar
mongotconmongod. El usuario especificado debe tener el rol desearchCoordinator. Si se omite, el Operador Kubernetes asume que el nombre de usuario essearch-sync-source.
spec.source.passwordSecretRef.nameTipo: string
Nombre del secreto que contiene la contraseña que
mongotdebe usar para autenticarse conmongod. Si se omite, se usa por defecto<MongoDBSearch.metadata.name>-<username>-password, donde<username>es el valor despec.source.username. Para el nombre de usuario predeterminadosearch-sync-source, esto da como resultado<MongoDBSearch.metadata.name>-search-sync-source-password.
spec.source.passwordSecretRef.keyTipo: string
Clave bajo la cual se almacena el valor de la contraseña en el secreto. Si se omite, el valor por defecto es
password.
Configuración para la autenticación x509
spec.source.x509Tipo: Objeto
Configura la autenticación mediante certificado de cliente x509 para la conexión de sincronización
mongot. Si configuras este campo,mongotse autenticará en MongoDB usando x509 en lugar de nombre de usuario y contraseña.Este campo es mutuamente excluyente con
spec.source.passwordSecretRef,spec.source.usernameyspec.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.clientCertificateSecretRefTipo: Objeto
Secreto que contiene el certificado de cliente x509 y la clave para la autenticación en la fuente de sincronización de MongoDB. El secreto debe contener las siguientes claves:
tls.crt— Certificado de clientetls.key— 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.Ejemplo
spec: source: x509: clientCertificateSecretRef: name: mongot-x509-client-cert
spec.source.x509.keyFilePasswordSecretRefTipo: 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 clavekeyFilePassword. Omita este campo si la clave privada no está cifrada.
Configuración para certificados de cliente TLS con autenticación SCRAM
spec.source.tlsTipo: Objeto
Configura un certificado de cliente TLS para la conexión de origen de sincronización
mongotsi utiliza la autenticación SCRAM (nombre de usuario y contraseña). Si configura este campo,mongotpresenta el certificado de cliente durante el protocolo de enlace TLS con la implementación de origen de MongoDB (transporte TLS mutuo).mongotse 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 conspec.source.x509. Si desea que el certificado del cliente sirva como credencial de autenticación, utilicespec.source.x509en su lugar.
spec.source.tls.clientCertificateSecretRefTipo: Objeto
Secreto que contiene el certificado y la clave de cliente TLS que
mongotpresenta 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 clientetls.key— Clave privada
Debe especificar este campo si configura
spec.source.tls.
spec.source.tls.keyFilePasswordSecretRefTipo: 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 clavekeyFilePassword. Omita este campo si la clave privada no está cifrada.
Configuraciones para conectar con MongoDB externo
Las siguientes configuraciones solo son necesarias para configurar una conexión a una implementación externa de MongoDB.
spec.source.externalTipo: Objeto
Configuración que describe la fuente de datos externa. Este objeto describe la configuración para que los recursos MongoDB Search y Vector Search se conecten a una instancia externa de MongoDB. Especifique esta configuración solo si desea conectarse a una instancia externa de MongoDB que no se haya implementado con el Operador de Kubernetes. Si especifica esta configuración, tendrá prioridad sobre
spec.source.mongodbResourceRef. Si utilizó el Operador de Kubernetes para instalar MongoDB en el mismo clúster, esta configuración es opcional.
spec.source.external.keyfileSecretRefTipo: Objeto
Secreto que contiene el archivo de clave
mongodquemongotutiliza para conectarse a la implementación externa de MongoDB.
spec.source.external.keyfileSecretRef.nameTipo: string
Nombre del secreto que contiene el archivo de clave. Debe especificar este campo si establece
spec.source.external.keyfileSecretRef.
spec.source.external.keyfileSecretRef.keyTipo: string
Clave bajo la cual se almacena el archivo de clave en el Secreto. Este campo es opcional.
Configuración para conectar a un set de réplicas externo
spec.source.external.hostAndPortsTipo: arreglo de cadenas
Lista de nombres de host y puertos del set de réplicas externas. Esta es una lista de nodos iniciales de host para el set de réplicas de MongoDB. El
mongotse conecta a la base de datos en modo de set de réplicas y obtiene la lista de todos los demás nodos utilizandodb.hello().Este campo es mutuamente excluyente con
spec.source.external.shardedCluster. UsehostAndPortspara fuentes de sets de réplicas yshardedClusterpara fuentes de clústeres.Ejemplo
hostAndPorts: - mdbc-rs-0.my-external-domain.example.com:27017 - mdbc-rs-1.my-external-domain.example.com:27017 - mdbc-rs-2.my-external-domain.example.com:27017
spec.source.external.tlsTipo: Objeto
Configuraciones de TLS que
mongotdebe usar al conectarse a la base de datos externa MongoDB.
spec.source.external.tls.ca.nameTipo: string
Nombre del ConfigMap que contiene la cadena de confianza de las autoridades de certificación que emitieron el certificado TLS utilizado por los nodos
mongod.Ejemplo
spec: source: external: tls: ca: name: trusted-ca Debe especificar el certificado (o la cadena de certificados) bajo la clave
ca.crten este ConfigMap.Ejemplo
kind: ConfigMap apiVersion: v1 metadata: name: trusted-ca data: ca.crt: | -----BEGIN CERTIFICATE----- MIIDBTCCAe2gAwIBAgIIH3EOUAGAsx0wDQYJKoZIhvcNAQELBQAwFTETMBEGA1UE [...] U/4rN8Ias/FONYFRtGfs9uXHmo2MP04BF+9ED2dlbNDUbat+6XCozLJj98nI4VEi qaV3JrVFHTgN -----END CERTIFICATE-----
Configuraciones para conectar a un clúster fragmentado externo
Los siguientes ajustes son necesarios solo para configurar una conexión con un clúster segmentado externo de MongoDB. Extienden la configuración existente de spec.source.external.
Nota
spec.source.external.hostAndPorts (para sets de réplicas) y spec.source.external.shardedCluster son mutuamente excluyentes. Especifica solo uno de ellos.
spec.source.external.shardedClusterTipo: Objeto
Declara un clúster MongoDB particionado externo como fuente de datos para
mongot. Contiene la configuración para los routersmongosy los miembros del conjunto de réplicas por partición.Utilízalo sólo si el clúster compartido de MongoDB está implementado fuera de Kubernetes y no es gestionado por el Operador de Kubernetes. Para los clústeres fragmentados gestionados por operadores implementados con el
MongoDBCRD, utilizaspec.source.mongodbResourceRefen su lugar. El operador de Kubernetes detecta automáticamente la topología de partición.Ejemplo
spec: source: external: shardedCluster: router: hosts: - "mongos1.external:27017" - "mongos2.external:27017" shards: - shardName: "shard-0" hosts: - "shard0-node1.external:27018" - "shard0-node2.external:27018" - shardName: "shard-1" hosts: - "shard1-node1.external:27018" - "shard1-node2.external:27018"
spec.source.external.shardedCluster.routerTipo: Objeto
Configuración para las instancias
mongos(router) del clúster externo.
spec.source.external.shardedCluster.router.hostsTipo: arreglo de cadenas
Lista de extremos para las instancias de router
mongosen formatohost:port. Todas lasmongotinstancias se conectan a estos routers. Especifique al menos una entrada.Ejemplo
router: hosts: - "mongos1.external:27017" - "mongos2.external:27017"
spec.source.external.shardedCluster.shardsTipo: arreglo de objetos
Lista de todas las particiones del clúster externo de MongoDB. Cada entrada describe el conjunto de réplicas de una partición. El Kubernetes Operator crea un
mongotStatefulSet para cada partición, donde cada StatefulSet contiene el número de pods especificado enspec.clusters[].replicas. Especifica al menos una entrada de partición.
spec.source.external.shardedCluster.shards[*].shardNameTipo: string
El nombre lógico de la partición. El Operador de Kubernetes utiliza este nombre para la nomenclatura de recursos de Kubernetes (StatefulSets, Servicios, Secretos). El valor puede ser diferente del nombre de la partición de MongoDB.
Restricciones de denominación:
Debe ser único en todas las particiones.
Debe ajustarse a las reglas de nombres de etiquetas DNS 1123de Kubernetes (RFC), que permiten caracteres alfanuméricos en minúscula y guiones
-(), y requieren que el nombre comience y termine con un carácter 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, yshardNameen 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. MantengashardNamelo suficientemente corto para cumplir con estos límites.
Ejemplo
shards: - shardName: "shard-0" hosts: - "shard0-node1.external:27018"
spec.source.external.shardedCluster.shards[*].hostsTipo: arreglo de cadenas
Lista de endpoints de los miembros del conjunto de réplicas
mongodpara esta partición en el formatohost:port. Las instanciasmongotreplican los datos desde estos hosts. Especifique al menos una entrada.Cada set de réplicas (partición) tiene su propio grupo de instancias
mongot, que obtiene los datos solo de ese set de réplicas. Las diferentes particiones nunca comparten las mismas instancias demongot.Ejemplo
shards: - shardName: "shard-0" hosts: - "shard0-node1.external:27018" - "shard0-node2.external:27018" - "shard0-node3.external:27018"
Configuración para la implementación de clústeres
Las siguientes configuraciones describen cada entrada del array spec.clusters requerido.
spec.clustersTipo: arreglo de objetos
Configuración de despliegue por clúster de Kubernetes para MongoDBSearch. Este campo es obligatorio y debe contener al menos una entrada y como máximo cero 50 entradas. Todas las configuraciones de tamaño
replicasloadBalancerresourceRequirementsypersistenceubicación,jvmFlagscomo,,,,statefulSety, se encuentran dentro de unaclustersentrada. Estas configuraciones no tienen equivalentes de nivel superior.Para una implementación de clúster único, especifique una entrada. Puede omitir
nameyindex.Ejemplo
spec: clusters: - {} Para una implementación de clústeres múltiples, especifique una entrada para cada clúster de Kubernetes que ejecute
mongotpods. Si especifica más de una entrada, se aplican las siguientes reglas:nameEs obligatorio en cada entrada y debe ser único.indexEs obligatorio en cada entrada y debe ser único.La fuente de MongoDB debe ser externa (
spec.source.external). Las implementaciones de 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[].nameTipo: string
Nombre del clúster de Kubernetes para esta entrada, con una longitud máxima de 253 caracteres. Puede omitir este campo para una implementación de clúster único.
Si
spec.clusterscontiene más de una entrada,namees obligatorio, debe ser único entre las entradas y no puede cambiar después de crear el recurso.
spec.clusters[].indexTipo: entero
Identificador entero estable del clúster de Kubernetes para esta entrada. El valor debe estar entre
0y999, y debe ser único entre todas las entradas. Sispec.clusterscontiene más de una entrada, se requiereindexen 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}-svcpara Services y{name}-search-{index}-configpara 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
indexde una entrada existente, ya que el índice forma parte de los nombres de los recursos. Modificarlo provoca que el operador de Kubernetes cree nuevos recursos bajo el nuevo índice y deje 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 ejecuta su propia instancia de Kubernetes Operator, establezca explícitamenteindexcon 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.
Dimensionamiento y almacenamiento
spec.clusters[].replicasTipo: entero
Número de
mongotpods a desplegar en este clúster de Kubernetes. Para un origen de conjunto de réplicas, este es el número total demongotpods. Para un origen de clúster fragmentado, este es el número demongotpods por fragmento.Si
spec.clusters[].replicases mayor que1, debe configurar tambiénspec.clusters[].loadBalancerpara enrutar el tráfico entremongody las múltiples instancias demongot.Si se establece
spec.clusters[].replicasen0, el operador de Kubernetes desactiva el desplieguemongoten 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.Ejemplo
spec: clusters: - replicas: 2
spec.clusters[].resourceRequirementsTipo: core/v1/ResourceRequirements
CPU y memoria que el contenedor
mongodb-searchpuede solicitar y tener limitados. Recomendamos utilizar este campo para personalizar las asignaciones de recursos en lugar de sobrescribirlo conspec.clusters[].statefulSet.Si no se modifica el tamaño del montón de la JVM en
spec.clusters[].jvmFlags, el operador de Kubernetes establece el tamaño predeterminado del montón (-Xmx) en el 50% de la solicitud de memoria del contenedormongot. Ajustespec.clusters[].resourceRequirementssegún corresponda para controlar tanto los recursos del pod como el tamaño del montón de la JVM.Si se omite, el Operador de Kubernetes utiliza los siguientes valores por defecto:
requests: cpu: 2 memory: 4Gi
spec.clusters[].resourceRequirements.limitsTipo: Objeto
Límite máximo de recursos (CPU y memoria) que puede consumir el contenedor
mongodb-search. Por defecto, no se establecen límites. Si se omite, el pod no tiene restricciones y, por lo tanto, podría usar todos los recursos del nodo. Recomendamos establecer límites en función de la carga de trabajo.
spec.clusters[].resourceRequirements.requestsTipo: Objeto
Cantidad de CPU y memoria solicitada para el contenedor
mongodb-search. Si especifica solo uno decpuomemory, 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.singleTipo: Objeto
Configuración de almacenamiento para el volumen persistente de MongoDB Search y búsqueda vectorial donde se almacenan los índices de MongoDB Search y búsqueda vectorial. Cada instancia de búsqueda (pod) tiene su propio almacenamiento independiente para mantener índices, que no se comparte con la base de datos MongoDB. Solo los metadatos del índice (definiciones) se almacenan en la propia base de datos.
EscalarTipo de datoDescripciónlabelSelectorstring
Etiqueta utilizada para vincular volúmenes montados a directorios.
storagestring
Tamaño mínimo del volumen persistente a montar. 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 conjunto de 60 réplicas requiere gigabytes de espacio de almacenamiento, establezca este valor
60Gen.storageClassstring
Tipo de almacenamiento especificado en una solicitud de volumen persistente. Puede crear este tipo de almacenamiento como un objeto StorageClass antes de usarlo en esta especificación de objeto.
Asegúrate de establecer el StorageClass
reclaimPolicycomo Retain. Esto garantiza que los datos se conserven cuando se elimine una Solicitud de Volumen Persistente.MongoDBSearch solo admite el
singlemodo de persistencia, que utiliza un único volumen para todos los datos. Aunque el esquema CRD también contiene unspec.clusters[].persistence.multiplecampo, el operador de Kubernetes no lo aplica. Si se omite,persistenceel operador de Kubernetesspec.clusters[].persistence.single.storageestablece16Gen.
Equilibrio de carga
spec.clusters[].loadBalancerTipo: Objeto
Configuración para el balanceo de carga L7 entre
mongod(umongos) ymongot. Este campo es obligatorio sispec.clusters[].replicases mayor que1. Sispec.clusters[].replicases1, este campo es opcional. Puedes configurar un balanceador de carga incluso para una sola instanciamongotpara prepararte para un escalado posterior.Se debe establecer exactamente solo uno de
managedounmanaged.Todas las entradas en
spec.clustersdeben coincidir en el modo de balanceador de carga: o bien todas las entradas establecenloadBalancer.managed, todas establecenloadBalancer.unmanaged, o ninguna estableceloadBalancer. El operador de Kubernetes rechaza los modos mixtos. Las implementaciones de clústeres múltiples solo admiten el modo administrado.El equilibrador de carga afecta el tipo de certificados TLS que ven los clientes de
mongody los nombres de host que deben contener esos certificados:Sin un balanceador de carga,
mongodse conecta directamente amongot. El certificado TLS presentado amongodes el propio certificado demongot. Si el clúster de MongoDB está fuera de Kubernetes, el serviciomongotestá expuesto en un dominio externo. Debe incluir ese dominio externo en el campo SAN (Nombre Alternativo del Sujeto) del certificado TLSmongot.Con un balanceador de carga administrado
spec.clusters[].loadBalancer.managed(), el proxy Envoy es el único componente que se conecta directamentemongota. El proxy Envoy llega amongota través de los FQDN de servicio internos:set de réplicas:
<name>-search-<clusterIndex>-svc.<ns>.svc.cluster.localclúster particionado:
<name>-search-<clusterIndex>-<shard>-svc.<ns>.svc.cluster.local
Recomendamos incluir estos FQDN de servicio en el
mongotcampo SAN del certificado TLS. El proxy Envoy administrado por el operador actualmente valida elmongotcertificado solo con la autoridad de certificación y no compara los nombres de host SAN. Losmongodprocesos externos ven el certificado TLS del proxy Envoy, por lo que debe incluir los dominios externos en el campo SAN del certificado Envoy, no en elmongotcertificado.
Tip
Permite un balanceador de carga administrado incluso si inicialmente implementas un solo pod
mongot. Con el balanceador de carga en funcionamiento, los dominios en tus certificados TLS se mantienen estables si más adelante escalasspec.clusters[].replicasporque el balanceador de carga ya está presente entremongodymongot.
spec.clusters[].loadBalancer.managedTipo: Objeto
Configura un Envoy balanceador de carga gestionado por el operador. El Operador Kubernetes despliega y gestiona el proxy Envoy con un enrutamiento correcto, mTLS y fijación de flujos HTTP/2+ gRPC. Configura este campo a un objeto vacío (
{}) para usar los valores por defecto.Este campo es excluyente con
spec.clusters[].loadBalancer.unmanaged.Para fuentes de clúster fragmentadas, también debe configurar
spec.security.tlssi utiliza un balanceador de carga administrado. El proxy Envoy enruta el tráfico al fragmento correcto mediante SNI, que requiere TLS.Ejemplo
spec: clusters: - loadBalancer: managed: {}
spec.clusters[].loadBalancer.managed.externalHostnameTipo: string
Nombre de host que el proxy Envoy espera para la coincidencia SNI en las solicitudes entrantes. El Operador de Kubernetes utiliza este valor para configurar reglas de enrutamiento que coincidan con el campo TLS SNI de las conexiones entrantes
mongod. El certificado de servidor Envoy TLS debe incluir este nombre de host en su campo SAN (Nombre Alternativo del Sujeto).Para 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. Puede usar un certificado comodín para cubrir todos los fragmentos con un solo certificado y evitar volver a emitirlo cuando se agreguen fragmentos. Para fuentes de conjunto de réplicas, no use 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.
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.routerHostnameTipo: string
Punto final que los enrutadores
mongosutilizan para llegar a las instanciasmongotde este clúster a través del balanceador de carga Envoy administrado, en el formatohost: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 paramongos.En implementaciones con múltiples clústeres, cada entrada de clúster suele usar un valor distinto. Sin embargo, el operador de Kubernetes permite compartir un mismo valor entre clústeres, por ejemplo, si un proxy de conmutación por error que abarca varias zonas de disponibilidad actúa como proxy de Envoy para varios clústeres.
Ejemplo
spec: clusters: - loadBalancer: managed: externalHostname: "{shardName}.search.example.com" routerHostname: "search-router.example.com:27028"
spec.clusters[].loadBalancer.managed.replicasTipo: entero
Número de pods proxy de Envoy que se implementarán en este clúster de Kubernetes. El valor debe ser
1o mayor. Si se omite, se utiliza1por defecto.
spec.clusters[].loadBalancer.managed.resourceRequirementsTipo: core/v1/ResourceRequirements
CPU y memoria que el contenedor Envoy puede solicitar y limitar. Si especifica esta configuración, el operador de Kubernetes reemplaza por completo los valores por defecto.
Si se omite, el Operador de Kubernetes utiliza los siguientes valores por defecto:
requests: cpu: 100m memory: 128Mi limits: cpu: 500m memory: 512Mi Ejemplo
spec: clusters: - loadBalancer: managed: resourceRequirements: requests: cpu: "200m" memory: "256Mi" limits: cpu: "1" memory: "1Gi"
spec.clusters[].loadBalancer.managed.deploymentTipo: Objeto
Anulaciones que el Operador de Kubernetes fusiona en la Implementación de Envoy creada por el operador. Sigue la misma convención que
spec.statefulSeten recursos de MongoDB. Si se omite, el Operador de Kubernetes utiliza los valores por defecto para el Despliegue de Envoy.Este objeto contiene dos campos:
metadata— contiene los camposlabelsyannotationsque el Operador de Kubernetes fusiona en los metadatos de la implementación de Envoy.spec— un objeto apps/v1/DeploymentSpec. El operador de Kubernetes fusiona estos valores anulados en la especificación de implementación de Envoy.
Ejemplo
spec: clusters: - loadBalancer: managed: deployment: spec: template: spec: nodeSelector: kubernetes.io/os: linux
spec.clusters[].loadBalancer.managed.retryPolicyTipo: Objeto
Comportamiento de reintento que el proxy Envoy aplica a flujos gRPC individuales a las instancias
mongotascendentes. El proxy Envoy envía cada intento de reintento a un hostmongotdiferente al del intento fallido.Si omite este campo, el proxy Envoy reintenta con los valores predeterminados:
2reintenta con un tiempo de espera por intento de60s.Ejemplo
spec: clusters: - loadBalancer: managed: retryPolicy: numRetries: 2 perTryTimeout: "60s"
spec.clusters[].loadBalancer.managed.retryPolicy.numRetriesTipo: entero
Número máximo de reintentos por solicitud. El valor debe ser
1o mayor. Si se omite, se utiliza por defecto2, lo que permite un total de tres intentos por solicitud.
spec.clusters[].loadBalancer.managed.retryPolicy.perTryTimeoutTipo: 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.minMongotReadyReplicasTipo: entero
Número mínimo de réplicas
mongotlistas que un grupomongot(por ejemplo, lasmongotinstancias 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 grupomongoten buen estado y marca las solicitudes con el encabezadorouted_from_another_shard. Estas solicitudes devuelven resultados vacíos en lugar de errores.El valor debe ser
1o mayor. Si se omite, se toma por defecto1.
spec.clusters[].loadBalancer.unmanagedTipo: Objeto
Configura un balanceador de carga L7 proporcionado por el usuario (Bring Your Own). Tú eres responsable de implementar y configurar el balanceador de carga externamente.
Este campo es mutuamente excluyente con
spec.clusters[].loadBalancer.managed. Las implementaciones de clústeres múltiples no admiten balanceadores de carga no administrados.
spec.clusters[].loadBalancer.unmanaged.endpointTipo: string
El punto final del balanceador de carga BYO en formato
host:port. Debe especificar este campo si configuraspec.clusters[].loadBalancer.unmanaged.Si el operador de Kubernetes gestiona el despliegue de MongoDB (usando
spec.source.mongodbResourceRef), el operador de Kubernetes escribe este valor en la configuraciónmongodcomomongotHostysearchIndexManagementHostAndPort. Si MongoDB es externo, configure usted mismo los parámetrosmongodusando el mismo valor.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}.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"
Anulaciones por fragmento
spec.clusters[].shardOverridesTipo: arreglo de objetos
Anula la configuración que dimensiona fragmentos específicos dentro de esta entrada de clúster de manera diferente a la configuración predeterminada del clúster. Utilice este campo para asignar a fragmentos individuales más o menos réplicas
mongot, recursos o almacenamiento que al resto 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 enspec.source.external.shardedCluster.shards[*].shardName, y puede sobrescribir cada fragmento como máximo una vez por entrada de clúster.Si se establecen
replicas,resourceRequirements,persistenceojvmFlagsen una anulación, estos reemplazan el valor del clúster para los fragmentos con nombre. El operador de Kubernetes fusiona profundamentestatefulSetcon el valor del clúster. Los campos que no se establecen 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[*].shardNamesTipo: arreglo de cadenas
Nombres de los fragmentos dentro de esta entrada de clúster a los que se aplica la anulación. Este campo es obligatorio y debe contener al menos una entrada.
spec.clusters[].shardOverrides[*].replicasTipo: entero
Reemplaza el recuento de réplicas
mongotdel clúster para los fragmentos nombrados. Un valor de0pone fuera de línea lasmongotinstancias para estos fragmentos.
spec.clusters[].shardOverrides[*].resourceRequirementsTipo: core/v1/ResourceRequirements
Sustituye las solicitudes y los límites de CPU y memoria del clúster para los fragmentos con nombre.
spec.clusters[].shardOverrides[*].persistenceTipo: Objeto
Reemplaza la configuración de volumen persistente del clúster para los fragmentos con nombre. Utiliza el mismo esquema que
spec.clusters[].persistence.
spec.clusters[].shardOverrides[*].statefulSetTipo: Objeto
Anulaciones de StatefulSet para los fragmentos con nombre. A diferencia de los otros campos de anulación, el operador de Kubernetes fusiona profundamente este valor en el valor
spec.clusters[].statefulSetdel clúster en lugar de reemplazarlo.
spec.clusters[].shardOverrides[*].jvmFlagsTipo: arreglo de cadenas
Reemplaza el
spec.clusters[].jvmFlagsdel clúster para los fragmentos con nombre si lo configuras con una lista no vacía. Las reglas de formato paraspec.clusters[].jvmFlagstambién se aplican a este campo.
Sincronizar selección de fuente
spec.clusters[].syncSourceSelectorTipo: Objeto
Selecciona de qué
mongodnodos lasmongotinstancias en esta entrada de clúster sincronizan los datos.
spec.clusters[].syncSourceSelector.matchTagSetsTipo: arreglo de objetos
Lista ordenada de conjuntos de etiquetas de conjuntos de réplicas que selecciona los nodos de origen de sincronización
mongodsegún sus etiquetas de conjunto de réplicas. El operador de Kubernetes pasa la lista a la configuraciónmongot.mongotsincroniza 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.Ejemplo
spec: clusters: - syncSourceSelector: matchTagSets: - region: us-east-1 workload: search - {}
JVM Flags
spec.clusters[].jvmFlagsTipo: arreglo de cadenas
Señales de JVM pasadas al proceso
mongot. El operador de Kubernetes incluye las banderas sin modificaciones en el comando de iniciomongotusando--jvm-flags "<all flags space-separated>".Cada bandera 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 banderas que no cumplen con estas reglas.Si no especifica
-Xmso-Xmxen este campo, el Operador de Kubernetes calcula automáticamente el tamaño del heap configurando ambos en la mitad despec.clusters[].resourceRequirements.requests.memory. Si no se especifican los requisitos de recursos, el Operador de Kubernetes utiliza un valor predeterminado de 4Gi de solicitud de memoria, lo que genera aproximadamente-Xmx2048m -Xms2048m.Si proporciona sus propios valores de
-Xmso-Xmx, el operador de Kubernetes los utiliza y no los anula. El Operador de Kubernetes siempre añade los parámetros que usted proporciona después de los parámetros calculados por el operador.Para más información, consulte Dimensionamiento del hardware para mongot.
Ejemplo
spec: clusters: - jvmFlags: - -Xms2g - -Xmx2g
Anulaciones de StatefulSet
spec.clusters[].statefulSetTipo: Objeto
Anulaciones para el StatefulSet que el Operador de Kubernetes crea para desplegar
mongotpods. 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 camposlabelsyannotationsque el operador de Kubernetes fusiona en los metadatos de StatefulSet.spec— un objeto apps/v1/StatefulSetSpec. El operador de Kubernetes fusiona estas anulaciones en la especificación StatefulSet.
Nota
No establezcas requisitos de recursos o configuraciones de persistencia usando
spec.clusters[].statefulSet. En su lugar, utilice los camposspec.clusters[].resourceRequirementsyspec.clusters[].persistencerespectivamente.
mongot Configuración avanzada
spec.clusters[].advancedMongotConfigsTipo: Objeto
Configuración avanzada
mongotpara esta entrada de clúster. El operador de Kubernetes reproduce el valor tal cual bajo la claveadvancedConfigsdel archivo de configuraciónmongot, sin leerlo ni modificarlo. Este campo no afecta la configuración que el operador de Kubernetes genera en otras partes de la configuraciónmongot.Utilice este campo únicamente para configuraciones
mongotque el recurso MongoDBSearch no expone como campos de primera clase.
Ajustes para la Seguridad
spec.securityTipo: Objeto
Configuración de seguridad del servidor de escucha
mongot.
spec.security.tlsTipo: Objeto
Configuración TLS
mongotpara. Si se omite,mongotno utiliza TLS para las 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.tlsen esta configuración.
spec.security.tls.certificateKeySecretRef.nameTipo: string
Obsoleto desde la versión 1.8.0. : Utiliza
spec.security.tls.certsSecretPrefixen su lugar.Nombre del secreto TLS en el mismo namespace que contiene la llave privada (
tls.key) y el certificado (tls.crt). El secreto puede ser de tipokubernetes.io/tls(emitido por cert-manager) o puede crearse manualmente.El Operador de Kubernetes sigue admitiendo este campo para las implementaciones de conjuntos de réplicas por motivos de compatibilidad con versiones anteriores. Sin embargo:
Para implementaciones de clúster segmentado, el operador de Kubernetes rechaza este campo durante la validación. Utilice
spec.security.tls.certsSecretPrefixen su lugar, porque una referencia individual de secreto no puede cubrir certificados por partición.Si especificas tanto
certificateKeySecretRefcomocertsSecretPrefix,certificateKeySecretReftiene prioridad para los despliegues en conjuntos de réplicas.
Para nuevas implementaciones, usa
spec.security.tls.certsSecretPrefixincluso para set de réplicas.
spec.security.tls.certsSecretPrefixTipo: string
Prefijo que el Operador de Kubernetes utiliza para derivar los nombres de los secretos TLS según la convención de nomenclatura. Si configuras este campo, el operador de Kubernetes busca secretos que siguen estos patrones en lugar de requerir referencias explícitas de secretos para cada componente:
ComponentePatrón de nombre secretoCertificado del set de réplicas
mongotservidor{certsSecretPrefix}-{name}-search-certCertificado
mongotfragmentado (por clúster y fragmento){certsSecretPrefix}-{name}-search-{clusterIndex}-{shardName}-certCertificado de servidor de balanceador de carga administrado (por clúster, todas las topologías)
{certsSecretPrefix}-{name}-search-lb-{clusterIndex}-certCertificado de cliente de balanceador de carga gestionado
{certsSecretPrefix}-{name}-search-lb-{clusterIndex}-client-certDónde:
{name}esmetadata.namedel recurso MongoDBSearch{clusterIndex}es el valor despec.clusters[].index(0para una implementación de clúster único que no establece un índice){shardName}es el valor quespec.source.external.shardedCluster.shards[*].shardName
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
externalHostnamehastarouterHostname.El operador de Kubernetes resuelve el nombre secreto del certificado del servidor
mongoten el siguiente orden:Si establece
spec.security.tls.certificateKeySecretRef.name, el operador de Kubernetes utiliza ese nombre.Si establece
certsSecretPrefix, el operador de Kubernetes utiliza los patrones de nomenclatura de la tabla anterior.Si no configura ninguno de los dos campos, el operador de Kubernetes utiliza el nombre predeterminado
{name}-search-certpara las implementaciones de conjuntos de réplicas, o el patrón predeterminado por fragmento{name}-search-{clusterIndex}-{shardName}-certpara 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}-certpara el certificado del servidor y{name}-search-lb-{clusterIndex}-client-certpara el certificado del cliente.Nota
Para implementaciones de clústeres fragmentados, el operador de Kubernetes rechaza
certificateKeySecretRefporque una única referencia secreta no puede cubrir los certificados por fragmento. UtilicecertsSecretPrefixo no configure ninguno de los campos y cree secretos que sigan el patrón predeterminado por fragmento y los secretos de certificado del balanceador de carga con nombre predeterminado.Ejemplo
spec: security: tls: certsSecretPrefix: my-prefix
spec.security.tls.keyFilePasswordSecretRefTipo: 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.
Configuraciones para registros
spec.logLevelTipo: string
Nivel de verbosidad de los registros de
mongot. El valor puede ser uno de los siguientes:TRACEDEBUGINFOWARNERROR
Si se omite, es por defecto
INFO.
Configuración para métricas
spec.observabilityTipo: Objeto
Configuración de observabilidad para el recurso MongoDBSearch, incluido el punto final de métricas de Prometheus en
mongoty el reenviador de métricas para Ops Manager.
spec.observability.prometheusTipo: Objeto
Configuración del punto final de métricas de Prometheus en
mongot. Si omite este campo, el operador de Kubernetes habilita el punto final de métricas en el puerto predeterminado9946. Para deshabilitar el punto final, cambiespec.observability.prometheus.modeadisabled. Para cambiar el puerto, cambiespec.observability.prometheus.port.
spec.observability.prometheus.modeTipo: string
Habilita o deshabilita el punto final de métricas de Prometheus en
mongot. El valor puede ser uno de los siguientes:enableddisabled
Si se omite, es por defecto
enabled.
spec.observability.prometheus.portTipo: entero
Puerto en el que habilitar el endpoint de métricas de Prometheus. De forma predeterminada, el endpoint de métricas de Prometheus está habilitado en el puerto
9946.
spec.observability.metricsForwarderTipo: Objeto
Configuración para el reenviador de métricas, un despliegue que el operador de Kubernetes crea para recopilar las métricas
mongotde Prometheus y reenviarlas a Ops Manager.
spec.observability.metricsForwarder.modeTipo: 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 fuentesMongoDB(respaldadas por Ops Manager) gestionadas por el operador, y para las fuentes externas solo si se establecespec.observability.metricsForwarder.opsManager. Para las fuentesMongoDBCommunity, 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 recursoMongoDBCommunity, el operador de Kubernetes informa un error porque el agente de reenvío no es compatible con los orígenesMongoDBCommunity.disabled— El operador de Kubernetes nunca crea el agente de reenvío.
Si se omite, es por defecto
auto.Los modos
enabledyautorequieren 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étricasInvalid.
spec.observability.metricsForwarder.resourceRequirementsTipo: core/v1/ResourceRequirements
CPU y memoria que el contenedor del reenviador de métricas puede solicitar y a las que puede estar limitado.
Si se omite, el Operador de Kubernetes utiliza los siguientes valores por defecto:
requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi
spec.observability.metricsForwarder.deploymentTipo: Objeto
Anula las configuraciones que el operador de Kubernetes fusiona en el despliegue del reenviador de métricas creado por el operador. Sigue la misma convención
spec.clusters[].loadBalancer.managed.deploymentque: unmetadatacampo conlabelsannotationsy, y unspeccampo con un objeto apps/v1 /DeploymentSpec.
spec.observability.metricsForwarder.opsManagerTipo: 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 establecer tanto
agentCredentialscomoprojectConfigMapRef.
spec.observability.metricsForwarder.opsManager.agentCredentials.nameTipo: 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.nameTipo: string
Nombre del ConfigMap que contiene la configuración del proyecto de Ops Manager a la que el agente de reenvío de métricas envía las métricas.
Configuraciones para incrustación automatizada
Importante
La integración automatizada solo está disponible como función de vista previa para la implementación de MongoDB Community Edition. Esta función y su documentación correspondiente pueden sufrir cambios durante el período de vista previa. Para obtener más información, consulte Funciones de vista previa.
spec.autoEmbeddingTipo: Objeto
Configuración para Incrustación automátizada para datos de texto en tu colección.
spec.autoEmbedding.embeddingModelAPIKeySecretTipo: Objeto
Configuración para el proveedor de modelos de incrustación API keys. Para habilitar la Embedding Automatizada, debes crear dos claves, una para generar embedding en el momento del índice para los datos de tu colección y otra para generar embedding en el momento de la query para el texto de la query. Si no tienes ya las llaves, te recomendamos que crees llaves a partir de dos proyectos de Atlas. Para obtener más información sobre la creación de claves para los proyectos Atlas desde la Interfaz de Usuario de Atlas, consulte Gestionar claves API.
spec.autoEmbedding.embeddingModelAPIKeySecret.nameTipo: string
Nombre del secreto que contiene las claves API del modelo de incrustación que
mongotdebe 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 laindexing-keyclave y la clave de tiempo de consulta bajo laquery-keyclave.Puedes omitir
embeddingModelAPIKeySecretsolo sispec.autoEmbedding.providerEndpointapunta 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.providerEndpointTipo: string
URL de endpoint del modelo de incrustaciones para generar incrustaciones. El valor varía según si creas las claves desde la Interfaz de usuario de Atlas (recomendado) o directamente desde el servicio de incrustaciones (Voyage IA). Para las claves creadas a partir de:
Atlas Interfaz de Usuario, el valor es
https://ai.mongodb.com/v1/embeddings(por defecto)Voyage IA, el valor es
https://api.voyageai.com/v1/embeddings
Configuración para indicadores de características
spec.featureFlagsTipo: Objeto
Indicadores de características para
mongot. Si establece un indicador entrue, el operador de Kubernetes lo convierte en la configuraciónmongot. Si omite el objetofeatureFlagso un indicador individual, se aplica el esquema predeterminado para ese indicador (trueparaenableOverloadRetrySignal).
spec.featureFlags.enableOverloadRetrySignalTipo: booleano
Habilita la señal de reintento por sobrecarga
mongot. Si habilita esta bandera,mongotindica la reducción de carga a los proxies ascendentes (como el balanceador de carga Envoy administrado por el operador) a través de respuestas gRPCRESOURCE_EXHAUSTED. Los proxies reintentan la solicitud en otra instanciamongot.Si se omite, es por defecto
true.
Otros ajustes
spec.versionTipo: 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.
Campos de estado
El Operador de Kubernetes reporta información de estado bajo el campo status del recurso MongoDBSearch.
status.phaseTipo: string
Fase actual del recurso MongoDBSearch. Los valores posibles incluyen
Pending,Running,Failed,Disabled,UpdatedyUnsupported.Este campo es visible en la salida
kubectl getbajo la columnaPHASE.
status.messageTipo: string
Mensaje legible para humanos con detalles sobre el estado actual, como la razón por la que el recurso se encuentra en una fase
PendingoFailed.
status.lastTransitionTipo: string
Marca de tiempo de la última transición de
status.phase.
status.observedGenerationTipo: entero
Generación del recurso MongoDBSearch que el operador de Kubernetes procesó por última vez.
status.warningsTipo: arreglo de cadenas
Advertencias que el operador de Kubernetes informa sobre el recurso.
status.versionTipo: string
Versión de MongoDB Search (
mongot) que el operador de Kubernetes resolvió.Este campo es visible en la salida
kubectl getbajo la columnaVERSION.
status.resourcesNotReadyTipo: arreglo de objetos
Recursos de Kubernetes dependientes que aún no están listos. Cada entrada informa el
kindy elnamedel recurso y unmessageopcional y una lista deerrors.
status.pvcTipo: arreglo de objetos
Estado de las reclamaciones de volumen persistente de los
mongotStatefulSets. Cada entrada informa elphasey elstatefulsetNamea los que pertenecen las reclamaciones.
status.loadBalancerTipo: 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.phaseTipo: string
Fase actual del balanceador de carga gestionado. Los valores posibles incluyen
Pending,Running, yFailed. El Operador de Kubernetes informa de esta fase independientemente delstatus.phaseprincipal, para que puedas supervisar la implementación de Envoy por separado.Este campo también es visible en la salida de
kubectl getbajo la columnaLOADBALANCER.
status.loadBalancer.messageTipo: string
Mensaje legible para humanos con detalles sobre el estado del balanceador de carga administrado.
status.metricsForwarderTipo: Objeto
Estado del reenviador de métricas.
status.metricsForwarder.phaseTipo: string
Fase actual del reenviador de métricas. Los valores posibles incluyen
Pending,RunningyFailed. La fase informaDisabledsi se establecespec.observability.metricsForwarder.modeendisabled.Este campo también es visible en la salida de
kubectl getbajo la columnaMETRICSFORWARDER.
status.metricsForwarder.messageTipo: string
Mensaje legible para humanos con detalles sobre el estado del reenviador de métricas.
Ejemplo
kubectl get mdbs NAME PHASE VERSION LOADBALANCER METRICSFORWARDER AGE mdb-rs-ext-lb-search Running 1.70.1 Running Running 14m