Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Especificação do recurso MongoDBSearch

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.

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.

1spec:
2 source:
3 # external takes precedence over mongodbResourceRef
4 mongodbResourceRef:
5 name: mdb
6 external:
7 # hostAndPorts and shardedCluster are mutually exclusive
8 hostAndPorts:
9 - mdb-rs-external-0.example.com:27017
10 - mdb-rs-external-1.example.com:27017
11 - mdb-rs-external-2.example.com:27017
12 shardedCluster:
13 router:
14 hosts:
15 - mongos1.example.com:27017
16 - mongos2.example.com:27017
17 shards:
18 - shardName: shard-0
19 hosts:
20 - shard0-node1.example.com:27018
21 - shard0-node2.example.com:27018
22 - shardName: shard-1
23 hosts:
24 - shard1-node1.example.com:27018
25 - shard1-node2.example.com:27018
26 keyfileSecretRef:
27 name: mdb-keyfile
28 key: keyfile
29 tls:
30 # ca references a ConfigMap that contains ca.crt
31 ca:
32 name: mdbc-rs-ca
33 username: search-sync-source
34 passwordSecretRef:
35 name: mdbc-rs-search-sync-source-password
36 key: password
37 # x509 authentication (mutually exclusive with
38 # username/passwordSecretRef and source.tls)
39 x509:
40 clientCertificateSecretRef:
41 name: mongot-x509-client-cert
42 # Set only if the private key is encrypted
43 keyFilePasswordSecretRef:
44 name: mongot-x509-key-password
45 # TLS client certificate for SCRAM connections
46 # (mutually exclusive with x509):
47 # tls:
48 # clientCertificateSecretRef:
49 # name: mongot-scram-client-cert
50 # keyFilePasswordSecretRef:
51 # name: mongot-scram-key-password
52 security:
53 tls:
54 certificateKeySecretRef:
55 name: mdbs-tls-secret
56 certsSecretPrefix: my-prefix
57 # Set only if the private key is encrypted
58 keyFilePasswordSecretRef:
59 name: mdbs-tls-key-password
60 version: "1.70.1"
61 autoEmbedding:
62 embeddingModelAPIKeySecret:
63 name: embedding-model-api-query-key
64 providerEndpoint: https://ai.mongodb.com/v1/embeddings
65 featureFlags:
66 enableOverloadRetrySignal: true
67 logLevel: INFO
68 observability:
69 prometheus:
70 mode: enabled
71 port: 9946
72 metricsForwarder:
73 mode: auto
74 resourceRequirements:
75 requests:
76 cpu: 100m
77 memory: 128Mi
78 limits:
79 cpu: 250m
80 memory: 256Mi
81 deployment:
82 spec:
83 template:
84 spec:
85 nodeSelector:
86 kubernetes.io/os: linux
87 opsManager:
88 agentCredentials:
89 name: om-agent-api-key
90 projectConfigMapRef:
91 name: om-project-config
92 clusters:
93 - name: cluster-1
94 index: 0
95 replicas: 2
96 loadBalancer:
97 # Option 1: Operator-managed Envoy load balancer
98 managed:
99 externalHostname: "{shardName}.search.apps.example.com"
100 routerHostname: "search-router.apps.example.com:27028"
101 replicas: 2
102 resourceRequirements:
103 requests:
104 cpu: "100m"
105 memory: 128Mi
106 limits:
107 cpu: "500m"
108 memory: 512Mi
109 deployment:
110 spec:
111 template:
112 spec:
113 nodeSelector:
114 kubernetes.io/os: linux
115 retryPolicy:
116 numRetries: 2
117 perTryTimeout: "60s"
118 minMongotReadyReplicas: 1
119 # Option 2: User-provided (BYO) load balancer
120 # (mutually exclusive with managed)
121 unmanaged:
122 endpoint: "{shardName}-search-lb.corp.example.com:443"
123 resourceRequirements:
124 limits:
125 cpu: "3"
126 memory: 5Gi
127 requests:
128 cpu: "2"
129 memory: 4Gi
130 persistence:
131 single:
132 storage: 16G
133 storageClass: standard
134 statefulSet:
135 spec:
136 template:
137 spec:
138 nodeSelector:
139 kubernetes.io/os: linux
140 jvmFlags:
141 - -Xms2g
142 - -Xmx2g
143 advancedMongotConfigs:
144 someAdvancedSetting: value
145 syncSourceSelector:
146 matchTagSets:
147 - region: us-east-1
148 workload: search
149 - {}
150 shardOverrides:
151 - shardNames:
152 - shard-0
153 replicas: 3
154 resourceRequirements:
155 requests:
156 cpu: "4"
157 memory: 8Gi
158 persistence:
159 single:
160 storage: 32G
161 jvmFlags:
162 - -Xms4g
163 - -Xmx4g
164 statefulSet:
165 spec:
166 template:
167 spec:
168 nodeSelector:
169 disktype: ssd

