Você pode implantar o MongoDB Search e a pesquisa vetorial junto com o MongoDB 8.2 ou posterior usando o MongoDB Controllers for Kubernetes operador.
Exemplo de especificação de recurso
O exemplo a seguir mostra as configurações dentro do objeto spec para o sistema do MongoDB Search e do Vector Search . Para saber mais sobre essas configurações, consulte as Configurações obrigatórias e Configurações opcionais.
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 (por exemplo, source.mongodbResourceRef e source.external). Consulte as descrições de campo abaixo para combinações válidas.
Exemplo
1 spec: 2 source: 3 mongodbResourceRef: 4 name: mdb 5 external: 6 hostAndPorts: 7 - mdb-rs-external-0.example.com:27017 8 - mdb-rs-external-1.example.com:27017 9 - mdb-rs-external-2.example.com:27017 10 shardedCluster: 11 router: 12 hosts: 13 - mongos1.example.com:27017 14 - mongos2.example.com:27017 15 shards: 16 - shardName: shard-0 17 hosts: 18 - shard0-node1.example.com:27018 19 - shard0-node2.example.com:27018 20 - shardName: shard-1 21 hosts: 22 - shard1-node1.example.com:27018 23 - shard1-node2.example.com:27018 24 tls: 25 ca: 26 name: mdbc-rs-ca 27 username: search-sync-source 28 passwordSecretRef: 29 name: mdbc-rs-search-sync-source-password 30 key: password 31 # x509 authentication (mutually exclusive with 32 # username/passwordSecretRef) 33 x509: 34 clientCertificateSecretRef: 35 name: mongot-x509-client-cert 36 replicas: 2 37 loadBalancer: 38 # Option 1: Operator-managed Envoy load balancer 39 managed: 40 externalHostname: "search.apps.example.com" 41 resourceRequirements: 42 requests: 43 cpu: "100m" 44 memory: 128Mi 45 limits: 46 cpu: "500m" 47 memory: 512Mi 48 deployment: 49 spec: 50 template: 51 spec: 52 nodeSelector: 53 kubernetes.io/os: linux 54 # Option 2: User-provided (BYO) load balancer 55 # (mutually exclusive with managed) 56 unmanaged: 57 endpoint: "search-lb.corp.example.com:443" 58 security: 59 tls: 60 certificateKeySecretRef: 61 name: mdbs-tls-secret 62 certsSecretPrefix: my-prefix 63 resourceRequirements: 64 limits: 65 cpu: "3" 66 memory: 5Gi 67 requests: 68 cpu: "2" 69 memory: 3Gi 70 persistence: 71 single: 72 storage: 16Gi 73 storageClass: standard 74 version: "0.64.0" 75 statefulSet: 76 spec: 77 template: 78 spec: 79 nodeSelector: 80 kubernetes.io/os: linux 81 jvmFlags: 82 - -Xms2g 83 - -Xmx2g 84 autoEmbedding: 85 embeddingModelAPIKeySecret: 86 name: embedding-model-api-query-key 87 providerEndpoint: https://ai.mongodb.com/v1/embeddings 88 logLevel: INFO 89 prometheus: {}
Configurações necessárias
Esta seção descreve as configurações necessárias para implantar o recurso MongoDB pesquisa e pesquisa vetorial. Se você definir apenas as configurações necessárias na Definição de Recurso Personalizado (CRD), o Operador do MongoDB para Kubernetes usará os padrões para todas as configurações opcionais para configurar o 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 MongoDBSearch deve ser criado. Para aproveitar a configuração automática do MongoDBSearch e dos recursos
MongoDBouMongoDBCommunity, o recurso MongoDBSearch deve ser criado no mesmo namespace que o recursoMongoDBouMongoDBCommunity.
metadata.nameTipo: string
Identificador único do recurso MongoDBSearch. O nome do recurso pode ter no máximo 44 caracteres.
Configurações opcionais
Esta seção descreve as configurações opcionais do recurso MongoDB pesquisa e pesquisa vetorial. Se você omitir as configurações opcionais e definir apenas as configurações necessárias no CRD, o operador do MongoDB para Kubernetes usará os padrões para todas as configurações opcionais para configurar o MongoDBSearch.
Configurações para configurar a 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 de MongoDBSearch
O recurso MongoDBSearch deve estar sempre conectado a uma implantação do MongoDB . Se você implantou usando o Operador Kubernetes com
MongoDBouMongoDBCommunityCRD 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.nameno MongoDBSearch, no mesmo namespace.Encontre o segredo da senha do usuário
mongotno segredo<MongoDBSearch.metadata.name>-search-sync-source-password.
spec.source.mongodbResourceRef.nameTipo: string
Nome do
MongoDBouMongoDBCommunityrecurso a ser associado a este recurso do MongoDB Search e pesquisa vetorial. O Operador Kubernetes oferece suporte a conjuntos de réplicas e clusters fragmentados. Você não pode ter mais de um recurso MongoDBSearch referenciando o mesmo recursoMongoDBouMongoDBCommunity. Se você especificar um nome diferente, deverá ponto explicitamente para oMongoDBouMongoDBCommunityem que deseja ativar o MongoDB Search e a pesquisa vetorial.Se você fizer referência a um recurso de cluster
MongoDB, o Kubernetes operador descobrirá automaticamente a topologia do fragmento (nomes dos fragmentos, membros do conjunto de réplicas,mongosroteadores) e criará automaticamente omongotStatefulSets por fragmento. Você não precisa realizar nenhuma configuração externa adicional.Use esse campo somente se o recurso
MongoDBouMongoDBCommunityestiver implantado no mesmo cluster do Kubernetes e estiver no mesmo namespace que o recurso MongoDBSearch. Se você definir este campo, o operador Kubernetes automaticamente:Define connection strings adequadas para o banco de dados.
Reconfigura implantações de banco de dados MongoDB definindo os parâmetros necessários para habilitar a funcionalidade de pesquisa e configura os endereços dos pods de pesquisa.
Se o seu banco de dados for implantado fora do Kubernetes ou estiver em um namespace diferente, utilize o
spec.externalpara configurar a conexão com o banco de dados. Este campo é mutuamente exclusivo comspec.external.Se omitido, o Operador Kubernetes procura um recurso
MongoDBouMongoDBCommunitycom o mesmo nome que este recurso MongoDBSearch.
Configuração para configurar o usuário mongot
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>-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.
Configurações para autenticação x509
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.passwordSecretRefespec.source.username. 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 do cliente (obrigatório)tls.key— Chave privada (obrigatório)tls.keyFilePassword- Senha para a chave privada (opcional)
Você deve especificar este campo se definir
spec.source.x509.Exemplo
spec: source: x509: clientCertificateSecretRef: name: mongot-x509-client-cert
Configurações para conexão ao MongoDB externo
As configurações a seguir são necessárias apenas para configurar uma conexão com um MongoDB implantação externo.
spec.source.externalTipo: objeto
Configurações que descrevem a fonte de dados externa . Este objeto descreve as configurações do recurso MongoDB Search e Vector Search para se conectar a um MongoDB externo. Essas configurações devem ser especificadas somente se você quiser se conectar a um MongoDB externo que não tenha sido implantado usando o Kubernetes Operator. Se especificadas, estas configurações substituem as configurações para
spec.source.mongodbResourceRef.name. Se você usou o Operador Kubernetes para instalar o MongoDB no mesmo cluster, essas configurações são opcionais.
Configurações para conexão com um conjunto de réplicas externas
spec.source.external.hostAndPortsTipo: array de strings
Lista de nomes de hosts e portas do conjunto de réplicas externas. Esta é uma lista de sementes de host para o conjunto de réplicas MongoDB . O
mongotse conecta ao banco de dados em um modo de conjunto de réplicas e obtém a lista de todos os outros nós usandodb.hello().Este campo é mutuamente exclusivo com
spec.source.external.shardedCluster. UsehostAndPortspara fontes de conjunto de réplicas eshardedClusterpara fontes de cluster fragmentado .Exemplo
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
Configurações de TLS que o
mongotdeve usar ao conectar ao banco de dados MongoDB externo.
spec.source.external.tls.ca.nameTipo: string
Nome do segredo que contém a cadeia confiável das autoridades de certificação que emitiram o certificado TLS usado pelos nós
mongod.Exemplo
spec: source: external: tls: ca: name: trusted-ca Você deve especificar o certificado (ou cadeia de certificados) na chave
ca.crtneste segredo.Exemplo
name: Secret apiVersion: v1 metadata: name: trusted-ca data: ca.crt: | -----BEGIN CERTIFICATE----- MIIDBTCCAe2gAwIBAgIIH3EOUAGAsx0wDQYJKoZIhvcNAQELBQAwFTETMBEGA1UE [...] U/4rN8Ias/FONYFRtGfs9uXHmo2MP04BF+9ED2dlbNDUbat+6XCozLJj98nI4VEi qaV3JrVFHTgN -----END CERTIFICATE-----
Configurações para conexão a um cluster fragmentado externo
As configurações a seguir são necessárias apenas para configurar uma conexão com um cluster fragmentado externo do MongoDB . Elas estendem as configurações spec.source.external existentes.
Observação
spec.source.external.hostAndPorts (para conjuntos de réplicas) e spec.source.external.shardedCluster são mutuamente exclusivos. Especifique apenas um deles.
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.Use isso somente se o cluster fragmentado MongoDB for implantado fora do Kubernetes e não for gerenciado pelo Kubernetes operador. Para clusters fragmentados gerenciados pelo operador implantados com o CRD do
MongoDB, utilize ospec.source.mongodbResourceRefem vez disso. O operador Kubernetes descobre automaticamente a topologia de fragmento.Exemplo
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
Configuração para as instâncias do
mongos(roteador) do cluster fragmentado externo.
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.Exemplo
router: hosts: - "mongos1.external:27017" - "mongos2.external:27017"
spec.source.external.shardedCluster.shardsTipo : array de objetos
Lista de todos os fragmentos no cluster MongoDB externo. Cada entrada descreve o conjunto de réplicas de um fragmento. O Operador Kubernetes cria um
mongotStatefulSet para cada fragmento, onde cada StatefulSet contém o número de pods especificados nospec.replicas. Especifique pelo menos uma entrada de fragmento.
spec.source.external.shardedCluster.shards[*].shardNameTipo: string
O nome lógico do fragmento. O Operador do Kubernetes utiliza este nome para nomear recursos do Kubernetes (StatefulSets, Services, Secrets). O valor pode ser diferente do nome do fragmento MongoDB.
Restrições de nomeação:
Deve ser exclusivo em todos os fragmentos.
Deve estar em conformidade com as regras de nome de subdomínio do Kubernetes DNS (RFC 1123), que permitem caracteres alfanuméricos minúsculos, hífen (
-) e ponto (.), e exigem que o nome comece com um caractere alfabético e termine com um caractere alfanumérico. Sublinhados (_) não são permitidos.O comprimento combinado de
metadata.nameeshardNamedeve ter menos de 50 caracteres.
Exemplo
shards: - shardName: "shard-0" hosts: - "shard0-node1.external:27018"
spec.source.external.shardedCluster.shards[*].hostsTipo: array de strings
Lista de pontos de extremidade dos membros do conjunto de réplicas do
mongodpara este fragmento no formatohost:port. As instânciasmongotreplicam dados desses hosts. Especifique pelo menos uma entrada.Cada conjunto de réplicas (fragmento) tem seu próprio grupo de instâncias
mongot, que fornecem dados somente desse conjunto de réplicas. Fragmentos diferentes nunca compartilham as mesmas instânciasmongot.Exemplo
shards: - shardName: "shard-0" hosts: - "shard0-node1.external:27018" - "shard0-node2.external:27018" - "shard0-node3.external:27018"
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.
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 segredo pode ser do tipokubernetes.io/tls(que é emitido pelo cert-manager) ou pode ser criado manualmente.O Operador Kubernetes ainda suporta este campo para implantações de conjunto de réplicas para compatibilidade com versões anteriores. No entanto:
Para sistemas de cluster fragmentado , o Operador Kubernetes rejeita este campo durante a validação. Em vez disso, use
spec.security.tls.certsSecretPrefix, porque uma única referência secreta não pode cobrir certificados por fragmento.Se você especificar
certificateKeySecretRefecertsSecretPrefix,certificateKeySecretRefterá precedência para implantações do conjunto de réplicas.
Para novas implantações, utilize o
spec.security.tls.certsSecretPrefixmesmo para conjuntos de réplica.
spec.security.tls.certsSecretPrefixTipo: string
Prefixo que o operador Kubernetes usa para derivar nomes secretos TLS por convenção de nomenclatura. Se você definir esse campo}, o operador Kubernetes procurará segredos seguindo esses padrões em vez de exigir referências secretas explícitas para cada componente:
ComponentePadrão de nome secretoCertificado de servidor
mongotdo conjunto de réplicas{certsSecretPrefix}-{name}-search-certCertificado
mongotfragmentado (por fragmento){certsSecretPrefix}-{name}-search-0-{shardName}-certCertificado de servidor de balanceador de carga gerenciado
{certsSecretPrefix}-{name}-search-lb-0-certCertificado de cliente balanceador de carga gerenciado
{certsSecretPrefix}-{name}-search-lb-0-client-certOnde:
{name}émetadata.namedo recurso MongoDBSearch{shardName}é o valor despec.source.external.shardedCluster.shards[*].shardName
Se omitido, este campo padroniza para uma string vazia e o Operador Kubernetes utiliza
spec.security.tls.certificateKeySecretRefem vez disso.Observação
Para implantações de cluster fragmentado, você deve utilizar o
certsSecretPrefixao invés decertificateKeySecretRef. O Operador Kubernetes rejeitacertificateKeySecretRefpara topologias fragmentadas porque uma única referência secreta não pode cobrir certificados por fragmento.Exemplo
spec: security: tls: certsSecretPrefix: my-prefix
Configurações para várias instâncias do Mongot
spec.replicasTipo: inteiro
Número de
mongotpods a serem implementados. Para uma origem do conjunto de réplicas, este é o número total demongotpods. Para uma origem de cluster fragmentado , este é o número demongotpods por fragmento.Se
spec.replicasfor maior que1, você também deverá configurarspec.loadBalancerpara rotear o tráfego entremongode as múltiplas instânciasmongot.Se omitido, o padrão é
1.Exemplo
spec: replicas: 2
Configurações para balanceamento de carga
spec.loadBalancerTipo: objeto
Configuração para balanceamento de carga L7 entre
mongod(oumongos) emongot. Este campo é obrigatório sespec.replicasfor maior que1. Sespec.replicasfor1, este campo será opcional. Você pode configurar um balanceador de carga mesmo para uma única instância domongotpara preparar-se para o dimensionamento posterior.Exatamente um entre
managedouunmanageddeve ser definido.O balanceador de carga afeta quais certificados TLS os clientes
mongodveem e quais nomes de host esses certificados devem conter:Sem um balanceador de carga, o
mongodconecta diretamente aomongot. O certificado TLS apresentado amongodé o próprio certificado demongot. Se o cluster MongoDB estiver fora do Kubernetes, o serviçomongotserá exposto em um domínio externo. Você deve incluir esse domínio externo no campo SAN ( nome alternativo do assunto ) do certificado TLSmongot.Com um balanceador de carga gerenciado (
spec.loadBalancer.managed), o proxy Envoy é o único componente que se conecta diretamente aomongot. O Envoy atingemongotpods usando seus FQDNs de serviço headless interno:conjunto de réplicas:
<pod>.<name>-search-svc.<ns>.svc.cluster.localcluster fragmentado:
<pod>.<name>-search-0-<shard>-svc.<ns>.svc.cluster.local
Emita o certificado TLS
mongotcom esses domínios locais do cluster no campo SAN. Você pode usar um certificado curinga para evitar a reemissão de certificados quando o número demongotpods for alterado. Os processosmongodexternos veem o certificado TLS do proxy Envoy, portanto, inclua domínios externos nos SANs do certificado Envoy, não no certificadomongot.
Dica
Habilite um balanceador de carga gerenciado mesmo se você implantar inicialmente um único pod do
mongot. Com o balanceador de carga em vigor, os domínios em seus certificados TLS permanecerão estáveis se você dimensionarspec.replicasmais tarde, pois o balanceador de carga já está presente entremongodemongot.
spec.loadBalancer.managedTipo: objeto
Configura um balanceador de carga Envoy gerenciado pelo operador. O Operador do Kubernetes implementa e gerencia o proxy Envoy com roteamento correto, mTLS e fixação de fluxo HTTP/2+gRPC. Defina este campo como um objeto vazio (
{}) para usar os padrões.Este campo é mutuamente exclusivo com
spec.loadBalancer.unmanaged.Exemplo
spec: loadBalancer: managed: {}
spec.loadBalancer.managed.externalHostnameTipo: string
Nome de host que o proxy Envoy espera para correspondência SNI nas solicitações recebidas. O Kubernetes operador usa esse valor para configurar as regras de roteamento que correspondam ao campo TLS SNI das conexões
mongodde entrada. O certificado do servidor Envoy TLS deve incluir este nome de host em seu campo SAN ( nome alternativo do assunto ).Para clusters fragmentados, o valor deve conter um espaço reservado do
{shardName}que o Operador Kubernetes expande por fragmento. Cada fragmento recebe um nome de host exclusivo, e o certificado do servidor Envoy TLS deve incluir todos os nomes de host de fragmentos expandidos em seus SANs. Você pode usar um certificado curinga para cobrir todos os fragmentos com um único certificado e evitar a reemissão quando os fragmentos forem adicionados.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.
Exemplo
# Replica set with external MongoDB spec: loadBalancer: managed: externalHostname: "search.apps.example.com" # Sharded cluster with external MongoDB spec: loadBalancer: managed: externalHostname: "{shardName}.search.example.com"
spec.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 Exemplo
spec: loadBalancer: managed: resourceRequirements: requests: cpu: "200m" memory: "256Mi" limits: cpu: "1" memory: "1Gi"
spec.loadBalancer.managed.deploymentTipo: objeto
Substituições que o operador Kubernetes mescla na Implantação do Envoy criada pelo operador. Segue a mesma convenção que
spec.statefulSetnos recursos do MongoDB . Se omitido, o Kubernetes Operator usa padrões para a implantação Envoy.Este objeto contém dois campos:
metadata— contémlabelseannotationscampos que o Operador Kubernetes mescla nos metadados da implantação do Envoy.spec— um objeto apps/v1/DeploymentSpec. O Operador Kubernetes mescla essas substituições na especificação da implantação do Envoy.
Exemplo
spec: loadBalancer: managed: deployment: spec: template: spec: nodeSelector: kubernetes.io/os: linux
spec.loadBalancer.unmanagedTipo: objeto
Configura um balanceador de carga L7 fornecido pelo usuário. Você é responsável por implantar e configurar o balanceador de carga externamente.
Este campo é mutuamente exclusivo com
spec.loadBalancer.managed.
spec.loadBalancer.unmanaged.endpointTipo: string
O ponto de extremidade do balanceador de carga BYO no formato
host:port. O Operador do Kubernetes grava este valor na configuração domongodcomomongotHostesearchIndexManagementHostAndPort.Esse campo é obrigatório somente quando o Operador Kubernetes gerencia a implantação do MongoDB (usando
spec.source.mongodbResourceRef), pois o Operador Kubernetes precisa do ponto de extremidade para configurar os parâmetrosmongod. Se tanto o balanceador de carga quanto o MongoDB forem externos (não gerenciados pelo Operador Kubernetes), esse campo não será necessário porque você mesmo configura os parâmetrosmongod.Para clusters fragmentados, o valor deve conter um espaço reservado do
{shardName}que o Operador Kubernetes expande por fragmento.Exemplo
# Replica set example spec: loadBalancer: unmanaged: endpoint: "search-lb.corp.example.com:443" # Sharded cluster example spec: loadBalancer: unmanaged: endpoint: "{shardName}-lb.corp.example.com:443"
Configurações para provisionamento de recursos
spec.resourceRequirementsTipo: core/v1/ResourceRequirements
CPU e memória para as quais o container
mongodb-searchpode solicitar e ser limitado. Recomendamos usar esse campo para personalizar as alocações de recursos em vez de substituí-lo porspec.statefulSet.Se você não substituir o tamanho de heap JVM no
spec.jvmFlags, o Operador Kubernetes definirá o tamanho de heap padrão (-Xmx) para 50% da memória disponível para o podmongot. Ajustespec.resourceRequirementsadequadamente para controlar os recursos do pod e o tamanho do heap da JVM .Se omitido, o Kubernetes Operator usa os seguintes valores padrão:
requests: cpu: 2 memory: 2G
spec.resourceRequirements.limitsTipo: objeto
Limite superior no recurso, CPU e memória, que o contêiner do
mongodb-searchpode consumir. Por padrão, não há limites definidos. Se omitido, o pod não será restrito e, portanto, pode usar todos os recursos no nó. Recomendamos definir limites com base em seu volume de trabalho.
spec.resourceRequirements.requestsTipo: objeto
Quantidade de CPU e memória solicitada para o contêiner
mongodb-search. Se omitido, o Kubernetes Operator usa os seguintes valores padrão:requests: cpu: 2 memory: 2G
spec.persistence.singleTipo: objeto
Configuração de armazenamento para o volume de persistência do MongoDB Search e Vector Search onde os índices do MongoDB Search e Vector Search são armazenados. Cada instância de pesquisa (pod) tem seu próprio armazenamento independente para manter índices, que não é compartilhado com o banco de dados MongoDB . Somente metadados de índice (definições) são armazenados no próprio banco de dados .
EscalarTipo de DadosDescriçãolabelSelectorstring
Tag usada para vincular volumes montados a diretórios.
storagestring
Tamanho mínimo do volume persistente que deve ser montado. Esse valor é expresso como um número inteiro seguido por uma unidade de armazenamento na notação JEDEC.
O valor padrão é 16Gi.
Por exemplo, se o conjunto de réplicas exigir 60 gigabytes de espaço de armazenamento, defina esse valor como
60Gi.storageClassstring
Tipo de armazenamento especificado em uma declaração de volume persistente. Você pode criar esse tipo de armazenamento como um objeto StorageClass antes de usá-lo nesta especificação de objeto.
Certifique-se de definir a StorageClass
reclaimPolicycomo Retain. Isso garante que os dados sejam mantidos quando uma declaração de volume persistente for removida.O MongoDBSearch oferece suporte apenas ao campo de persistência
single. Se omitido, o Operador Kubernetes definespec.persistence.single.storagecomo10GB.
Configurações para 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 para métricas
spec.prometheusTipo: objeto
Disponível apenas na v1.6 e posterior.
Configuração para ativar o ponto de extremidade de métricas Prometheus. Se omitido, o ponto de extremidade de métricas em
mongotserá desabilitado. Para habilitar o ponto de extremidade de métricas Prometheus na porta padrão (9946), especifique um objeto{}vazio no campospec.prometheus. Para alterar a porta, defina-a no campospec.prometheus.port.
spec.prometheus.portTipo: string
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.
Configurações para incorporação automática
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 incorporação automática de dados de texto em sua coleção.
spec.autoEmbedding.embeddingModelAPIKeySecretTipo: objeto
Configuração para as chaves API do fornecedor do modelo de incorporação. Para habilitar a Incorporação Automática, você deve criar duas chaves, uma para gerar incorporações no momento do índice para os dados da sua coleção e outra para gerar incorporações no momento da query para o texto da query. Se você ainda não tiver as chaves, recomendamos que crie chaves a partir de dois projetos do Atlas . Para saber mais sobre como criar chaves para os projetos do Atlas a partir da IU do Atlas, consulte Gerenciar chaves de API.
spec.autoEmbedding.embeddingModelAPIKeySecret.nameTipo: string
Nome do segredo que contém as chaves API do modelo de incorporação que
mongotdeve usar para gerar incorporações no momento do índice e da query.
spec.autoEmbedding.providerEndpointTipo: string
URL de ponto de extremidade do modelo de incorporação para gerar incorporações. O valor varia dependendo se você cria as chaves a partir da IU do Atlas (recomendado) ou diretamente do serviço de incorporação (Voyage IA). Para chaves criadas a partir de:
IU do Atlas, o valor é
https://ai.mongodb.com/v1/embeddings(padrão)Voyage IA, o valor é
https://api.voyageai.com/v1/embeddings
Definições para configuração JVM
spec.jvmFlagsTipo: array de strings
Sinalizadores JVM passados para o processo
mongot. O Operador Kubernetes inclui os sinalizadores sem modificação no comando de inicialização domongotutilizando--jvm-flags "<all flags space-separated>".Se você não especificar
-Xmsou-Xmxneste campo, o Operador Kubernetes calculará automaticamente o tamanho do heap configurando ambos para metade despec.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.Se você fornecer seus próprios valores
-Xmsou-Xmx, o Operador Kubernetes os utilizará e não substituirá os valores. O operador Kubernetes sempre anexa os sinalizadores fornecidos após os sinalizadores calculados pelo operador.Para saber mais, consulte Dimensionamento de hardware para mongot.
Exemplo
spec: jvmFlags: - -Xms2g - -Xmx2g
Outras configurações
spec.versionTipo: string
Versão da imagem do docker do
mongodb-search. Se omitido, o Operador Kubernetes escolhe automaticamente a versão mais recente do MongoDBSearch. Você pode defini-lo explicitamente para evitar upgrades automáticos quando a versão do operador Kubernetes for atualizada.
spec.statefulSetDigite: apps/v1/StatefulSet
Especificação para o StatefulSet, criado para implantar os pods
mongot, que substitui as configurações que o Operador Kubernetes aplica. As substituições são sempre aplicadas por último. Suporta os camposspec.statefulSet.specespec.statefulSet.metadata.Observação
Não defina requisitos de recursos ou configurações de persistência usando
spec.statefulSet. Em vez disso, utilize os camposspec.resourceRequirementsespec.persistencerespectivamente.
Campos de status
O Operador Kubernetes relata informações de status no campo status do recurso MongoDBSearch.
status.loadBalancerTipo: objeto
Status do balanceador de carga gerenciado pelo operador (Envoy). Este campo está presente somente quando
spec.loadBalancer.managedestá definido.
status.loadBalancer.phaseTipo: string
Fase atual do balanceador de carga gerenciado. Os valores possíveis incluem
Pending,RunningeFailed. O Operador Kubernetes relata esta fase independentemente dostatus.phaseprincipal, para que você possa monitorar a implantação do Envoy separadamente.Este campo também está visível na saída
kubectl getna colunaLOADBALANCER.Exemplo
kubectl get mdbs NAME PHASE VERSION LOADBALANCER AGE mdb-rs-ext-lb-search Running 0.64.0 Running 14m