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

Configurações do MongoDB Search e Vector Search

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.

O exemplo seguinte mostra as configurações dentro do objeto spec para o sistema MongoDB Search e 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 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.

Exemplo

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

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 no qual criar o recurso MongoDBSearch. Para aproveitar a configuração automática do MongoDBSearch e dos recursos MongoDB ou MongoDBCommunity, crie o recurso MongoDBSearch 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 Kubernetes que ele cria a partir dele, por exemplo {name}-search-{clusterIndex}-{shardName}. O operador Kubernetes 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.

spec.clusters

Tipo : array de objetos

Configuração de implantação por cluster Kubernetes para 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 spec.clusters.

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 Controladores para Kubernetes usará os padrões para todas as configurações opcionais para configurar o MongoDBSearch.

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 no 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 MongoDB ou MongoDBCommunity recurso 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 recurso MongoDB ou MongoDBCommunity. Se você especificar um nome diferente, deverá ponto explicitamente para o MongoDB ou MongoDBCommunity em 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, mongos roteadores) e criará automaticamente o mongot StatefulSets por fragmento. Você não precisa realizar nenhuma configuração externa adicional.

Use esse campo somente se o recurso MongoDB ou MongoDBCommunity estiver 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.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 procura um recurso MongoDB ou MongoDBCommunity com o mesmo nome que este recurso MongoDBSearch.

spec.source.mongodbResourceRef.namespace

Tipo: string

Namespace do recurso MongoDB ou MongoDBCommunity ao qual spec.source.mongodbResourceRef.name se refere. O operador Kubernetes ignora esse 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.

Exemplo

spec:
source:
x509:
clientCertificateSecretRef:
name: mongot-x509-client-cert
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.

As configurações a seguir são necessárias apenas para configurar uma conexão com um MongoDB implantação externo.

spec.source.external

Tipo: objeto

Configurações que descrevem a fonte de dados externa. Este objeto descreve as configurações para o recurso MongoDB Search e pesquisa vetorial para se conectar a um MongoDB externo. Especifique essas configurações somente se quiser se conectar a um MongoDB externo que não foi implantado usando o operador Kubernetes. Se você especificar essas configurações, elas terão precedência sobre spec.source.mongodbResourceRef. Se você usou o operador Kubernetes para instalar o MongoDB no mesmo cluster, essas configurações são opcionais.

spec.source.external.keyfileSecretRef

Tipo: objeto

Segredo que contém o arquivo de chave mongod que o mongot usa para se conectar à implantação externa do MongoDB.

spec.source.external.keyfileSecretRef.name

Tipo: string

Nome do Secret que contém o keyfile. Você deve especificar este campo se definir spec.source.external.keyfileSecretRef.

spec.source.external.keyfileSecretRef.key

Tipo: string

Chave sob a qual o keyfile é armazenado no segredo. Este campo é opcional.

spec.source.external.hostAndPorts

Tipo: 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 mongot se conecta ao banco de dados em um modo de conjunto de réplicas e obtém a lista de todos os outros nós usando db.hello().

Este campo é mutuamente exclusivo com spec.source.external.shardedCluster. Use hostAndPorts para fontes de conjunto de réplicas e shardedCluster para 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.tls

Tipo: objeto

Configurações de TLS que o mongot deve usar ao conectar ao banco de dados MongoDB externo.

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 .

Exemplo

spec:
source:
external:
tls:
ca:
name: trusted-ca

Você deve especificar o certificado (ou cadeia de certificados) na chave ca.crt neste ConfigMap.

Exemplo

kind: ConfigMap
apiVersion: v1
metadata:
name: trusted-ca
data:
ca.crt: |
-----BEGIN CERTIFICATE-----
MIIDBTCCAe2gAwIBAgIIH3EOUAGAsx0wDQYJKoZIhvcNAQELBQAwFTETMBEGA1UE
[...]
U/4rN8Ias/FONYFRtGfs9uXHmo2MP04BF+9ED2dlbNDUbat+6XCozLJj98nI4VEi
qaV3JrVFHTgN
-----END CERTIFICATE-----

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

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 o spec.source.mongodbResourceRef em 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.router

Tipo: objeto

Configuração para as instâncias do mongos (roteador) do cluster fragmentado externo.

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.