Esta seção descreve as configurações que você deve usar para todos os recursos do MongoDBSearch .

apiVersion

Tipo: string

Versão do esquema de recursos do MongoDB Kubernetes. Defina o valor como mongodb.com/v1.

kind

Tipo: string

Tipo de recurso MongoDB Kubernetes para criar. Defina isso como MongoDBSearch.

metadata.namespace

Tipo: string

Namespace onde o recurso MongoDBSearch deve ser criado. Para aproveitar a configuração automática dos recursos MongoDBSearch e MongoDB ou MongoDBCommunity, o recurso MongoDBSearch deve ser criado no mesmo namespace que o recurso MongoDB ou MongoDBCommunity.

metadata.name

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

Tipo : 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 pods mongot em uma implantação de vários clusters. Para a referência completa do campo, incluindo name e index, consulte Configurações de implantação de cluster.

O recurso personalizado do MongoDBSearch pode utilizar as seguintes configurações:

spec.source

Tipo: 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 é externo

  • MongoDB tem 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 MongoDB ou MongoDBCommunity CRD e se spec.source estiver vazio, o Operador Kubernetes usará o seguinte com base em metadata.name para procurar o banco de dados no Kubernetes:

  • Encontre recursos MongoDB ou MongoDBCommunity com o mesmo nome definido para metadata.name em MongoDBSearch, no mesmo namespace.

  • Encontre o segredo da senha do usuário mongot no 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.name

Tipo: string

Nome do recurso MongoDB ou MongoDBCommunity a 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 recurso MongoDBSearch referenciando o mesmo recurso MongoDB ou MongoDBCommunity.

Use este campo somente se o recurso MongoDB ou MongoDBCommunity for implantado no mesmo cluster do Kubernetes e estiver no mesmo namespace que o recurso MongoDBSearch. Se o seu banco de dados for implantado fora do Kubernetes ou estiver em um namespace diferente, use spec.source.external para configurar a conexão com o banco de dados. Se você definir ambos os campos, o spec.source.external terá precedência.

Se omitido, o Operador Kubernetes procurará um recurso MongoDB ou MongoDBCommunity com o mesmo nome deste recurso MongoDBSearch.

spec.source.mongodbResourceRef.namespace

Tipo: string

Namespace do recurso MongoDB ou MongoDBCommunity ao qual spec.source.mongodbResourceRef.name se refere. O operador do Kubernetes ignora atualmente este campo e sempre usa o namespace do recurso MongoDBSearch. Referências entre namespaces não são compatíveis. Se o seu banco de dados estiver em um namespace diferente, use spec.source.external.

spec.source.username

Tipo: string

Nome de usuário para autenticar mongot com mongod. O usuário especificado deve ter a função searchCoordinator. Se omitido, o Operador Kubernetes assume que o nome de usuário é search-sync-source.

spec.source.passwordSecretRef.name

Tipo: string

Nome do segredo que contém a senha que mongot deve usar para autenticar com mongod. Se omitido, o padrão é <MongoDBSearch.metadata.name>-<username>-password, onde <username> é o valor de spec.source.username. Para o nome de usuário padrão search-sync-source, isso resulta em <MongoDBSearch.metadata.name>-search-sync-source-password.

spec.source.passwordSecretRef.key

Tipo: string

Chave sob a qual o valor da senha é armazenado no segredo. Se omitido, o padrão é password.

spec.source.x509

Tipo: 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 campomongot autenticado no MongoDB usando x509 em vez de nome de usuário e senha.

Este campo é mutuamente exclusivo com spec.source.passwordSecretRef, spec.source.username e spec.source.tls. O Operador Kubernetes rejeita a configuração se você especificar x509 e autenticação de senha.

spec.source.x509.clientCertificateSecretRef

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

  • tls.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.keyFilePasswordSecretRef

