El recurso personalizado MongoDBSearch permite implementar y configurar nodos de búsqueda de MongoDB y búsqueda vectorial junto con las implementaciones de la base de datos MongoDB en Kubernetes. El recurso MongoDBSearch implementa procesos mongot que proporcionan capacidades de búsqueda semántica y de texto completo mediante la sincronización de datos de la implementación de MongoDB.
Para obtener más información sobre cómo implementar MongoDB Search y Vector Search, consulte Implementar MongoDB Search y Vector Search.
Ejemplo
El siguiente ejemplo muestra una especificación de recursos para un recurso personalizado MongoDBSearch:
Nota
Este ejemplo no representa una configuración funcional. Contiene todos los campos disponibles con valores de muestra a modo de referencia. Algunos campos son mutuamente excluyentes y otros tienen prioridad (por ejemplo, source.external tiene prioridad sobre source.mongodbResourceRef). Consulte las descripciones de los campos a continuación para ver las combinaciones válidas.
1 spec: 2 source: 3 # external takes precedence over mongodbResourceRef 4 mongodbResourceRef: 5 name: mdb 6 external: 7 # hostAndPorts and shardedCluster are mutually exclusive 8 hostAndPorts: 9 - mdb-rs-external-0.example.com:27017 10 - mdb-rs-external-1.example.com:27017 11 - mdb-rs-external-2.example.com:27017 12 shardedCluster: 13 router: 14 hosts: 15 - mongos1.example.com:27017 16 - mongos2.example.com:27017 17 shards: 18 - shardName: shard-0 19 hosts: 20 - shard0-node1.example.com:27018 21 - shard0-node2.example.com:27018 22 - shardName: shard-1 23 hosts: 24 - shard1-node1.example.com:27018 25 - shard1-node2.example.com:27018 26 keyfileSecretRef: 27 name: mdb-keyfile 28 key: keyfile 29 tls: 30 # ca references a ConfigMap that contains ca.crt 31 ca: 32 name: mdbc-rs-ca 33 username: search-sync-source 34 passwordSecretRef: 35 name: mdbc-rs-search-sync-source-password 36 key: password 37 # x509 authentication (mutually exclusive with 38 # username/passwordSecretRef and source.tls) 39 x509: 40 clientCertificateSecretRef: 41 name: mongot-x509-client-cert 42 # Set only if the private key is encrypted 43 keyFilePasswordSecretRef: 44 name: mongot-x509-key-password 45 # TLS client certificate for SCRAM connections 46 # (mutually exclusive with x509): 47 # tls: 48 # clientCertificateSecretRef: 49 # name: mongot-scram-client-cert 50 # keyFilePasswordSecretRef: 51 # name: mongot-scram-key-password 52 security: 53 tls: 54 certificateKeySecretRef: 55 name: mdbs-tls-secret 56 certsSecretPrefix: my-prefix 57 # Set only if the private key is encrypted 58 keyFilePasswordSecretRef: 59 name: mdbs-tls-key-password 60 version: "1.70.1" 61 autoEmbedding: 62 embeddingModelAPIKeySecret: 63 name: embedding-model-api-query-key 64 providerEndpoint: https://ai.mongodb.com/v1/embeddings 65 featureFlags: 66 enableOverloadRetrySignal: true 67 logLevel: INFO 68 observability: 69 prometheus: 70 mode: enabled 71 port: 9946 72 metricsForwarder: 73 mode: auto 74 resourceRequirements: 75 requests: 76 cpu: 100m 77 memory: 128Mi 78 limits: 79 cpu: 250m 80 memory: 256Mi 81 deployment: 82 spec: 83 template: 84 spec: 85 nodeSelector: 86 kubernetes.io/os: linux 87 opsManager: 88 agentCredentials: 89 name: om-agent-api-key 90 projectConfigMapRef: 91 name: om-project-config 92 clusters: 93 - name: cluster-1 94 index: 0 95 replicas: 2 96 loadBalancer: 97 # Option 1: Operator-managed Envoy load balancer 98 managed: 99 externalHostname: "{shardName}.search.apps.example.com" 100 routerHostname: "search-router.apps.example.com:27028" 101 replicas: 2 102 resourceRequirements: 103 requests: 104 cpu: "100m" 105 memory: 128Mi 106 limits: 107 cpu: "500m" 108 memory: 512Mi 109 deployment: 110 spec: 111 template: 112 spec: 113 nodeSelector: 114 kubernetes.io/os: linux 115 retryPolicy: 116 numRetries: 2 117 perTryTimeout: "60s" 118 minMongotReadyReplicas: 1 119 # Option 2: User-provided (BYO) load balancer 120 # (mutually exclusive with managed) 121 unmanaged: 122 endpoint: "{shardName}-search-lb.corp.example.com:443" 123 resourceRequirements: 124 limits: 125 cpu: "3" 126 memory: 5Gi 127 requests: 128 cpu: "2" 129 memory: 4Gi 130 persistence: 131 single: 132 storage: 16G 133 storageClass: standard 134 statefulSet: 135 spec: 136 template: 137 spec: 138 nodeSelector: 139 kubernetes.io/os: linux 140 jvmFlags: 141 - -Xms2g 142 - -Xmx2g 143 advancedMongotConfigs: 144 someAdvancedSetting: value 145 syncSourceSelector: 146 matchTagSets: 147 - region: us-east-1 148 workload: search 149 - {} 150 shardOverrides: 151 - shardNames: 152 - shard-0 153 replicas: 3 154 resourceRequirements: 155 requests: 156 cpu: "4" 157 memory: 8Gi 158 persistence: 159 single: 160 storage: 32G 161 jvmFlags: 162 - -Xms4g 163 - -Xmx4g 164 statefulSet: 165 spec: 166 template: 167 spec: 168 nodeSelector: 169 disktype: ssd
Configuraciones de recursos obligatorias MongoDBSearch
Esta sección describe los ajustes que debes utilizar para todos los recursos MongoDBSearch.
apiVersionTipo: string
Versión del esquema de recursos de MongoDB Kubernetes. Establecer el valor en
mongodb.com/v1.
kindTipo: string
Tipo de recurso de Kubernetes de MongoDB que se va a crear. Configurar esto en
MongoDBSearch.
metadata.namespaceTipo: string
Espacio de nombres donde se debe crear el recurso
MongoDBSearch. Para aprovechar la configuración automática de los recursosMongoDBSearchyMongoDBoMongoDBCommunity, el recursoMongoDBSearchdebe crearse en el mismo namespace que el recursoMongoDBoMongoDBCommunity.
metadata.nameTipo: string
Identificador único del recurso
MongoDBSearch. El nombre debe ser un nombre de subdominio DNS válido de Kubernetes. El operador de Kubernetes deriva los nombres de los recursos de Kubernetes que crea a partir de este, por ejemplo,{name}-search-{clusterIndex}-{shardName}. El operador de Kubernetes valida que cada nombre generado cumpla con los límites de caracteres DNS de Kubernetes de 63 caracteres para etiquetas y 253 caracteres para nombres de subdominios.spec.clustersTipo: arreglo de objetos
MongoDBSearch50mongotConfiguración denameindexdespliegue por clúster de Kubernetes para el recurso. Este campo es obligatorio y debe contener al menos una entrada y como máximo: una entrada para un despliegue de un solo clúster o una entrada para cada clústerde Kubernetes que ejecute pods en un despliegue de varios clústeres. Para consultar la referencia completa del campo, incluidos y, vea Configuración de despliegue de clúster.
Configuración de recursos MongoDBSearch opcional
El recurso personalizado MongoDBSearch puede emplear las siguientes configuraciones:
Configuración de la fuente de datos
spec.sourceTipo: Objeto
Configuración que describe la fuente de MongoDB para
mongot. La fuente puede ser un set de réplicas o un clúster particionado. Esta configuración es obligatoria si:MongoDBes externoMongoDBtiene un nombre diferente deMongoDBSearch
El
MongoDBSearchrecurso siempre debe estar conectado a una implementación de MongoDB. Si implementó utilizando el Operador de Kubernetes conMongoDBelMongoDBCommunityCRD o, y sispec.sourceestá vacío, el Operador de Kubernetes utiliza lo siguiente en funciónmetadata.namede para buscar la base de datos en Kubernetes:Busca
MongoDBoMongoDBCommunityrecursos con el mismo nombre que se estableció parametadata.nameenMongoDBSearch, 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
MongoDBoMongoDBCommunityque se asociará con este recurso de búsqueda de MongoDB y búsqueda vectorial. El operador de Kubernetes admite conjuntos de réplicas y clústeres fragmentados. No puede haber más de un recursoMongoDBSearchque haga referencia al mismo recursoMongoDBoMongoDBCommunity.Utilice este campo únicamente si su recurso
MongoDBoMongoDBCommunityestá implementado en el mismo clúster de Kubernetes y se encuentra en el mismo espacio de nombres que su recursoMongoDBSearch. Si su base de datos está implementada fuera de Kubernetes o se encuentra en un espacio de nombres diferente, utilicespec.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 recursoMongoDBSearch.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 recursoMongoDBSearch. No se admiten referencias entre espacios de nombres. Si su base de datos se encuentra en un espacio de nombres diferente, utilicespec.source.external.spec.source.usernameTipo: string
Nombre de usuario para usar para autenticar
mongotconmongod. El usuario especificado debe tener el rol desearchCoordinator. Si se omite, el Operador Kubernetes asume que el nombre de usuario essearch-sync-source.spec.source.passwordSecretRef.nameTipo: string
Nombre del secreto que contiene la contraseña que
mongotdebe 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 de 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.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 del certificado de cliente TLS de 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.
Configuración externa de MongoDB
spec.source.externalTipo: Objeto
Configuración que describe la fuente de datos externa. Especifique esta configuración solo si desea conectarse a una base de datos MongoDB externa que no se haya implementado mediante el operador de Kubernetes. Si especifica esta configuración, tendrá prioridad sobre
spec.source.mongodbResourceRef.spec.source.external.hostAndPortsTipo: arreglo de cadenas
Lista de nombres de host y puertos del conjunto de réplicas externo. Este campo es mutuamente excluyente con
spec.source.external.shardedCluster. UtilicehostAndPortspara fuentes de conjuntos de réplicas yshardedClusterpara fuentes de clústeres fragmentados.spec.source.external.shardedClusterTipo: Objeto
Declara un clúster MongoDB particionado externo como fuente de datos para
mongot. Contiene la configuración para los routersmongosy los miembros del conjunto de réplicas por partición.spec.source.external.shardedCluster.router.hostsTipo: arreglo de cadenas
Lista de extremos para las instancias de router
mongosen formatohost:port. Todas lasmongotinstancias se conectan a estos routers. Especifique al menos una entrada.spec.source.external.shardedCluster.shardsTipo: arreglo de objetos
Lista de todos los fragmentos en el clúster externo de MongoDB. Cada entrada describe el conjunto de réplicas de un fragmento. El operador de Kubernetes crea un StatefulSet
mongotpara cada fragmento. Especifique al menos una entrada de fragmento.spec.source.external.shardedCluster.shards[*].shardNameTipo: string
El nombre lógico del fragmento. El nombre debe ser único en todos los fragmentos y debe ajustarse a las reglas de nombres de etiquetas DNS de Kubernetes 1123(RFC): caracteres alfanuméricos en minúscula y guiones
-(), comenzando y terminando con un carácter alfanumérico, con una longitud máxima de 63 caracteres.._No se permiten puntos () ni guiones bajos ().El operador de Kubernetes combina
metadata.name, el índice del clúster, yshardNameen los nombres de los recursos de Kubernetes que crea, y valida que cada nombre generado se ajuste a los límites de DNS de Kubernetes de 63 caracteres para etiquetas y 253 caracteres para nombres de subdominios. MantengashardNamelo suficientemente corto para cumplir con estos límites.spec.source.external.shardedCluster.shards[*].hostsTipo: arreglo de cadenas
Lista de puntos finales de los
mongodmiembros del conjunto de réplicas para este fragmento en formatohost:port. Especifique al menos una entrada. Cada fragmento tiene su propio grupo demongotinstancias, que obtienen datos únicamente del conjunto de réplicas de ese fragmento.spec.source.external.keyfileSecretRefTipo: Objeto
Secreto que contiene el archivo de clave
mongodquemongotutiliza para conectarse a la implementación externa de MongoDB. El camponamees obligatorio. El campokeyes opcional.spec.source.external.tls.ca.nameTipo: string
Nombre del ConfigMap que contiene la cadena de confianza de las autoridades de certificación que emitieron el certificado TLS utilizado por los nodos
mongod. Debe especificar el certificado (o la cadena de certificados) bajo la claveca.crten este ConfigMap.
Configuración de implementación de clúster
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 el recurso
MongoDBSearch. Este campo es obligatorio y debe contener al menos una entrada y como máximo 50 entradas. Todas las configuraciones de tamaño y ubicación, comoreplicas,loadBalancer,resourceRequirements,persistence,jvmFlagsystatefulSet, se encuentran dentro de una entradaclusters. Estas configuraciones no tienen equivalentes de nivel superior.Para una implementación de clúster único, especifique una entrada. Puede omitir
nameyindex.Para una implementación de 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. Dado que el índice forma parte de los nombres de los recursos, al modificarlo, el operador de Kubernetes creará nuevos recursos bajo el nuevo índice y dejará huérfanos los recursos del índice anterior. Esto se aplica a todos los recursos que contienen un índice, incluidos los servicios proxy ({name}-search-{index}[-{shardName}]-proxy-svc), el despliegue y el ConfigMap de Envoy ({name}-search-lb-{index}), los secretos de certificados del balanceador de carga y los recursos del reenviador de métricas ({name}-search-metrics-forwarder-{index}).Para una implementación de clúster único, puede omitir este campo; su valor predeterminado es
0. Sin embargo, si cada clúster de Kubernetes miembro ejecuta su propia instancia de Kubernetes Operator, establezca explícitamenteindexcon un valor distinto en el recursoMongoDBSearchde 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 desconecta el desplieguemongotde este clúster. El operador de Kubernetes escala el StatefulSet a cero pods y mantiene el recursoMongoDBSearchy sus demás recursos de Kubernetes en su lugar.Si se omite, es por defecto
1.spec.clusters[].resourceRequirementsTipo: core/v1/ResourceRequirements
CPU y memoria que el contenedor
mongodb-searchpuede solicitar y a las que puede estar limitado.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 el contenedor
mongodb-searchpuede consumir. Por defecto, no hay límites establecidos.spec.clusters[].resourceRequirements.requestsTipo: Objeto
Cantidad de CPU y memoria solicitada para el contenedor
mongodb-search. Si especifica solo uno de los valorescpuomemory, el operador de Kubernetes aplicará el valor predeterminado para el otro.spec.clusters[].persistence.singleTipo: Objeto
Configuración de almacenamiento para el volumen de persistencia de MongoDB Search y Vector Search donde se almacenan los índices. Cada instancia de búsqueda (pod) tiene su propio almacenamiento independiente.
EscalarTipo de datoDescripciónlabelSelectorstring
Etiqueta utilizada para vincular volúmenes montados a directorios.
storagestring
Tamaño mínimo del volumen persistente que debe montarse. El valor predeterminado
16Ges.storageClassstring
Tipo de almacenamiento especificado en una solicitud de volumen persistente.
MongoDBSearchSolo admite elsinglemodo 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. Sipersistenceomite, el operador de Kubernetesspec.clusters[].persistence.single.storageestablece16Gen.
Equilibrio de carga
spec.clusters[].loadBalancerTipo: Objeto
Configuración para el balanceo de carga L7 entre
mongod(omongos) ymongot. Este campo es obligatorio sispec.clusters[].replicases mayor que1.Se debe establecer exactamente solo uno de
managedounmanaged.Todas las entradas 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.spec.clusters[].loadBalancer.managedTipo: Objeto
Configura un balanceador de carga Envoy administrado por el operador. Este campo es mutuamente excluyente
spec.clusters[].loadBalancer.unmanagedcon.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.spec.clusters[].loadBalancer.managed.externalHostnameTipo: string
Nombre de host que el proxy Envoy espera para la coincidencia SNI en las solicitudes entrantes. El certificado del servidor TLS de Envoy debe incluir este nombre de host en su campo SAN (Subject Alternative Name).
Para las fuentes de clúster fragmentadas, el valor debe contener un marcador de posición
{shardName}, que el operador de Kubernetes expande para cada fragmento. Cada fragmento obtiene su propio nombre de host, y el certificado del servidor TLS de Envoy debe incluir todos los nombres de host de los fragmentos expandidos en sus SAN. Para las fuentes de conjunto de réplicas, no utilice el marcador de posición{shardName}.Este campo es obligatorio si MongoDB se gestiona externamente (no implementado por el Operador de Kubernetes). Si MongoDB está gestionado por el operador en el mismo clúster, omita este campo porque el Operador de Kubernetes configura automáticamente el enrutamiento.
En implementaciones con varios clústeres, cada entrada de clúster suele usar un nombre de host distinto. Sin embargo, el operador de Kubernetes permite compartir un mismo nombre de host entre clústeres, por ejemplo, si un proxy de conmutación por error que abarca varias zonas de disponibilidad actúa como proxy para los proxies Envoy de varios clústeres.
spec.clusters[].loadBalancer.managed.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.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 spec.clusters[].loadBalancer.managed.deploymentTipo: Objeto
Anulaciones que el operador de Kubernetes fusiona en el despliegue de Envoy creado por el operador. Este objeto contiene un
metadatacampo conlabelsannotationsy, y unspeccampo con un objeto apps/v1/DeploymentSpec.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.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). Este campo es mutuamente excluyente con
spec.clusters[].loadBalancer.managed. Las implementaciones en clústeres múltiples no admiten balanceadores de carga no administrados.spec.clusters[].loadBalancer.unmanaged.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.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}.
Anulaciones por fragmento
spec.clusters[].shardOverridesTipo: arreglo de objetos
Anula ese tamaño de fragmentos específicos dentro de esta entrada de clúster de manera diferente a los valores predeterminados del clúster.
Este campo solo se puede usar con una fuente de clúster fragmentada externa (
spec.source.external.shardedCluster). Cada nombre de fragmento al que haga referencia debe existir enspec.source.external.shardedCluster.shards[*].shardName, y puede sobrescribir cada fragmento como máximo una vez por entrada de clúster.Cada anulación contiene una lista
shardNamesobligatoria (al menos una entrada) y campos opcionalesreplicas,resourceRequirements,persistence,jvmFlagsystatefulSet. Si se establecenreplicas,resourceRequirements,persistenceojvmFlagsen una anulación, estos reemplazan el valor del clúster para los fragmentos con nombre.jvmFlagsreemplaza el valor del clúster solo si se establece como una lista no vacía. El operador de Kubernetes fusiona profundamentestatefulSetcon el valor del clúster. Los campos que no se establecen heredan el valor del clúster.
Sincronizar selección de fuente
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.
JVM Flags
spec.clusters[].jvmFlagsTipo: arreglo de cadenas
Indicadores de la JVM que se pasan al proceso
mongot. Cada indicador debe comenzar con-X,-XX:o-D, no debe contener espacios y solo puede contener caracteres alfanuméricos y los caracteres.,_,+,:,-y=. El operador de Kubernetes rechaza los indicadores que no cumplen estas reglas.Si no especifica
-Xmso-Xmxen este campo, el operador de Kubernetes calcula automáticamente el tamaño del montón estableciendo ambos valores a la mitad despec.clusters[].resourceRequirements.requests.memory. Si no especifica los requisitos de recursos, el operador de Kubernetes utiliza una solicitud de memoria predeterminada de 4Gi, lo que resulta en aproximadamente-Xmx2048m -Xms2048m. El operador de Kubernetes siempre agrega los indicadores que usted proporciona después de los indicadores calculados por el operador.
Anulaciones de StatefulSet
spec.clusters[].statefulSetTipo: Objeto
Anulaciones para el StatefulSet que el Operador de Kubernetes crea para desplegar
mongotpods. Este objeto contiene unmetadatacampo conlabelsannotationsy, y unspeccampo con un objeto apps/v1/StatefulSetSpec. El Operador de Kubernetes siempre aplica las anulaciones al final, por lo que sobrescriben la configuración que calcula el Operador de Kubernetes.Nota
No establezcas requisitos de recursos o configuraciones de persistencia usando
spec.clusters[].statefulSet. En su lugar, utilice los 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. Utilice este campo únicamente para configuracionesmongotque el recursoMongoDBSearchno exponga como campos de primera clase.
Configuración de seguridad
spec.securityTipo: Objeto
Configuración de seguridad del servidor de escucha
mongot.spec.security.tlsTipo: Objeto
TLS configuración para
mongot. Si se omite,mongotno utilizará TLS para conexiones entrantes.Si utiliza un balanceador de carga 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 espacio de nombres que contiene la clave privada (
tls.key) y el certificado (tls.crt). El operador de Kubernetes aún admite este campo para implementaciones de conjuntos de réplicas por motivos de compatibilidad con versiones anteriores. Para implementaciones de clústeres fragmentados, el operador de Kubernetes rechaza este campo durante la validación, ya que una única referencia secreta no puede abarcar los certificados por fragmento.spec.security.tls.certsSecretPrefixTipo: string
Prefijo que el operador de Kubernetes utiliza para derivar nombres de secretos TLS mediante una convención de nomenclatura. Si configura este campo, el operador de Kubernetes buscará secretos que sigan estos patrones:
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-certEl 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.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.
Configuración de registro
spec.logLevelTipo: string
Nivel de verbosidad de los registros de
mongot. El valor puede ser uno de los siguientes:TRACEDEBUGINFOWARNERROR
Si se omite, es por defecto
INFO.
Configuración de métricas
spec.observability.prometheusTipo: Objeto
Configuración para el punto final de métricas de Prometheus en
mongot. Si omite este campo, el operador de Kubernetes habilita el punto final de métricas en el puerto predeterminado9946.spec.observability.prometheus.modeTipo: string
Habilita o deshabilita el punto final de métricas de Prometheus en
mongot. El valor puede serenabledodisabled. Si se omite, se utiliza el valor predeterminadoenabled.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 de reenvío de métricas puede solicitar y a las que puede estar limitado. Si se omite, el operador de Kubernetes utiliza solicitudes de
cpu: 100mymemory: 128Mi, y límites decpu: 250mymemory: 256Mi.spec.observability.metricsForwarder.deploymentTipo: Objeto
Anulaciones que el operador de Kubernetes fusiona en el despliegue del reenviador de métricas creado por el operador. Este objeto contiene un
metadatacampo 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 configurar tanto
agentCredentials.name(el Secret que contiene la clave API del agente de Ops Manager) comoprojectConfigMapRef.name(el ConfigMap que contiene la configuración del proyecto de Ops Manager).
Configuración de incrustación automatizada
Importante
La incrustación automatizada está disponible como una funcionalidad preliminar solo para la implementación de MongoDB Community Edition. La funcionalidad y la documentación correspondiente pueden cambiar en cualquier momento durante el periodo de Vista previa. Para obtener más información, consulte Funcionalidades de vista previa.
spec.autoEmbeddingTipo: Objeto
Configuración para la inserción automatizada de datos de texto en su colección.
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 del punto final del modelo de incrustación para generar incrustaciones.
Configuración de 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 informa información de estado en el campo status del recurso MongoDBSearch.
status.phaseTipo: string
Fase actual del recurso
MongoDBSearch. Los valores posibles incluyenPending,Running,Failed,Disabled,UpdatedyUnsupported.status.messageTipo: string
Mensaje legible para humanos con detalles sobre el estado actual.
status.lastTransitionTipo: string
Marca de tiempo de la última transición de
status.phase.status.observedGenerationTipo: entero
Generación del recurso
MongoDBSearchque el operador de Kubernetes procesó por última vez.status.warningsTipo: arreglo de cadenas
Advertencias que el operador de Kubernetes informa sobre el recurso.
status.versionTipo: string
Versión de MongoDB Search (
mongot) que el operador de Kubernetes resolvió.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,RunningyFailed. Este campo es visible en la salidakubectl 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 es visible en la salidakubectl getbajo la columnaMETRICSFORWARDER.status.metricsForwarder.messageTipo: string
Mensaje legible para humanos con detalles sobre el estado del reenviador de métricas.