Exemplo

router:
hosts:
- "mongos1.external:27017"
- "mongos2.external:27017"
spec.source.external.shardedCluster.shards

Tipo : 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 mongot StatefulSet para cada fragmento, onde cada StatefulSet contém o número de pods especificados no spec.clusters[].replicas. Especifique pelo menos uma entrada de fragmento.

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

Tipo: 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 rótulo do Kubernetes DNS (RFC 1123), que permitem caracteres alfanuméricos minúsculos e hífens (-), e exigem que o nome comece e termine com um caractere alfanumérico. Pontos (.) e sublinhados (_) não são permitidos. O comprimento máximo é de 63 caracteres.

  • O operador Kubernetes combina metadata.name, o índice do cluster e shardName nos nomes dos recursos do Kubernetes que ele cria (por exemplo, {name}-search-{clusterIndex}-{shardName}) e 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. Mantenha shardName curto o suficiente para esses limites.

Exemplo

shards:
- shardName: "shard-0"
hosts:
- "shard0-node1.external:27018"
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 fragmento no formato host:port. As instâncias mongot replicam 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âncias mongot.

Exemplo

shards:
- shardName: "shard-0"
hosts:
- "shard0-node1.external:27018"
- "shard0-node2.external:27018"
- "shard0-node3.external:27018"

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 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, ficam 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.

Exemplo

spec:
clusters:
- {}

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 porque o índice faz parte dos nomes dos recursos. A alteração faz com que o operador 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 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 do Kubernetes dimensiona o StatefulSet para zero pods e mantém o recurso MongoDBSearch e seus outros recursos do Kubernetes no lugar.

Se omitido, o padrão é 1.

Exemplo

spec:
clusters:
- replicas: 2
spec.clusters[].resourceRequirements

Tipo: core/v1/ResourceRequirements

CPU e memória para as quais o container mongodb-search pode solicitar e ser limitado. Recomendamos usar esse campo para personalizar as alocações de recursos em vez de substituí-lo por spec.clusters[].statefulSet.

Se você não substituir o tamanho de heap JVM no spec.clusters[].jvmFlags, o Operador Kubernetes definirá o tamanho de heap padrão (-Xmx) para 50% da solicitação de memória do contêiner mongot. Ajuste spec.clusters[].resourceRequirements adequadamente 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: 4Gi
spec.clusters[].resourceRequirements.limits

Tipo: objeto

Limite superior dos recursos (CPU e memória) que o contêiner mongodb-search pode consumir. Por padrão, nenhum limite é definido. Se omitido, o pod não é restrito e, portanto, pode usar todos os recursos no nó. Recomendamos definir limites com base na sua carga de trabalho.

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 Kubernetes aplicará o valor padrão para o outro. Se omitido, o operador Kubernetes usa os seguintes valores padrão:

requests:
cpu: 2
memory: 4Gi
spec.clusters[].persistence.single

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

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 a ser montado. Esse valor é expresso como um número inteiro seguido por uma unidade de armazenamento na notação JEDEC.

O valor padrão é 16G.

Por exemplo, se um conjunto de réplicas exigir 60 gigabytes de espaço de armazenamento, defina esse valor como 60G.

storageClass

string

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 reclaimPolicy como Retain. Isso garante que os dados sejam mantidos quando uma declaração de volume persistente for removida.

O 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. Se spec.clusters[].replicas for 1, este campo será opcional. Você pode configurar um balanceador de carga mesmo para uma única instância do mongot para preparar-se para o dimensionamento posterior.

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.