Tipo: 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 chave keyFilePassword. Omita este campo se a chave privada não estiver criptografada.

spec.source.tls

Tipo: objeto

Configura um certificado de cliente TLS para a conexão de origem de sincronização mongot se você usar autenticação SCRAM (nome de usuário e senha). Se você definir este campo, mongot apresentará o certificado do cliente durante o handshake TLS com a implantação do MongoDB de origem (transporte TLS mútuo). mongot ainda 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 com spec.source.x509. Se você quiser que o próprio certificado do cliente sirva como credencial de autenticação, use spec.source.x509 em vez disso.

spec.source.tls.clientCertificateSecretRef

Tipo: objeto

Segredo que contém o certificado de cliente TLS e a chave que mongot apresenta durante o handshake TLS com a implantação de origem do MongoDB. O segredo deve conter as seguintes chaves:

  • tls.crt — Certificado de cliente

  • tls.key — chave privada

Você deve especificar este campo se definir spec.source.tls.

spec.source.tls.keyFilePasswordSecretRef

Tipo: 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 chave keyFilePassword. Omita este campo se a chave privada não estiver criptografada.

spec.source.external

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

Tipo: 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. Use hostAndPorts para fontes de conjunto de réplicas e shardedCluster para fontes de cluster sharded.

spec.source.external.shardedCluster

Tipo: objeto

Declara um cluster MongoDB fragmentado externo como fonte de dados para mongot. Contém configuração para roteadores mongos e membros do conjunto de réplicas por fragmento.

spec.source.external.shardedCluster.router.hosts

Tipo: array de strings

Lista de endpoints para as instâncias do roteador mongos no formato host:port. Todas as instâncias do mongot se conectam a estes roteadores. Especifique pelo menos uma entrada.

spec.source.external.shardedCluster.shards

Tipo : 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 mongot StatefulSet para cada shard. Especifique pelo menos uma entrada de shard.

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

Tipo: 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 e shardName nos 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. Mantenha shardName curto o suficiente para esses limites.

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

Tipo: array de strings

Lista de pontos de extremidade dos membros do conjunto de réplicas do mongod para este shard no formato host:port. Especifique pelo menos uma entrada. Cada shard tem seu próprio grupo de instâncias mongot, que fornecem dados somente do conjunto de réplicas desse shard.

spec.source.external.keyfileSecretRef

Tipo: objeto

Segredo que contém o arquivo de chave mongod que mongot usa para se conectar à implantação externa do MongoDB. O campo name é obrigatório. O campo key é opcional.

spec.source.external.tls.ca.name

Tipo: 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 chave ca.crt neste ConfigMap.

As seguintes configurações descrevem cada entrada do array spec.clusters necessário.

spec.clusters

Tipo : 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, como replicas, loadBalancer, resourceRequirements, persistence, jvmFlags e statefulSet, estão dentro de uma entrada clusters. 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 name e index.

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

Tipo: 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.clusters contiver mais de uma entrada, name será necessário, deverá ser exclusivo em todas as entradas e não poderá ser alterado após a criação do recurso.

spec.clusters[].index

Tipo: inteiro

Identificador de inteiro estável do cluster Kubernetes para esta entrada. O valor deve estar entre 0 e 999 e deve ser exclusivo em todas as entradas. Se spec.clusters contiver mais de uma entrada, index será 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}-svc para Serviços e {name}-search-{index}-config para 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 index de 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, defina index explicitamente para um valor distinto no recurso MongoDBSearch de cada cluster. Índices distintos evitam que os nomes de host e os nomes de recursos gerados colidam entre os clusters.

spec.clusters[].replicas

Tipo: inteiro

Número de pods mongot a implantar neste cluster Kubernetes. Para uma fonte de conjunto de réplicas, este é o número total de pods mongot. Para uma fonte de cluster sharded, este é o número de pods mongot por shard.

Se spec.clusters[].replicas for maior que 1, você também deverá configurar spec.clusters[].loadBalancer para rotear o tráfego entre mongod e as múltiplas instâncias mongot.

Se você definir spec.clusters[].replicas como 0, o operador do Kubernetes colocará a implantação mongot neste cluster offline. O Operador Kubernetes dimensiona o StatefulSet para zero pods e mantém o recurso MongoDBSearch e seus outros recursos Kubernetes no lugar.

Se omitido, o padrão é 1.

