O MongoDBSearch recurso personalizado permite implantar e configurar nós do MongoDB Search e do pesquisa vetorial junto com suas implantações de banco de dados MongoDB no Kubernetes. O recurso MongoDBSearch implanta processos mongot que fornecem funcionalidades de pesquisa semântica e de texto completo sincronizando dados de sua implantação do MongoDB.
Para saber mais sobre a implantação do MongoDB Search e da pesquisa vetorial, consulte Implante o MongoDB Search e a pesquisa vetorial.
Exemplo
O exemplo a seguir mostra uma especificação de recurso para um recurso personalizado do MongoDBSearch :
Observação
Este exemplo não é uma configuração de trabalho. Ele contém todos os campos disponíveis preenchidos com valores de amostra para referência. Alguns campos são mutuamente exclusivos e alguns têm precedência sobre outros (por exemplo, source.external tem precedência sobre source.mongodbResourceRef). Consulte as descrições de campo abaixo para combinações 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
Configurações de recursos MongoDBSearch necessárias
Esta seção descreve as configurações que você deve usar para todos os recursos do MongoDBSearch .
apiVersionTipo: string
Versão do esquema de recursos do MongoDB Kubernetes. Defina o valor como
mongodb.com/v1.
kindTipo: string
Tipo de recurso MongoDB Kubernetes para criar. Defina isso como
MongoDBSearch.
metadata.namespaceTipo: string
Namespace onde o recurso
MongoDBSearchdeve ser criado. Para aproveitar a configuração automática dos recursosMongoDBSearcheMongoDBouMongoDBCommunity, o recursoMongoDBSearchdeve ser criado no mesmo namespace que o recursoMongoDBouMongoDBCommunity.
metadata.nameTipo: string
Identificador exclusivo do recurso
MongoDBSearch. O nome deve ser um nome de subdomínio DNS do Kubernetes válido. Mantenha o nome curto. O operador Kubernetes deriva os nomes dos recursos do Kubernetes que ele cria a partir dele, por exemplo{name}-search-{clusterIndex}-{shardName}. O operador Kubernetes valida que cada nome gerado se encaixa nos limites de DNS do Kubernetes de 63 caracteres para rótulos e 253 caracteres para nomes de subdomínio.spec.clustersTipo : array de objetos
Configuração de implantação por cluster Kubernetes para o recurso
MongoDBSearch. Este campo é obrigatório e deve conter pelo menos uma entrada e no máximo 50 entradas: uma entrada para uma implantação de cluster único ou uma entrada para cada cluster Kubernetes que executa podsmongotem uma implantação de vários clusters. Para a referência completa do campo, incluindonameeindex, consulte Configurações de implantação de cluster.
Configurações de recursos MongoDBSearch opcionais
O recurso personalizado do MongoDBSearch pode utilizar as seguintes configurações:
Configurações da fonte de dados
spec.sourceTipo: objeto
Configuração que descreve a origem MongoDB para
mongot. A origem pode ser um conjunto de réplicas ou um cluster fragmentado. Esta configuração é necessária se:MongoDBé externoMongoDBtem um nome diferente deMongoDBSearch
O recurso
MongoDBSearchdeve estar sempre conectado a uma implantação do MongoDB. Se você implantou usando o Operador Kubernetes comMongoDBouMongoDBCommunityCRD e sespec.sourceestiver vazio, o Operador Kubernetes usará o seguinte com base emmetadata.namepara procurar o banco de dados no Kubernetes:Encontre recursos
MongoDBouMongoDBCommunitycom o mesmo nome definido parametadata.nameemMongoDBSearch, no mesmo namespace.Encontre o segredo da senha do usuário
mongotno segredo<MongoDBSearch.metadata.name>-<username>-password, que para o nome de usuário padrão produz<MongoDBSearch.metadata.name>-search-sync-source-password.
spec.source.mongodbResourceRef.nameTipo: string
Nome do recurso
MongoDBouMongoDBCommunitya ser associado a este recurso do MongoDB Search e da pesquisa vetorial. O operador Kubernetes suporta conjuntos de réplicas e clusters sharded. Você não pode ter mais de um recursoMongoDBSearchreferenciando o mesmo recursoMongoDBouMongoDBCommunity.Use este campo somente se o recurso
MongoDBouMongoDBCommunityfor implantado no mesmo cluster do Kubernetes e estiver no mesmo namespace que o recursoMongoDBSearch. Se o seu banco de dados for implantado fora do Kubernetes ou estiver em um namespace diferente, usespec.source.externalpara configurar a conexão com o banco de dados. Se você definir ambos os campos, ospec.source.externalterá precedência.Se omitido, o Operador Kubernetes procurará um recurso
MongoDBouMongoDBCommunitycom o mesmo nome deste recursoMongoDBSearch.spec.source.mongodbResourceRef.namespaceTipo: string
Namespace do recurso
MongoDBouMongoDBCommunityao qualspec.source.mongodbResourceRef.namese refere. O operador do Kubernetes ignora atualmente este campo e sempre usa o namespace do recursoMongoDBSearch. Referências entre namespaces não são compatíveis. Se o seu banco de dados estiver em um namespace diferente, usespec.source.external.spec.source.usernameTipo: string
Nome de usuário para autenticar
mongotcommongod. O usuário especificado deve ter a funçãosearchCoordinator. Se omitido, o Operador Kubernetes assume que o nome de usuário ésearch-sync-source.spec.source.passwordSecretRef.nameTipo: string
Nome do segredo que contém a senha que
mongotdeve usar para autenticar commongod. Se omitido, o padrão é<MongoDBSearch.metadata.name>-<username>-password, onde<username>é o valor despec.source.username. Para o nome de usuário padrãosearch-sync-source, isso resulta em<MongoDBSearch.metadata.name>-search-sync-source-password.spec.source.passwordSecretRef.keyTipo: string
Chave sob a qual o valor da senha é armazenado no segredo. Se omitido, o padrão é
password.
x509 Configurações de autenticação
spec.source.x509Tipo: objeto
Configura a autenticação do certificado de cliente x509 para a conexão de origem de sincronização do
mongot. Se você definir esse campomongotautenticado no MongoDB usando x509 em vez de nome de usuário e senha.Este campo é mutuamente exclusivo com
spec.source.passwordSecretRef,spec.source.usernameespec.source.tls. O Operador Kubernetes rejeita a configuração se você especificar x509 e autenticação de senha.spec.source.x509.clientCertificateSecretRefTipo: objeto
Segredo que contém o certificado do cliente x509 e a chave para autenticar na origem de sincronização do MongoDB . O segredo deve conter as seguintes chaves:
tls.crt— Certificado de clientetls.key— chave privada
Se a chave privada for criptografada com uma senha, armazene a senha em um Secret separado e faça referência a ela com
spec.source.x509.keyFilePasswordSecretRef.Você deve especificar este campo se definir
spec.source.x509.spec.source.x509.keyFilePasswordSecretRefTipo: objeto
Segredo que contém a senha que descriptografa a chave privada criptografada por senha em
spec.source.x509.clientCertificateSecretRef. O segredo deve conter a senha na chavekeyFilePassword. Omita este campo se a chave privada não estiver criptografada.
Configurações de certificado de cliente SCRAM TLS
spec.source.tlsTipo: objeto
Configura um certificado de cliente TLS para a conexão de origem de sincronização
mongotse você usar autenticação SCRAM (nome de usuário e senha). Se você definir este campo,mongotapresentará o certificado do cliente durante o handshake TLS com a implantação do MongoDB de origem (transporte TLS mútuo).mongotainda autentica com o nome de usuário e a senha.Use este campo apenas com autenticação SCRAM (
spec.source.passwordSecretRef). Este campo é mutuamente exclusivo comspec.source.x509. Se você quiser que o próprio certificado do cliente sirva como credencial de autenticação, usespec.source.x509em vez disso.spec.source.tls.clientCertificateSecretRefTipo: objeto
Segredo que contém o certificado de cliente TLS e a chave que
mongotapresenta durante o handshake TLS com a implantação de origem do MongoDB. O segredo deve conter as seguintes chaves:tls.crt— Certificado de clientetls.key— chave privada
Você deve especificar este campo se definir
spec.source.tls.spec.source.tls.keyFilePasswordSecretRefTipo: objeto
Segredo que contém a senha que descriptografa a chave privada criptografada por senha em
spec.source.tls.clientCertificateSecretRef. O segredo deve conter a senha na chavekeyFilePassword. Omita este campo se a chave privada não estiver criptografada.
Configurações externas do MongoDB
spec.source.externalTipo: objeto
Configurações que descrevem a fonte de dados externa. Especifique essas configurações somente se quiser se conectar a um MongoDB externo que não foi implantado usando o Kubernetes Operator. Se você especificar essas configurações, elas terão precedência sobre
spec.source.mongodbResourceRef.spec.source.external.hostAndPortsTipo: array de strings
Lista de nomes de host e portas do conjunto de réplicas externo. Este campo é mutuamente exclusivo com
spec.source.external.shardedCluster. UsehostAndPortspara fontes de conjunto de réplicas eshardedClusterpara fontes de cluster sharded.spec.source.external.shardedClusterTipo: objeto
Declara um cluster MongoDB fragmentado externo como fonte de dados para
mongot. Contém configuração para roteadoresmongose membros do conjunto de réplicas por fragmento.spec.source.external.shardedCluster.router.hostsTipo: array de strings
Lista de endpoints para as instâncias do roteador
mongosno formatohost:port. Todas as instâncias domongotse conectam a estes roteadores. Especifique pelo menos uma entrada.spec.source.external.shardedCluster.shardsTipo : array de objetos
Lista de todos os shards no cluster MongoDB externo. Cada entrada descreve o conjunto de réplicas de um shard. O operador Kubernetes cria um
mongotStatefulSet para cada shard. Especifique pelo menos uma entrada de shard.spec.source.external.shardedCluster.shards[*].shardNameTipo: string
O nome lógico do shard. O nome deve ser exclusivo em todos os shard e deve estar em conformidade com as regras de nome de rótulo DNS do Kubernetes (RFC 1123): caracteres alfanuméricos minúsculos e hífens (
-), começando e terminando com um caractere alfanumérico, com um comprimento máximo de 63 caracteres. Não são permitidos pontos (.) e sublinhados (_).O operador Kubernetes combina
metadata.name, o índice de cluster eshardNamenos nomes dos recursos do Kubernetes que ele cria e valida se cada nome gerado se encaixa nos limites de DNS do Kubernetes de 63 caracteres para rótulos e 253 caracteres para nomes de subdomínio. MantenhashardNamecurto o suficiente para esses limites.spec.source.external.shardedCluster.shards[*].hostsTipo: array de strings
Lista de pontos de extremidade dos membros do conjunto de réplicas do
mongodpara este shard no formatohost:port. Especifique pelo menos uma entrada. Cada shard tem seu próprio grupo de instânciasmongot, que fornecem dados somente do conjunto de réplicas desse shard.spec.source.external.keyfileSecretRefTipo: objeto
Segredo que contém o arquivo de chave
mongodquemongotusa para se conectar à implantação externa do MongoDB. O camponameé obrigatório. O campokeyé opcional.spec.source.external.tls.ca.nameTipo: string
Nome do ConfigMap que contém a cadeia confiável das autoridades de certificação que emitiram o certificado TLS usado pelos nós
mongod. Você deve especificar o certificado (ou cadeia de certificados) na chaveca.crtneste ConfigMap.
Configurações de implantação de cluster
As seguintes configurações descrevem cada entrada do array spec.clusters necessário.
spec.clustersTipo : array de objetos
Configuração de implantação por cluster Kubernetes para o recurso
MongoDBSearch. Este campo é obrigatório e deve conter pelo menos uma entrada e no máximo 50 entradas. Todas as configurações de dimensionamento e posicionamento, comoreplicas,loadBalancer,resourceRequirements,persistence,jvmFlagsestatefulSet, estão dentro de uma entradaclusters. Essas configurações não têm equivalentes de nível superior.Para uma implantação de cluster único, especifique uma entrada. Você pode omitir
nameeindex.Para uma implantação de vários clusters, especifique uma entrada para cada cluster Kubernetes que executa pods
mongot. Se você especificar mais de uma entrada, as seguintes regras serão aplicadas:nameé necessário em cada entrada e deve ser exclusivo.indexé necessário em cada entrada e deve ser exclusivo.A fonte do MongoDB deve ser externa (
spec.source.external). As implantações de vários clusters não oferecem suporte a fontes do MongoDB gerenciadas pelo operador.Cada entrada deve configurar um balanceador de carga gerenciado pelo operador (
loadBalancer.managed). As implantações de vários clusters não oferecem suporte a balanceadores de carga não gerenciados.
O Operador Kubernetes impõe essas regras por meio de regras de validação CRD e validação em tempo de reconciliação.
spec.clusters[].nameTipo: string
Nome do cluster Kubernetes para esta entrada, com um comprimento máximo de 253 caracteres. Você pode omitir este campo para uma implantação de cluster único.
Se
spec.clusterscontiver mais de uma entrada,nameserá necessário, deverá ser exclusivo em todas as entradas e não poderá ser alterado após a criação do recurso.spec.clusters[].indexTipo: inteiro
Identificador de inteiro estável do cluster Kubernetes para esta entrada. O valor deve estar entre
0e999e deve ser exclusivo em todas as entradas. Sespec.clusterscontiver mais de uma entrada,indexserá necessário em cada entrada.O operador do Kubernetes inclui o índice nos nomes dos recursos do Kubernetes que ele cria para esta entrada de cluster, por exemplo,
{name}-search-{index}para StatefulSets,{name}-search-{index}-svcpara Serviços e{name}-search-{index}-configpara ConfigMaps. Para fontes de cluster sharded, os nomes também incluem o nome do shard, por exemplo,{name}-search-{index}-{shardName}e{name}-search-{index}-{shardName}-svc.Aviso
Não altere o
indexde uma entrada existente. Como o índice faz parte dos nomes dos recursos, alterá-lo faz com que o operador do Kubernetes crie novos recursos sob o novo índice e orfane os recursos no índice antigo. Isso se aplica a todos os recursos com índice, incluindo serviços proxy ({name}-search-{index}[-{shardName}]-proxy-svc), a implantação e o ConfigMap do Envoy ({name}-search-lb-{index}), segredos de certificado do balanceador de carga e recursos de encaminhamento de métricas ({name}-search-metrics-forwarder-{index}).Para uma implantação de cluster único, você pode omitir este campo e ele assume o padrão
0. No entanto, se cada cluster Kubernetes de nó executar sua própria instância de operador Kubernetes, definaindexexplicitamente para um valor distinto no recursoMongoDBSearchde cada cluster. Índices distintos evitam que os nomes de host e os nomes de recursos gerados colidam entre os clusters.
Dimensionamento e armazenamento
spec.clusters[].replicasTipo: inteiro
Número de pods
mongota implantar neste cluster Kubernetes. Para uma fonte de conjunto de réplicas, este é o número total de podsmongot. Para uma fonte de cluster sharded, este é o número de podsmongotpor shard.Se
spec.clusters[].replicasfor maior que1, você também deverá configurarspec.clusters[].loadBalancerpara rotear o tráfego entremongode as múltiplas instânciasmongot.Se você definir
spec.clusters[].replicascomo0, o operador do Kubernetes colocará a implantaçãomongotneste cluster offline. O Operador Kubernetes dimensiona o StatefulSet para zero pods e mantém o recursoMongoDBSearche seus outros recursos Kubernetes no lugar.Se omitido, o padrão é
1.spec.clusters[].resourceRequirementsTipo: core/v1/ResourceRequirements
CPU e memória que o contêiner
mongodb-searchpode solicitar e ser limitado a.Se omitido, o Kubernetes Operator usa os seguintes valores padrão:
requests: cpu: 2 memory: 4Gi spec.clusters[].resourceRequirements.limitsTipo: objeto
Limite superior no recurso, CPU e memória, que o contêiner
mongodb-searchpode consumir. Por padrão, não há limites definidos.spec.clusters[].resourceRequirements.requestsTipo: objeto
Quantidade de CPU e memória solicitada para o contêiner
mongodb-search. Se você especificar apenas um decpuoumemory, o operador do Kubernetes aplicará o valor padrão para o outro.spec.clusters[].persistence.singleTipo: objeto
Configuração de armazenamento para o volume de persistência do MongoDB Search e da pesquisa vetorial onde os índices são armazenados. Cada instância de pesquisa (pod) tem seu próprio armazenamento independente.
EscalarTipo de DadosDescriçãolabelSelectorstring
Tag usada para vincular volumes montados a diretórios.
storagestring
Tamanho mínimo do volume persistente que deve ser montado. O valor padrão é
16G.storageClassstring
Tipo de armazenamento especificado em uma declaração de volume persistente.
MongoDBSearchsuporta apenas o modo de persistênciasingle, que usa um volume para todos os dados. Embora o esquema CRD também contenha um campospec.clusters[].persistence.multiple, o operador Kubernetes não o aplica. Se você omitirpersistence, o operador Kubernetes definiráspec.clusters[].persistence.single.storagecomo16G.
Balanceamento de carga
spec.clusters[].loadBalancerTipo: objeto
Configuração para balanceamento de carga L7 entre
mongod(oumongos) emongot. Este campo é obrigatório sespec.clusters[].replicasfor maior que1.Exatamente um entre
managedouunmanageddeve ser definido.Todas as entradas em
spec.clustersdevem concordar com o modo de balanceador de carga: ou cada entrada defineloadBalancer.managed, cada entrada defineloadBalancer.unmanaged, ou nenhuma entrada defineloadBalancer. O Kubernetes Operator rejeita modos mistos. As implantações de vários clusters suportam apenas o modo gerenciado.spec.clusters[].loadBalancer.managedTipo: objeto
Configura um balanceador de carga Envoy gerenciado pelo operador. Este campo é mutuamente exclusivo com
spec.clusters[].loadBalancer.unmanaged.Para fontes de cluster sharded, você também deve configurar
spec.security.tlsse usar um balanceador de carga gerenciado. O proxy Envoy roteia o tráfego para o shard correto usando SNI, que requer TLS.spec.clusters[].loadBalancer.managed.externalHostnameTipo: string
Nome do host que o proxy Envoy espera para correspondência SNI em solicitações de entrada. O certificado do servidor TLS do Envoy deve incluir este nome do host em seu campo SAN (Nome Alternativo do Assunto).
Para fontes de cluster sharded, o valor deve conter um espaço reservado do
{shardName}, que o Operador Kubernetes expande por shard. Cada shard obtém seu próprio nome de host, e o certificado do servidor Envoy TLS deve incluir todos os nomes de host de shard expandidos em seus SANs. Para fontes de conjunto de réplicas, não use o espaço reservado do{shardName}.Esse campo é obrigatório se o MongoDB for gerenciado externamente (não implantado pelo operador Kubernetes). Se o MongoDB for gerenciado pelo operador no mesmo cluster, omita este campo porque o Operador Kubernetes configura automaticamente o roteamento.
Em implantações de vários clusters, cada entrada de cluster normalmente usa um nome de host distinto. No entanto, o operador Kubernetes permite o compartilhamento de um nome de host entre clusters, por exemplo, se um proxy de failover que abrange zonas de disponibilidade estiver à frente dos proxies Envoy de vários clusters.
spec.clusters[].loadBalancer.managed.routerHostnameTipo: string
Ponto de extremidade que os roteadores
mongosusam para alcançar as instânciasmongotdeste cluster por meio do balanceador de carga Envoy gerenciado, no formatohost:port. O Operador Kubernetes usa o nome do host para correspondência SNI na cadeia de roteamento de nível de cluster, portanto, o certificado do servidor Envoy TLS deve incluir esse nome de host em seus SANs.Este campo é necessário se você usar um balanceador de carga gerenciado com uma origem MongoDB sharded externa (
spec.source.external.shardedCluster). O operador Kubernetes ignora este campo para origens de conjunto de réplicas e para MongoDB gerenciado pelo operador.Ao contrário do
externalHostname, o Operador Kubernetes usa esse valor literalmente, portanto, o valor não deve conter um placeholder{shardName}. Este ponto de extremidade é o ponto de entrada agnóstico de shard paramongos.spec.clusters[].loadBalancer.managed.replicasTipo: inteiro
Número de pods de proxy do Envoy a serem implantados neste cluster do Kubernetes. O valor deve ser
1ou superior. Se omitido, o padrão é1.spec.clusters[].loadBalancer.managed.resourceRequirementsTipo: core/v1/ResourceRequirements
CPU e memória que o contêiner Envoy pode solicitar e ser limitado. Se você especificar esta configuração, o Operador Kubernetes substituirá completamente os padrões.
Se omitido, o Kubernetes Operator usa os seguintes valores padrão:
requests: cpu: 100m memory: 128Mi limits: cpu: 500m memory: 512Mi spec.clusters[].loadBalancer.managed.deploymentTipo: objeto
Substituições que o operador Kubernetes mescla na implantação do Envoy criada pelo operador. Este objeto contém um campo
metadatacomlabelseannotations, e um campospeccom um objeto aplicativo/v1/DeploymentSpec.spec.clusters[].loadBalancer.managed.retryPolicyTipo: objeto
Comportamento de repetição que o proxy Envoy aplica a streams gRPC individuais para as instâncias
mongotupstream. O proxy Envoy envia cada tentativa de repetição para um hostmongotdiferente da tentativa com falha.Se você omitir este campo, o proxy do Envoy tentará novamente com os valores padrão:
2tentativas com um tempo limite por tentativa de60s.spec.clusters[].loadBalancer.managed.retryPolicy.numRetriesTipo: inteiro
Número máximo de tentativas por solicitação. O valor deve ser
1ou superior. Se omitido, o padrão é2, o que permite três tentativas no total para cada solicitação.spec.clusters[].loadBalancer.managed.retryPolicy.perTryTimeoutTipo: string
Tempo limite para cada tentativa individual, incluindo a solicitação original, expressa como uma string de duração (por exemplo,
"30s"). Se omitido, o padrão é"60s".spec.clusters[].loadBalancer.managed.minMongotReadyReplicasTipo: inteiro
Número mínimo de réplicas
mongotprontas que um grupomongot(por exemplo, as instânciasmongotde um shard) deve ter antes que o proxy Envoy direcione o tráfego para ele. Enquanto um grupo estiver abaixo desse limite, o proxy Envoy encaminhará o tráfego destinado a esse grupo para um grupomongotsaudável e marcará as solicitações com o cabeçalhorouted_from_another_shard. Essas solicitações retornam resultados vazios em vez de erros.O valor deve ser
1ou superior. Se omitido, o padrão é1.spec.clusters[].loadBalancer.unmanagedTipo: objeto
Configura um balanceador de carga L7 fornecido pelo usuário (Bring Your Own). Este campo é mutuamente exclusivo com
spec.clusters[].loadBalancer.managed. As implantações de vários clusters não oferecem suporte a balanceadores de carga não gerenciados.spec.clusters[].loadBalancer.unmanaged.endpointTipo: string
O ponto de extremidade do balanceador de carga BYO no formato
host:port. Você deve especificar este campo se configurarspec.clusters[].loadBalancer.unmanaged.Se o operador do Kubernetes gerenciar a implantação do MongoDB (usando
spec.source.mongodbResourceRef), o operador do Kubernetes gravará esse valor na configuraçãomongodcomomongotHostesearchIndexManagementHostAndPort.Para fontes de cluster sharded externas, o valor deve conter um espaço reservado do
{shardName}que o Operador Kubernetes expande por shard, e deve conter mais do que apenas o espaço reservado. Para fontes de conjunto de réplicas externas, o valor não deve conter um espaço reservado{shardName}.
Substituições por shard
spec.clusters[].shardOverridesTipo : array de objetos
Sobrescrições que dimensionam shard específicos dentro desta entrada de cluster de forma diferente do padrão do cluster.
Você pode usar este campo apenas com uma fonte de cluster sharded externa (
spec.source.external.shardedCluster). Cada nome de shard que você referencia deve existir emspec.source.external.shardedCluster.shards[*].shardName, e você pode substituir cada shard no máximo uma vez por entrada de cluster.Cada substituição contém uma lista
shardNamesnecessária (pelo menos uma entrada) e camposreplicas,resourceRequirements,persistence,jvmFlagsestatefulSetopcionais. Se você definirreplicas,resourceRequirements,persistenceoujvmFlagsem uma substituição, eles substituirão o valor do cluster para os shards nomeados.jvmFlagssubstitui o valor do cluster somente se você o definir como uma lista não vazia. O operador Kubernetes mescla profundamentestatefulSetno valor do cluster. Os campos que você não define herdam o valor do cluster.
Seleção da fonte de sincronização
spec.clusters[].syncSourceSelector.matchTagSetsTipo : array de objetos
Lista ordenada de conjuntos de tags de conjunto de réplicas que seleciona os nós de origem de sincronização
mongodpor suas tags de conjunto de réplicas. O operador do Kubernetes passa a lista para a configuraçãomongot.mongotsincroniza a partir dos nós que o primeiro conjunto de tags correspondente seleciona e prefere nós secundários.Cada entrada é um mapa de nomes de tags para valores de tags. Um documento vazio (
{}) corresponde a qualquer nó, para que você possa anexar uma entrada{}à direita como um fallback de correspondência se nenhum conjunto de tags anterior corresponder. Você pode especificar no máximo 50 entradas.
JVM Flags
spec.clusters[].jvmFlagsTipo: array de strings
Sinalizadores JVM passados para o processo
mongot. Cada sinalizador deve começar com-X,-XX:ou-D, não deve conter espaços e pode conter apenas caracteres alfanuméricos e os caracteres.,_,+,:,-e=. O operador Kubernetes rejeita sinalizadores que não correspondem a essas regras.Se você não especificar
-Xmsou-Xmxneste campo, o Operador Kubernetes calculará automaticamente o tamanho do heap configurando ambos para metade despec.clusters[].resourceRequirements.requests.memory. Se você não especificar os requisitos de recursos, o Kubernetes operador usará um padrão de 4Solicitação de memória Gi, gerando aproximadamente-Xmx2048m -Xms2048m. O Operador Kubernetes sempre anexa os sinalizadores que você fornece após os sinalizadores calculados pelo operador.
Substituições de StatefulSet
spec.clusters[].statefulSetTipo: objeto
Substituições para o StatefulSet que o operador do Kubernetes cria para implantar pods
mongot. Este objeto contém um campometadatacomlabelseannotations, e um campospeccom um objeto apps/v1/StatefulSetSpec. O operador do Kubernetes sempre aplica as substituições por último, para que elas substituam as configurações que o operador do Kubernetes calcula.Observação
Não defina requisitos de recursos ou configurações de persistência usando
spec.clusters[].statefulSet. Em vez disso, utilize os camposspec.clusters[].resourceRequirementsespec.clusters[].persistencerespectivamente.
Configurações avançadas do mongot
spec.clusters[].advancedMongotConfigsTipo: objeto
Configurações avançadas de
mongotpara esta entrada de cluster. O operador Kubernetes renderiza o valor literalmente sob a chaveadvancedConfigsdo arquivo de configuraçãomongot, sem lê-lo ou modificá-lo. Use este campo apenas para configurações demongotque o recursoMongoDBSearchnão expõe como campos de primeira classe.
Configurações de segurança
spec.securityTipo: objeto
Configurações de segurança para
mongotservidor de escuta.spec.security.tlsTipo: objeto
Configurações de TLS para
mongot. Se omitido, omongotnão utilizará TLS para conexões recebidas.Se você usar um balanceador de carga gerenciado com uma fonte de cluster sharded, este campo será necessário. O proxy Envoy roteia o tráfego para o shard correto usando SNI, que depende do TLS ClientHello. O operador do Kubernetes falha na reconciliação se você omitir
spec.security.tlsnesta configuração.spec.security.tls.certificateKeySecretRef.nameTipo: string
Descontinuado desde a versão 1.8.0. : Em vez disso, use
spec.security.tls.certsSecretPrefix.Nome do segredo TLS no mesmo namespace que contém a chave privada (
tls.key) e o certificado (tls.crt). O Operador Kubernetes ainda suporta este campo para implantações de conjunto de réplicas para compatibilidade com versões anteriores. Para implantações de cluster sharded, o Operador Kubernetes rejeita este campo durante a validação, porque uma única referência secreta não pode cobrir certificados por shard.spec.security.tls.certsSecretPrefixTipo: string
Prefixo que o operador Kubernetes usa para derivar nomes de secrets TLS por convenção de nomenclatura. Se você definir este campo, o operador Kubernetes procurará secrets seguindo estes padrões:
ComponentePadrão de nome secretoCertificado de servidor
mongotdo conjunto de réplicas{certsSecretPrefix}-{name}-search-certCertificado
mongotsharded (por cluster e shard){certsSecretPrefix}-{name}-search-{clusterIndex}-{shardName}-certCertificado de servidor de balanceador de carga gerenciado (por cluster, todas as topologias)
{certsSecretPrefix}-{name}-search-lb-{clusterIndex}-certCertificado de cliente balanceador de carga gerenciado
{certsSecretPrefix}-{name}-search-lb-{clusterIndex}-client-certO operador Kubernetes usa um certificado de servidor de balanceador de carga gerenciado por cluster para todas as topologias. Para clusters sharded, os SANs desse certificado devem incluir todos os nomes de host de shard expandidos de
externalHostnamee orouterHostname.O Operador Kubernetes resolve o nome secreto do certificado do servidor
mongotna seguinte ordem:Se você definir
spec.security.tls.certificateKeySecretRef.name, o operador Kubernetes usará esse nome.Se você definir
certsSecretPrefix, o Kubernetes operador usará os padrões de nomenclatura na tabela anterior.Se você não definir nenhum dos campos, o operador Kubernetes usa o nome padrão
{name}-search-certpara implantações de conjunto de réplicas, ou o padrão por shard padrão{name}-search-{clusterIndex}-{shardName}-certpara implantações sharded.
Se você não definir
certsSecretPrefix, os certificados do balanceador de carga gerenciado também usarão nomes padrão: o operador Kubernetes monta{name}-search-lb-{clusterIndex}-certpara o certificado do servidor e{name}-search-lb-{clusterIndex}-client-certpara o certificado do cliente.spec.security.tls.keyFilePasswordSecretRefTipo: objeto
Segredo que contém a senha que descriptografa a chave privada do servidor criptografada por senha no segredo do certificado TLS. O segredo deve conter a senha sob a chave
keyFilePassword. Omita este campo se a chave privada do servidor não estiver criptografada.
Configurações de registro
spec.logLevelTipo: string
Verbosidade dos registros do
mongot. O valor pode ser um dos seguintes:TRACEDEBUGINFOWARNERROR
Se omitido, o padrão é
INFO.
Configurações de métricas
spec.observability.prometheusTipo: objeto
Configuração para o ponto de extremidade de métricas Prometheus em
mongot. Se você omitir este campo, o operador do Kubernetes habilitará o ponto de extremidade de métricas na porta padrão9946.spec.observability.prometheus.modeTipo: string
Ativa ou desativa o ponto de extremidade de métricas do Prometheus em
mongot. O valor pode serenabledoudisabled. Se omitido, o padrão éenabled.spec.observability.prometheus.portTipo: inteiro
Porta na qual ativar o ponto de extremidade de métricas Prometheus. Por padrão, o ponto de extremidade de métricas Prometheus está habilitado na porta
9946.spec.observability.metricsForwarderTipo: objeto
Configuração para o encaminhador de métricas, uma implantação que o operador Kubernetes cria para raspar as métricas do Prometheus
mongote encaminhá-las para o MongoDB Ops Manager.spec.observability.metricsForwarder.modeTipo: string
Se o operador Kubernetes cria o encaminhador de métricas. O valor pode ser um dos seguintes:
auto— O Operador Kubernetes cria o encaminhador para fontes gerenciadas pelo operadorMongoDB(com suporte do Ops Manager) e para fontes externas somente se você definirspec.observability.metricsForwarder.opsManager. Para fontesMongoDBCommunity, o Operador Kubernetes não cria o encaminhador.enabled— O Operador Kubernetes sempre cria o encaminhador. Se a origem for um recursoMongoDBCommunity, o Operador Kubernetes relata um erro porque o encaminhador não é compatível com origensMongoDBCommunity.disabled— O operador do Kubernetes nunca cria o encaminhador.
Se omitido, o padrão é
auto.Os modos
enabledeautoexigem que o ponto de extremidade do Prometheus (spec.observability.prometheus) esteja habilitado. Se você desabilitar o ponto de extremidade, o Kubernetes Operator relatará um status de encaminhador de métricasInvalid.spec.observability.metricsForwarder.resourceRequirementsTipo: core/v1/ResourceRequirements
CPU e memória que o contêiner do encaminhador de métricas pode solicitar e ter como limite. Se omitido, o operador do Kubernetes usa solicitações de
cpu: 100mememory: 128Mie limites decpu: 250mememory: 256Mi.spec.observability.metricsForwarder.deploymentTipo: objeto
Substituições que o operador Kubernetes mescla na implantação do encaminhador de métricas criado pelo operador. Este objeto contém um campo
metadatacomlabelseannotations, e um campospeccom um objeto aplicativo/v1/DeploymentSpec.spec.observability.metricsForwarder.opsManagerTipo: objeto
Projeto e credenciais do MongoDB Ops Manager para os quais o encaminhador de métricas envia métricas. Se omitido, o operador Kubernetes deriva o projeto e as credenciais da configuração de conexão do recurso MongoDB de origem. Defina este campo para fontes externas do MongoDB, onde não existe nenhum recurso MongoDB de origem.
Se você definir este campo, deverá definir
agentCredentials.name(o Secret que contém a chave de API do agente do Ops Manager) eprojectConfigMapRef.name(o ConfigMap que contém a configuração do projeto do Ops Manager).
Configurações de embedding automatizado
Importante
A incorporação automatizada está disponível como um recurso de visualização apenas para a implantação do MongoDB Community Edition. O recurso e a documentação correspondente podem mudar a qualquer momento durante o período de Pré-visualização. Para **aprender** mais, consulte Visualizar recursos.
spec.autoEmbeddingTipo: objeto
Configuração para embedding automático de dados de texto em sua coleção.
spec.autoEmbedding.embeddingModelAPIKeySecret.nameTipo: string
Nome do segredo que contém as chaves API do modelo de embedding que
mongotdeve usar para gerar embeddings no momento do índice e da query. O segredo deve conter a chave de tempo de índice sob a chaveindexing-keye a chave de tempo de query sob a chavequery-key.Você pode omitir
embeddingModelAPIKeySecretsomente sespec.autoEmbedding.providerEndpointapontar para o serviço de embedding Voyage AI autohospedado e gerenciado pelo operador. Caso contrário, o operador Kubernetes o exige.spec.autoEmbedding.providerEndpointTipo: string
URL do ponto de extremidade do modelo de embedding para gerar embeddings.
Configurações de sinalizador de recurso
spec.featureFlagsTipo: objeto
Sinalizadores de recursos para
mongot. Se você definir um sinalizador comotrue, o operador do Kubernetes o renderizará na configuraçãomongot. Se você omitir o objetofeatureFlagsou um sinalizador individual, o padrão de esquema para esse sinalizador será aplicado (trueparaenableOverloadRetrySignal).spec.featureFlags.enableOverloadRetrySignalTipo: booleano
Ativa o sinal de nova tentativa de sobrecarga
mongot. Se você ativar esse sinalizador,mongotsinalizará o descarregamento de carga para proxies upstream (como o balanceador de carga Envoy gerenciado pelo operador) por meio de respostas gRPCRESOURCE_EXHAUSTED. Os proxies, então, tentam novamente a solicitação em outra instânciamongot.Se omitido, o padrão é
true.
Outras configurações
spec.versionTipo: string
Versão da imagem do Docker
mongodb-search. Se omitido, o Kubernetes operador usará a versão padrão do MongoDB Search incluída nele. Você pode definir a versão explicitamente para evitar atualizações automáticas ao atualizar o Kubernetes Operator.
Campos de status
O Operador Kubernetes relata informações de status no campo status do recurso MongoDBSearch.
status.phaseTipo: string
Fase atual do recurso
MongoDBSearch. Os valores possíveis incluemPending,Running,Failed,Disabled,UpdatedeUnsupported.status.messageTipo: string
Mensagem legível por humanos com detalhes sobre o status atual.
status.lastTransitionTipo: string
Carimbo de data/hora da última transição de
status.phase.status.observedGenerationTipo: inteiro
Geração do recurso
MongoDBSearchque o operador Kubernetes processou pela última vez.status.warningsTipo: array de strings
Avisos que o Kubernetes operador relata para o recurso.
status.versionTipo: string
Versão do MongoDB Search (
mongot) que o operador do Kubernetes reconciliou.status.resourcesNotReadyTipo : array de objetos
Recursos dependentes do Kubernetes que ainda não estão prontos. Cada entrada relata o
kinde onamedo recurso e ummessageopcional e uma lista deerrors.status.pvcTipo : array de objetos
Estado das reivindicações de volume persistente dos
mongotStatefulSets. Cada entrada relata ophasee ostatefulsetNameaos quais as reivindicações pertencem.status.loadBalancerTipo: objeto
Status do balanceador de carga gerenciado pelo operador (Envoy). Este campo está presente somente se você definir
spec.clusters[].loadBalancer.managed. Para implantações de vários cluster, o Operador Kubernetes relata a pior fase em todas as implantações do Envoy de todos os cluster.status.loadBalancer.phaseTipo: string
Fase atual do balanceador de carga gerenciado. Os valores possíveis incluem
Pending,RunningeFailed. Este campo está visível na saídakubectl getna colunaLOADBALANCER.status.loadBalancer.messageTipo: string
Mensagem legível por humanos com detalhes sobre o status do balanceador de carga gerenciado.
status.metricsForwarderTipo: objeto
Status do encaminhador de métricas.
status.metricsForwarder.phaseTipo: string
Fase atual do encaminhador de métricas. Os valores possíveis incluem
Pending,RunningeFailed. A fase relataDisabledse você definirspec.observability.metricsForwarder.modecomodisabled. Este campo está visível na saídakubectl getna colunaMETRICSFORWARDER.status.metricsForwarder.messageTipo: string
Mensagem legível por humanos com detalhes sobre o status do encaminhador de métricas.