O balanceador de carga afeta quais certificados TLS os clientes mongod veem e quais nomes de host esses certificados devem conter:

  • Sem um balanceador de carga, o mongod conecta diretamente ao mongot. O certificado TLS apresentado a mongod é o próprio certificado de mongot. Se o cluster MongoDB estiver fora do Kubernetes, o serviço mongot será exposto em um domínio externo. Você deve incluir esse domínio externo no campo SAN ( nome alternativo do assunto ) do certificado TLS mongot.

  • Com um balanceador de carga gerenciado (spec.clusters[].loadBalancer.managed), o proxy Envoy é o único componente que se conecta diretamente ao mongot. O proxy Envoy atinge mongot por meio dos FQDNs de serviço internos:

    • conjunto de réplicas: <name>-search-<clusterIndex>-svc.<ns>.svc.cluster.local

    • cluster fragmentado: <name>-search-<clusterIndex>-<shard>-svc.<ns>.svc.cluster.local

    Recomendamos que você inclua esses FQDNs de serviço no campo SAN do certificado TLS mongot. O proxy Envoy gerenciado pelo operador atualmente valida o certificado mongot apenas em relação à autoridade de certificação e não corresponde aos nomes de host SAN. Os processos externos mongod veem o certificado TLS do proxy Envoy, portanto, inclua domínios externos nos SANs do certificado Envoy, não no certificado mongot.

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ê dimensionar spec.clusters[].replicas mais tarde, pois o balanceador de carga já está presente entre mongod e mongot.

spec.clusters[].loadBalancer.managed

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

Exemplo

spec:
clusters:
- loadBalancer:
managed: {}
spec.clusters[].loadBalancer.managed.externalHostname