spec.clusters[].resourceRequirements

Tipo: core/v1/ResourceRequirements

CPU e memória que o contêiner mongodb-search pode solicitar e ser limitado a.

Se omitido, o Kubernetes Operator usa os seguintes valores padrão:

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

Tipo: objeto

Limite superior no recurso, CPU e memória, que o contêiner mongodb-search pode consumir. Por padrão, não há limites definidos.

spec.clusters[].resourceRequirements.requests

Tipo: objeto

Quantidade de CPU e memória solicitada para o contêiner mongodb-search. Se você especificar apenas um de cpu ou memory, o operador do Kubernetes aplicará o valor padrão para o outro.

spec.clusters[].persistence.single

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

Escalar
Tipo de Dados
Descrição

labelSelector

string

Tag usada para vincular volumes montados a diretórios.

storage

string

Tamanho mínimo do volume persistente que deve ser montado. O valor padrão é 16G.

storageClass

string

Tipo de armazenamento especificado em uma declaração de volume persistente.

MongoDBSearch suporta apenas o modo de persistência single, que usa um volume para todos os dados. Embora o esquema CRD também contenha um campo spec.clusters[].persistence.multiple, o operador Kubernetes não o aplica. Se você omitir persistence, o operador Kubernetes definirá spec.clusters[].persistence.single.storage como 16G.

spec.clusters[].loadBalancer

Tipo: objeto

Configuração para balanceamento de carga L7 entre mongod (ou mongos) e mongot. Este campo é obrigatório se spec.clusters[].replicas for maior que 1.

Exatamente um entre managed ou unmanaged deve ser definido.

Todas as entradas em spec.clusters devem concordar com o modo de balanceador de carga: ou cada entrada define loadBalancer.managed, cada entrada define loadBalancer.unmanaged, ou nenhuma entrada define loadBalancer. O Kubernetes Operator rejeita modos mistos. As implantações de vários clusters suportam apenas o modo gerenciado.

spec.clusters[].loadBalancer.managed

Tipo: 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.tls se 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.externalHostname

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

Tipo: string

Ponto de extremidade que os roteadores mongos usam para alcançar as instâncias mongot deste cluster por meio do balanceador de carga Envoy gerenciado, no formato host: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 para mongos.

spec.clusters[].loadBalancer.managed.replicas

Tipo: inteiro

Número de pods de proxy do Envoy a serem implantados neste cluster do Kubernetes. O valor deve ser 1 ou superior. Se omitido, o padrão é 1.

spec.clusters[].loadBalancer.managed.resourceRequirements

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

Tipo: objeto

Substituições que o operador Kubernetes mescla na implantação do Envoy criada pelo operador. Este objeto contém um campo metadata com labels e annotations, e um campo spec com um objeto aplicativo/v1/DeploymentSpec.

spec.clusters[].loadBalancer.managed.retryPolicy

Tipo: objeto

Comportamento de repetição que o proxy Envoy aplica a streams gRPC individuais para as instâncias mongot upstream. O proxy Envoy envia cada tentativa de repetição para um host mongot diferente da tentativa com falha.

Se você omitir este campo, o proxy do Envoy tentará novamente com os valores padrão: 2 tentativas com um tempo limite por tentativa de 60s.

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

Tipo: inteiro

Número máximo de tentativas por solicitação. O valor deve ser 1 ou superior. Se omitido, o padrão é 2, o que permite três tentativas no total para cada solicitação.

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

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

Tipo: inteiro

Número mínimo de réplicas mongot prontas que um grupo mongot (por exemplo, as instâncias mongot de 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 grupo mongot saudável e marcará as solicitações com o cabeçalho routed_from_another_shard. Essas solicitações retornam resultados vazios em vez de erros.

O valor deve ser 1 ou superior. Se omitido, o padrão é 1.

spec.clusters[].loadBalancer.unmanaged

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

Tipo: string

O ponto de extremidade do balanceador de carga BYO no formato host:port. Você deve especificar este campo se configurar spec.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ção mongod como mongotHost e searchIndexManagementHostAndPort.

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

spec.clusters[].shardOverrides

Tipo : 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 em spec.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 shardNames necessária (pelo menos uma entrada) e campos replicas, resourceRequirements, persistence, jvmFlags e statefulSet opcionais. Se você definir replicas, resourceRequirements, persistence ou jvmFlags em uma substituição, eles substituirão o valor do cluster para os shards nomeados. jvmFlags substitui o valor do cluster somente se você o definir como uma lista não vazia. O operador Kubernetes mescla profundamente statefulSet no valor do cluster. Os campos que você não define herdam o valor do cluster.

spec.clusters[].syncSourceSelector.matchTagSets

Tipo : array de objetos

Lista ordenada de conjuntos de tags de conjunto de réplicas que seleciona os nós de origem de sincronização mongod por suas tags de conjunto de réplicas. O operador do Kubernetes passa a lista para a configuração mongot. mongot sincroniza 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.

spec.clusters[].jvmFlags

Tipo: 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 -Xms ou -Xmx neste campo, o Operador Kubernetes calculará automaticamente o tamanho do heap configurando ambos para metade de spec.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.

spec.clusters[].statefulSet

Tipo: objeto

Substituições para o StatefulSet que o operador do Kubernetes cria para implantar pods mongot. Este objeto contém um campo metadata com labels e annotations, e um campo spec com 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 campos spec.clusters[].resourceRequirements e spec.clusters[].persistence respectivamente.

spec.clusters[].advancedMongotConfigs

Tipo: objeto

Configurações avançadas de mongot para esta entrada de cluster. O operador Kubernetes renderiza o valor literalmente sob a chave advancedConfigs do arquivo de configuração mongot, sem lê-lo ou modificá-lo. Use este campo apenas para configurações de mongot que o recurso MongoDBSearch não expõe como campos de primeira classe.

spec.security

Tipo: objeto

Configurações de segurança para mongot servidor de escuta.

spec.security.tls

Tipo: objeto

Configurações de TLS para mongot. Se omitido, o mongot nã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.tls nesta configuração.

spec.security.tls.certificateKeySecretRef.name

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

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

Componente
Padrão de nome secreto

Certificado de servidor mongot do conjunto de réplicas

{certsSecretPrefix}-{name}-search-cert

Certificado mongot sharded (por cluster e shard)

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

Certificado de servidor de balanceador de carga gerenciado (por cluster, todas as topologias)

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

Certificado de cliente balanceador de carga gerenciado

{certsSecretPrefix}-{name}-search-lb-{clusterIndex}-client-cert

O 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 externalHostname e o routerHostname.

O Operador Kubernetes resolve o nome secreto do certificado do servidor mongot na seguinte ordem:

  1. Se você definir spec.security.tls.certificateKeySecretRef.name, o operador Kubernetes usará esse nome.

  2. Se você definir certsSecretPrefix, o Kubernetes operador usará os padrões de nomenclatura na tabela anterior.

  3. Se você não definir nenhum dos campos, o operador Kubernetes usa o nome padrão {name}-search-cert para implantações de conjunto de réplicas, ou o padrão por shard padrão {name}-search-{clusterIndex}-{shardName}-cert para 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}-cert para o certificado do servidor e {name}-search-lb-{clusterIndex}-client-cert para o certificado do cliente.

spec.security.tls.keyFilePasswordSecretRef

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

spec.logLevel

Tipo: string

Verbosidade dos registros do mongot. O valor pode ser um dos seguintes:

  • TRACE

  • DEBUG

  • INFO

  • WARN

  • ERROR

Se omitido, o padrão é INFO.

spec.observability.prometheus

Tipo: 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ão 9946.

spec.observability.prometheus.mode

Tipo: string

Ativa ou desativa o ponto de extremidade de métricas do Prometheus em mongot. O valor pode ser enabled ou disabled. Se omitido, o padrão é enabled.

spec.observability.prometheus.port

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

Tipo: objeto

Configuração para o encaminhador de métricas, uma implantação que o operador Kubernetes cria para raspar as métricas do Prometheus mongot e encaminhá-las para o MongoDB Ops Manager.

spec.observability.metricsForwarder.mode

Tipo: 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 operador MongoDB (com suporte do Ops Manager) e para fontes externas somente se você definir spec.observability.metricsForwarder.opsManager. Para fontes MongoDBCommunity, o Operador Kubernetes não cria o encaminhador.

  • enabled — O Operador Kubernetes sempre cria o encaminhador. Se a origem for um recurso MongoDBCommunity, o Operador Kubernetes relata um erro porque o encaminhador não é compatível com origens MongoDBCommunity.

  • disabled — O operador do Kubernetes nunca cria o encaminhador.