Tipo: 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 mongod de entrada. O certificado do servidor Envoy TLS deve incluir este nome de 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. Você pode usar um certificado wildcard para cobrir todos os shards com um único certificado e evitar a reemissão quando os shards forem adicionados. Para fontes de conjunto de réplicas, não use o placeholder {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.

Exemplo

# Replica set with external MongoDB
spec:
clusters:
- loadBalancer:
managed:
externalHostname: "search.apps.example.com"
# Sharded cluster with external MongoDB
spec:
clusters:
- loadBalancer:
managed:
externalHostname: "{shardName}.search.example.com"
spec.clusters[].loadBalancer.managed.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.

Em implantações de vários clusters, cada entrada de cluster normalmente usa um valor distinto. No entanto, o operador Kubernetes permite o compartilhamento de um valor entre clusters, por exemplo, se um proxy de failover que abrange zonas de disponibilidade estiver à frente dos proxies Envoy de vários clusters.

Exemplo

spec:
clusters:
- loadBalancer:
managed:
externalHostname: "{shardName}.search.example.com"
routerHostname: "search-router.example.com:27028"
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

Exemplo

spec:
clusters:
- loadBalancer:
managed:
resourceRequirements:
requests:
cpu: "200m"
memory: "256Mi"
limits:
cpu: "1"
memory: "1Gi"
spec.clusters[].loadBalancer.managed.deployment

Tipo: objeto

Substituições que o operador Kubernetes mescla na Implantação do Envoy criada pelo operador. Segue a mesma convenção que spec.statefulSet nos recursos do MongoDB . Se omitido, o Kubernetes Operator usa padrões para a implantação Envoy.

Este objeto contém dois campos:

  • metadata — contém labels e annotations campos 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:
clusters:
- loadBalancer:
managed:
deployment:
spec:
template:
spec:
nodeSelector:
kubernetes.io/os: linux
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.

Exemplo

spec:
clusters:
- loadBalancer:
managed:
retryPolicy:
numRetries: 2
perTryTimeout: "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. Você é responsável por implantar e configurar o balanceador de carga externamente.

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 Kubernetes Operator gerenciar a implantação do MongoDB (usando spec.source.mongodbResourceRef), o Kubernetes Operator gravará esse valor na configuração mongod como mongotHost e searchIndexManagementHostAndPort. Se o MongoDB for externo, você configurará os parâmetros mongod você mesmo usando o mesmo valor.

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

Exemplo

# Replica set example
spec:
clusters:
- loadBalancer:
unmanaged:
endpoint: "search-lb.corp.example.com:443"
# Sharded cluster example
spec:
clusters:
- loadBalancer:
unmanaged:
endpoint: "{shardName}-lb.corp.example.com:443"
spec.clusters[].shardOverrides

Tipo : array de objetos

Substituições que dimensionam shards específicos dentro desta entrada de cluster de forma diferente dos padrões do cluster. Use este campo para dar a shards individuais mais ou menos réplicas mongot, recursos ou armazenamento do que o restante 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.

Se você definir replicas, resourceRequirements, persistence ou jvmFlags em uma substituição, eles substituirão o valor do cluster para os shards nomeados. O operador Kubernetes mescla profundamente statefulSet no valor do cluster. Os campos que você não define herdam o valor do cluster.

Exemplo

spec:
clusters:
- replicas: 2
shardOverrides:
- shardNames:
- shard-0
replicas: 3
resourceRequirements:
requests:
cpu: "4"
memory: 8Gi
spec.clusters[].shardOverrides[*].shardNames

Tipo: array de strings

Nomes dos shards dentro desta entrada de cluster aos quais a substituição se aplica. Este campo é obrigatório e deve conter pelo menos uma entrada.

spec.clusters[].shardOverrides[*].replicas

Tipo: inteiro

Substitui a contagem de réplicas mongot do cluster para os shards nomeados. Um valor de 0 desativa as instâncias mongot para esses shards.

spec.clusters[].shardOverrides[*].resourceRequirements

Tipo: core/v1/ResourceRequirements

Substitui as solicitações e limites de CPU e memória do cluster para os shards nomeados.

spec.clusters[].shardOverrides[*].persistence

Tipo: objeto

Substitui a configuração de volume persistente do cluster para os shards nomeados. Usa o mesmo esquema que spec.clusters[].persistence.

spec.clusters[].shardOverrides[*].statefulSet

Tipo: objeto

Substituições de StatefulSet para os shards nomeados. Ao contrário dos outros campos de substituição, o Kubernetes Operator mescla profundamente esse valor no valor spec.clusters[].statefulSet do cluster em vez de substituí-lo.

spec.clusters[].shardOverrides[*].jvmFlags

Tipo: array de strings

Substitui o spec.clusters[].jvmFlags do cluster para os shards nomeados se você o definir como uma lista não vazia. As regras de formato para spec.clusters[].jvmFlags também se aplicam a este campo.

spec.clusters[].syncSourceSelector

Tipo: objeto

Seleciona de quais nós mongod as instâncias mongot nesta entrada de cluster sincronizam os dados.

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.

Exemplo

spec:
clusters:
- syncSourceSelector:
matchTagSets:
- region: us-east-1
workload: search
- {}
spec.clusters[].jvmFlags

Tipo: array de strings

Sinalizadores JVM passados para o processo mongot. O Operador Kubernetes inclui os sinalizadores sem modificação no comando de inicialização do mongot utilizando --jvm-flags "<all flags space-separated>".

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 Kubernetes Operator 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.

Se você fornecer seus próprios valores -Xms ou -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:
clusters:
- jvmFlags:
- -Xms2g
- -Xmx2g
spec.clusters[].statefulSet

Tipo: objeto

Substituições para o StatefulSet que o operador Kubernetes cria para implantar mongot pods. O operador Kubernetes sempre aplica as substituições por último, para que elas substituam as configurações que o operador Kubernetes calcula.

Este objeto contém dois campos:

  • metadata — contém labels e annotations campos que o Operador Kubernetes mescla nos metadados do StatefulSet.

  • spec — um objeto apps/v1/StatefulSetSpec. O Operador Kubernetes mescla essas substituições na especificação do StatefulSet.

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. Este campo não afeta as configurações que o operador Kubernetes gera em outro lugar na configuração mongot.

Use este campo apenas para configurações 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 segredo pode ser do tipo kubernetes.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 certificateKeySecretRef e certsSecretPrefix, certificateKeySecretRef terá precedência para implantações do conjunto de réplicas.

Para novas implantações, utilize o spec.security.tls.certsSecretPrefix mesmo para conjuntos de réplica.

spec.security.tls.certsSecretPrefix

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

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

Onde:

  • {name} é metadata.name do recurso MongoDBSearch

  • {clusterIndex} é o valor de spec.clusters[].index (0 para uma implantação de cluster único que não define um índice)

  • {shardName} é o valor de spec.source.external.shardedCluster.shards[*].shardName

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.

Observação

Para implantações de cluster sharded, o Operador Kubernetes rejeita certificateKeySecretRef porque uma única referência secreta não pode cobrir certificados por shard. Use certsSecretPrefix, ou não defina nenhum campo e crie segredos que sigam o padrão padrão por shard e os segredos de certificado do balanceador de carga com nome padrão.

Exemplo

spec:
security:
tls:
certsSecretPrefix: my-prefix
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

Tipo: objeto

Configurações de observabilidade para o recurso MongoDBSearch, incluindo o ponto de extremidade de métricas do Prometheus em mongot e o encaminhador de métricas para o MongoDB Ops Manager.

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 Kubernetes habilitará o ponto de extremidade de métricas na porta padrão 9946. Para desabilitar o ponto de extremidade, defina spec.observability.prometheus.mode como disabled. Para alterar a porta, defina spec.observability.prometheus.port.

spec.observability.prometheus.mode

Tipo: string

Ativa ou desativa o ponto de extremidade de métricas do Prometheus em mongot. O valor pode ser um dos seguintes:

  • enabled

  • 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 ser limitado a.

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

requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
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. Segue a mesma convenção que spec.clusters[].loadBalancer.managed.deployment: um campo metadata com labels e annotations, e um campo spec com um objeto apps/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 e projectConfigMapRef.

spec.observability.metricsForwarder.opsManager.agentCredentials.name

Tipo: string

Nome do segredo que contém a chave de API do agente do MongoDB Ops Manager com a qual o encaminhador de métricas se autentica.

spec.observability.metricsForwarder.opsManager.projectConfigMapRef.name

Tipo: string

Nome do ConfigMap que contém a configuração do projeto do MongoDB Ops Manager para o qual o encaminhador de métricas envia métricas.

Importante

O embedding automatizado está disponível apenas como um recurso de pré-visualização para 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 saber mais, consulte Recursos de pré-visualização.

spec.autoEmbedding

Tipo: objeto

Configuração para incorporação automática de dados de texto em sua coleção.

spec.autoEmbedding.embeddingModelAPIKeySecret

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

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.

Este campo está visível na saída kubectl get na coluna PHASE.

status.message

Tipo: string

Mensagem legível por humanos com detalhes sobre o status atual, como o motivo pelo qual o recurso está em uma fase Pending ou Failed.

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.

Este campo está visível na saída kubectl get na coluna VERSION.

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. O Operador Kubernetes relata esta fase independentemente do status.phase principal, para que você possa monitorar a implantação do Envoy separadamente.

Este campo também 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 também 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.

status.clusters

Tipo : array de objetos

Status por cluster na topologia de implantação. O Operador Kubernetes relata uma entrada por cluster no spec.clusters[], então sistemas de cluster único têm exatamente uma entrada. Cada entrada relata as fases de pesquisa, balanceador de carga e encaminhador de métricas desse cluster de forma independente, para que você possa localizar um problema em um cluster e um componente específicos.

status.clusters[].name

Tipo: string

Nome do cluster de membros. Vazio em sistemas de cluster único.

status.clusters[].index

Tipo: inteiro

O índice spec.clusters[] fixado para esse cluster. Mapeia cada entrada de status de volta para sua entrada de especificação, independentemente da ordem da lista.

status.clusters[].search

Tipo: string

Pior fase nos StatefulSets mongot deste cluster. Um cluster executa um StatefulSet mongot para uma origem do conjunto de réplicas ou um por fragmento para uma origem fragmentada. Os valores podem ser Pending, Running ou Failed.

status.clusters[].searchMessage

Tipo: string

Mensagem legível por humanos com a razão quando status.clusters[].search não é Running.

status.clusters[].loadBalancer

Tipo: string

A fase de balanceador de carga gerenciada (Envoy) do cluster. Vazio quando nenhum balanceador de carga gerenciado estiver configurado. Os valores podem ser Pending, Running ou Failed.

status.clusters[].loadBalancerMessage

Tipo: string

Mensagem legível por humanos com a razão quando status.clusters[].loadBalancer não é Running.

status.clusters[].metricsForwarder

Tipo: string

Fase de encaminhamento de métricas do Ops Manager deste cluster. Vazio quando o encaminhador de métricas não está habilitado. Os valores podem ser Pending, Running ou Failed.

status.clusters[].metricsForwarderMessage

Tipo: string

Mensagem legível por humanos com a razão quando status.clusters[].metricsForwarder não é Running.

Exemplo

$ kubectl get mdbs
NAME PHASE VERSION LOADBALANCER METRICSFORWARDER AGE
mdb-rs-ext-lb-search Running 1.70.1 Running Running 14m