Se omitido, o padrão é auto.

Os modos enabled e auto exigem 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étricas Invalid.

spec.observability.metricsForwarder.resourceRequirements

Tipo: 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: 100m e memory: 128Mi e limites de cpu: 250m e memory: 256Mi.

spec.observability.metricsForwarder.deployment

Tipo: 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 metadata com labels e annotations, e um campo spec com um objeto aplicativo/v1/DeploymentSpec.

spec.observability.metricsForwarder.opsManager

Tipo: 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) e projectConfigMapRef.name (o ConfigMap que contém a configuração do projeto do Ops Manager).

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

Tipo: objeto

Configuração para embedding automático de dados de texto em sua coleção.

spec.autoEmbedding.embeddingModelAPIKeySecret.name

Tipo: string

Nome do segredo que contém as chaves API do modelo de embedding que mongot deve usar para gerar embeddings no momento do índice e da query. O segredo deve conter a chave de tempo de índice sob a chave indexing-key e a chave de tempo de query sob a chave query-key.

Você pode omitir embeddingModelAPIKeySecret somente se spec.autoEmbedding.providerEndpoint apontar para o serviço de embedding Voyage AI autohospedado e gerenciado pelo operador. Caso contrário, o operador Kubernetes o exige.

spec.autoEmbedding.providerEndpoint

Tipo: string

URL do ponto de extremidade do modelo de embedding para gerar embeddings.

spec.featureFlags

Tipo: objeto

Sinalizadores de recursos para mongot. Se você definir um sinalizador como true, o operador do Kubernetes o renderizará na configuração mongot. Se você omitir o objeto featureFlags ou um sinalizador individual, o padrão de esquema para esse sinalizador será aplicado (true para enableOverloadRetrySignal).

spec.featureFlags.enableOverloadRetrySignal

Tipo: booleano

Ativa o sinal de nova tentativa de sobrecarga mongot. Se você ativar esse sinalizador, mongot sinalizará o descarregamento de carga para proxies upstream (como o balanceador de carga Envoy gerenciado pelo operador) por meio de respostas gRPC RESOURCE_EXHAUSTED. Os proxies, então, tentam novamente a solicitação em outra instância mongot.

Se omitido, o padrão é true.

spec.version

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

O Operador Kubernetes relata informações de status no campo status do recurso MongoDBSearch.

status.phase

Tipo: string

Fase atual do recurso MongoDBSearch. Os valores possíveis incluem Pending, Running, Failed, Disabled, Updated e Unsupported.

status.message

Tipo: string

Mensagem legível por humanos com detalhes sobre o status atual.

status.lastTransition

Tipo: string

Carimbo de data/hora da última transição de status.phase.

status.observedGeneration

Tipo: inteiro

Geração do recurso MongoDBSearch que o operador Kubernetes processou pela última vez.

status.warnings

Tipo: array de strings

Avisos que o Kubernetes operador relata para o recurso.

status.version

Tipo: string

Versão do MongoDB Search (mongot) que o operador do Kubernetes reconciliou.

status.resourcesNotReady

Tipo : array de objetos

Recursos dependentes do Kubernetes que ainda não estão prontos. Cada entrada relata o kind e o name do recurso e um message opcional e uma lista de errors.

status.pvc

Tipo : array de objetos

Estado das reivindicações de volume persistente dos mongot StatefulSets. Cada entrada relata o phase e o statefulsetName aos quais as reivindicações pertencem.

status.loadBalancer

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

Tipo: string

Fase atual do balanceador de carga gerenciado. Os valores possíveis incluem Pending, Running e Failed. Este campo está visível na saída kubectl get na coluna LOADBALANCER.

status.loadBalancer.message

Tipo: string

Mensagem legível por humanos com detalhes sobre o status do balanceador de carga gerenciado.

status.metricsForwarder

Tipo: objeto

Status do encaminhador de métricas.

status.metricsForwarder.phase

Tipo: string

Fase atual do encaminhador de métricas. Os valores possíveis incluem Pending, Running e Failed. A fase relata Disabled se você definir spec.observability.metricsForwarder.mode como disabled. Este campo está visível na saída kubectl get na coluna METRICSFORWARDER.

status.metricsForwarder.message

Tipo: string

Mensagem legível por humanos com detalhes sobre o status do encaminhador de métricas.