Você pode implantar o MongoDB Search e a pesquisa vetorial junto com o MongoDB 8.2 ou posterior usando o MongoDB Controllers for Kubernetes operador.
Exemplo de especificação de recurso
O exemplo 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
1 spec: 2 source: 3 # external takes precedence over mongodbResourceRef 4 mongodbResourceRef: 5 name: mdb 6 external: 7 # hostAndPorts and shardedCluster are mutually exclusive 8 hostAndPorts: 9 - mdb-rs-external-0.example.com:27017 10 - mdb-rs-external-1.example.com:27017 11 - mdb-rs-external-2.example.com:27017 12 shardedCluster: 13 router: 14 hosts: 15 - mongos1.example.com:27017 16 - mongos2.example.com:27017 17 shards: 18 - shardName: shard-0 19 hosts: 20 - shard0-node1.example.com:27018 21 - shard0-node2.example.com:27018 22 - shardName: shard-1 23 hosts: 24 - shard1-node1.example.com:27018 25 - shard1-node2.example.com:27018 26 keyfileSecretRef: 27 name: mdb-keyfile 28 key: keyfile 29 tls: 30 # ca references a ConfigMap that contains ca.crt 31 ca: 32 name: mdbc-rs-ca 33 username: search-sync-source 34 passwordSecretRef: 35 name: mdbc-rs-search-sync-source-password 36 key: password 37 # x509 authentication (mutually exclusive with 38 # username/passwordSecretRef and source.tls) 39 x509: 40 clientCertificateSecretRef: 41 name: mongot-x509-client-cert 42 # Set only if the private key is encrypted 43 keyFilePasswordSecretRef: 44 name: mongot-x509-key-password 45 # TLS client certificate for SCRAM connections 46 # (mutually exclusive with x509): 47 # tls: 48 # clientCertificateSecretRef: 49 # name: mongot-scram-client-cert 50 # keyFilePasswordSecretRef: 51 # name: mongot-scram-key-password 52 security: 53 tls: 54 certificateKeySecretRef: 55 name: mdbs-tls-secret 56 certsSecretPrefix: my-prefix 57 # Set only if the private key is encrypted 58 keyFilePasswordSecretRef: 59 name: mdbs-tls-key-password 60 version: "1.70.1" 61 autoEmbedding: 62 embeddingModelAPIKeySecret: 63 name: embedding-model-api-query-key 64 providerEndpoint: https://ai.mongodb.com/v1/embeddings 65 featureFlags: 66 enableOverloadRetrySignal: true 67 logLevel: INFO 68 observability: 69 prometheus: 70 mode: enabled 71 port: 9946 72 metricsForwarder: 73 mode: auto 74 resourceRequirements: 75 requests: 76 cpu: 100m 77 memory: 128Mi 78 limits: 79 cpu: 250m 80 memory: 256Mi 81 deployment: 82 spec: 83 template: 84 spec: 85 nodeSelector: 86 kubernetes.io/os: linux 87 opsManager: 88 agentCredentials: 89 name: om-agent-api-key 90 projectConfigMapRef: 91 name: om-project-config 92 clusters: 93 - name: cluster-1 94 index: 0 95 replicas: 2 96 loadBalancer: 97 # Option 1: Operator-managed Envoy load balancer 98 managed: 99 externalHostname: "{shardName}.search.apps.example.com" 100 routerHostname: "search-router.apps.example.com:27028" 101 replicas: 2 102 resourceRequirements: 103 requests: 104 cpu: "100m" 105 memory: 128Mi 106 limits: 107 cpu: "500m" 108 memory: 512Mi 109 deployment: 110 spec: 111 template: 112 spec: 113 nodeSelector: 114 kubernetes.io/os: linux 115 retryPolicy: 116 numRetries: 2 117 perTryTimeout: "60s" 118 minMongotReadyReplicas: 1 119 # Option 2: User-provided (BYO) load balancer 120 # (mutually exclusive with managed) 121 unmanaged: 122 endpoint: "{shardName}-search-lb.corp.example.com:443" 123 resourceRequirements: 124 limits: 125 cpu: "3" 126 memory: 5Gi 127 requests: 128 cpu: "2" 129 memory: 4Gi 130 persistence: 131 single: 132 storage: 16G 133 storageClass: standard 134 statefulSet: 135 spec: 136 template: 137 spec: 138 nodeSelector: 139 kubernetes.io/os: linux 140 jvmFlags: 141 - -Xms2g 142 - -Xmx2g 143 advancedMongotConfigs: 144 someAdvancedSetting: value 145 syncSourceSelector: 146 matchTagSets: 147 - region: us-east-1 148 workload: search 149 - {} 150 shardOverrides: 151 - shardNames: 152 - shard-0 153 replicas: 3 154 resourceRequirements: 155 requests: 156 cpu: "4" 157 memory: 8Gi 158 persistence: 159 single: 160 storage: 32G 161 jvmFlags: 162 - -Xms4g 163 - -Xmx4g 164 statefulSet: 165 spec: 166 template: 167 spec: 168 nodeSelector: 169 disktype: ssd
Configurações necessárias
Esta seção descreve as configurações necessárias para implantar o recurso MongoDB pesquisa e pesquisa vetorial. Se você definir apenas as configurações necessárias na Definição de Recurso Personalizado (CRD), o Operador do MongoDB para Kubernetes usará os padrões para todas as configurações opcionais para configurar o MongoDBSearch.
apiVersionTipo: string
Versão do esquema de recursos do MongoDB Kubernetes. Defina o valor como
mongodb.com/v1.
kindTipo: string
Tipo de recurso MongoDB Kubernetes para criar. Defina isso como MongoDBSearch.
metadata.namespaceTipo: string
Namespace no qual criar o recurso MongoDBSearch. Para aproveitar a configuração automática do MongoDBSearch e dos recursos
MongoDBouMongoDBCommunity, crie o recurso MongoDBSearch no mesmo namespace que o recursoMongoDBouMongoDBCommunity.
metadata.nameTipo: string
Identificador exclusivo do recurso MongoDBSearch. O nome deve ser um nome de subdomínio DNS do Kubernetes válido. Mantenha o nome curto. O operador Kubernetes deriva os nomes dos recursos 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.clustersTipo : 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
mongotem uma implantação de vários clusters. Para a referência completa do campo, incluindonameeindex, consulte spec.clusters.
Configurações opcionais
Esta seção descreve as configurações opcionais do recurso MongoDB pesquisa e pesquisa vetorial. Se você omitir as configurações opcionais e definir apenas as configurações necessárias no CRD, o Operador do MongoDB Controladores para Kubernetes usará os padrões para todas as configurações opcionais para configurar o MongoDBSearch.
Configurações para configurar a fonte de dados
spec.sourceTipo: objeto
Configuração que descreve a origem MongoDB para
mongot. A origem pode ser um conjunto de réplicas ou um cluster fragmentado. Esta configuração é necessária se:MongoDBé externoMongoDBtem um nome diferente de MongoDBSearch
O recurso MongoDBSearch deve estar sempre conectado a uma implantação do MongoDB . Se você implantou usando o Operador Kubernetes com
MongoDBouMongoDBCommunityCRD e sespec.sourceestiver vazio, o Operador Kubernetes usará o seguinte com base emmetadata.namepara procurar o banco de dados no Kubernetes:Encontre recursos
MongoDBouMongoDBCommunitycom o mesmo nome definido parametadata.nameno MongoDBSearch, no mesmo namespace.Encontre o segredo da senha do usuário
mongotno segredo<MongoDBSearch.metadata.name>-<username>-password, que para o nome de usuário padrão produz<MongoDBSearch.metadata.name>-search-sync-source-password.
spec.source.mongodbResourceRef.nameTipo: string
Nome do
MongoDBouMongoDBCommunityrecurso a ser associado a este recurso do MongoDB Search e pesquisa vetorial. O Operador Kubernetes oferece suporte a conjuntos de réplicas e clusters fragmentados. Você não pode ter mais de um recurso MongoDBSearch referenciando o mesmo recursoMongoDBouMongoDBCommunity. Se você especificar um nome diferente, deverá ponto explicitamente para oMongoDBouMongoDBCommunityem que deseja ativar o MongoDB Search e a pesquisa vetorial.Se você fizer referência a um recurso de cluster
MongoDB, o Kubernetes operador descobrirá automaticamente a topologia do fragmento (nomes dos fragmentos, membros do conjunto de réplicas,mongosroteadores) e criará automaticamente omongotStatefulSets por fragmento. Você não precisa realizar nenhuma configuração externa adicional.Use esse campo somente se o recurso
MongoDBouMongoDBCommunityestiver implantado no mesmo cluster do Kubernetes e estiver no mesmo namespace que o recurso MongoDBSearch. Se você definir este campo, o operador Kubernetes automaticamente:Define connection strings adequadas para o banco de dados.
Reconfigura implantações de banco de dados MongoDB definindo os parâmetros necessários para habilitar a funcionalidade de pesquisa e configura os endereços dos pods de pesquisa.
Se o seu banco de dados for implantado fora do Kubernetes ou estiver em um namespace diferente, utilize o
spec.source.externalpara configurar a conexão com o banco de dados. Se você definir ambos os campos, ospec.source.externalterá precedência.Se omitido, o Operador Kubernetes procura um recurso
MongoDBouMongoDBCommunitycom o mesmo nome que este recurso MongoDBSearch.
spec.source.mongodbResourceRef.namespaceTipo: string
Namespace do recurso
MongoDBouMongoDBCommunityao qualspec.source.mongodbResourceRef.namese 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, usespec.source.external.
Configuração para configurar o usuário mongot
spec.source.usernameTipo: string
Nome de usuário para autenticar
mongotcommongod. O usuário especificado deve ter a funçãosearchCoordinator. Se omitido, o Operador Kubernetes assume que o nome de usuário ésearch-sync-source.
spec.source.passwordSecretRef.nameTipo: string
Nome do segredo que contém a senha que
mongotdeve usar para autenticar commongod. Se omitido, o padrão é<MongoDBSearch.metadata.name>-<username>-password, onde<username>é o valor despec.source.username. Para o nome de usuário padrãosearch-sync-source, isso resulta em<MongoDBSearch.metadata.name>-search-sync-source-password.
spec.source.passwordSecretRef.keyTipo: string
Chave sob a qual o valor da senha é armazenado no segredo. Se omitido, o padrão é
password.
Configurações para autenticação x509
spec.source.x509Tipo: objeto
Configura a autenticação do certificado de cliente x509 para a conexão de origem de sincronização do
mongot. Se você definir esse campomongotautenticado no MongoDB usando x509 em vez de nome de usuário e senha.Este campo é mutuamente exclusivo com
spec.source.passwordSecretRef,spec.source.usernameespec.source.tls. O Operador Kubernetes rejeita a configuração se você especificar x509 e autenticação de senha.
spec.source.x509.clientCertificateSecretRefTipo: objeto
Segredo que contém o certificado do cliente x509 e a chave para autenticar na origem de sincronização do MongoDB . O segredo deve conter as seguintes chaves:
tls.crt— Certificado de clientetls.key— chave privada
Se a chave privada for criptografada com uma senha, armazene a senha em um Secret separado e faça referência a ela com
spec.source.x509.keyFilePasswordSecretRef.Você deve especificar este campo se definir
spec.source.x509.Exemplo
spec: source: x509: clientCertificateSecretRef: name: mongot-x509-client-cert
spec.source.x509.keyFilePasswordSecretRefTipo: objeto
Segredo que contém a senha que descriptografa a chave privada criptografada por senha em
spec.source.x509.clientCertificateSecretRef. O segredo deve conter a senha na chavekeyFilePassword. Omita este campo se a chave privada não estiver criptografada.
Configurações para certificados de cliente TLS com autenticação SCRAM
spec.source.tlsTipo: objeto
Configura um certificado de cliente TLS para a conexão de origem de sincronização
mongotse você usar autenticação SCRAM (nome de usuário e senha). Se você definir este campo,mongotapresentará o certificado do cliente durante o handshake TLS com a implantação do MongoDB de origem (transporte TLS mútuo).mongotainda autentica com o nome de usuário e a senha.Use este campo apenas com autenticação SCRAM (
spec.source.passwordSecretRef). Este campo é mutuamente exclusivo comspec.source.x509. Se você quiser que o próprio certificado do cliente sirva como credencial de autenticação, usespec.source.x509em vez disso.
spec.source.tls.clientCertificateSecretRefTipo: objeto
Segredo que contém o certificado de cliente TLS e a chave que
mongotapresenta durante o handshake TLS com a implantação de origem do MongoDB. O segredo deve conter as seguintes chaves:tls.crt— Certificado de clientetls.key— chave privada
Você deve especificar este campo se definir
spec.source.tls.
spec.source.tls.keyFilePasswordSecretRefTipo: objeto
Segredo que contém a senha que descriptografa a chave privada criptografada por senha em
spec.source.tls.clientCertificateSecretRef. O segredo deve conter a senha na chavekeyFilePassword. Omita este campo se a chave privada não estiver criptografada.
Configurações para conexão ao MongoDB externo
As configurações a seguir são necessárias apenas para configurar uma conexão com um MongoDB implantação externo.
spec.source.externalTipo: objeto
Configurações que descrevem a fonte de dados externa. Este objeto descreve as configurações 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.keyfileSecretRefTipo: objeto
Segredo que contém o arquivo de chave
mongodque omongotusa para se conectar à implantação externa do MongoDB.
spec.source.external.keyfileSecretRef.nameTipo: string
Nome do Secret que contém o keyfile. Você deve especificar este campo se definir
spec.source.external.keyfileSecretRef.
spec.source.external.keyfileSecretRef.keyTipo: string
Chave sob a qual o keyfile é armazenado no segredo. Este campo é opcional.
Configurações para conexão com um conjunto de réplicas externas
spec.source.external.hostAndPortsTipo: array de strings
Lista de nomes de hosts e portas do conjunto de réplicas externas. Esta é uma lista de sementes de host para o conjunto de réplicas MongoDB . O
mongotse conecta ao banco de dados em um modo de conjunto de réplicas e obtém a lista de todos os outros nós usandodb.hello().Este campo é mutuamente exclusivo com
spec.source.external.shardedCluster. UsehostAndPortspara fontes de conjunto de réplicas eshardedClusterpara fontes de cluster fragmentado .Exemplo
hostAndPorts: - mdbc-rs-0.my-external-domain.example.com:27017 - mdbc-rs-1.my-external-domain.example.com:27017 - mdbc-rs-2.my-external-domain.example.com:27017
spec.source.external.tlsTipo: objeto
Configurações de TLS que o
mongotdeve usar ao conectar ao banco de dados MongoDB externo.
spec.source.external.tls.ca.nameTipo: string
Nome do 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.crtneste ConfigMap.Exemplo
kind: ConfigMap apiVersion: v1 metadata: name: trusted-ca data: ca.crt: | -----BEGIN CERTIFICATE----- MIIDBTCCAe2gAwIBAgIIH3EOUAGAsx0wDQYJKoZIhvcNAQELBQAwFTETMBEGA1UE [...] U/4rN8Ias/FONYFRtGfs9uXHmo2MP04BF+9ED2dlbNDUbat+6XCozLJj98nI4VEi qaV3JrVFHTgN -----END CERTIFICATE-----
Configurações para conexão a um cluster fragmentado externo
As configurações a seguir são necessárias apenas para configurar uma conexão com um cluster fragmentado externo do MongoDB . Elas estendem as configurações spec.source.external existentes.
Observação
spec.source.external.hostAndPorts (para conjuntos de réplicas) e spec.source.external.shardedCluster são mutuamente exclusivos. Especifique apenas um deles.
spec.source.external.shardedClusterTipo: objeto
Declara um cluster MongoDB fragmentado externo como fonte de dados para
mongot. Contém configuração para roteadoresmongose membros do conjunto de réplicas por fragmento.Use isso somente se o cluster fragmentado MongoDB for implantado fora do Kubernetes e não for gerenciado pelo Kubernetes operador. Para clusters fragmentados gerenciados pelo operador implantados com o CRD do
MongoDB, utilize ospec.source.mongodbResourceRefem vez disso. O operador Kubernetes descobre automaticamente a topologia de fragmento.Exemplo
spec: source: external: shardedCluster: router: hosts: - "mongos1.external:27017" - "mongos2.external:27017" shards: - shardName: "shard-0" hosts: - "shard0-node1.external:27018" - "shard0-node2.external:27018" - shardName: "shard-1" hosts: - "shard1-node1.external:27018" - "shard1-node2.external:27018"
spec.source.external.shardedCluster.routerTipo: objeto
Configuração para as instâncias do
mongos(roteador) do cluster fragmentado externo.
spec.source.external.shardedCluster.router.hostsTipo: array de strings
Lista de endpoints para as instâncias do roteador
mongosno formatohost:port. Todas as instâncias domongotse conectam a estes roteadores. Especifique pelo menos uma entrada.Exemplo
router: hosts: - "mongos1.external:27017" - "mongos2.external:27017"
spec.source.external.shardedCluster.shardsTipo : array de objetos
Lista de todos os fragmentos no cluster MongoDB externo. Cada entrada descreve o conjunto de réplicas de um fragmento. O Operador Kubernetes cria um
mongotStatefulSet para cada fragmento, onde cada StatefulSet contém o número de pods especificados nospec.clusters[].replicas. Especifique pelo menos uma entrada de fragmento.
spec.source.external.shardedCluster.shards[*].shardNameTipo: string
O nome lógico do fragmento. O Operador do Kubernetes utiliza este nome para nomear recursos do Kubernetes (StatefulSets, Services, Secrets). O valor pode ser diferente do nome do fragmento MongoDB.
Restrições de nomeação:
Deve ser exclusivo em todos os fragmentos.
Deve estar em conformidade com as regras de nome de 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 eshardNamenos 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. MantenhashardNamecurto o suficiente para esses limites.
Exemplo
shards: - shardName: "shard-0" hosts: - "shard0-node1.external:27018"
spec.source.external.shardedCluster.shards[*].hostsTipo: array de strings
Lista de pontos de extremidade dos membros do conjunto de réplicas do
mongodpara este fragmento no formatohost:port. As instânciasmongotreplicam dados desses hosts. Especifique pelo menos uma entrada.Cada conjunto de réplicas (fragmento) tem seu próprio grupo de instâncias
mongot, que fornecem dados somente desse conjunto de réplicas. Fragmentos diferentes nunca compartilham as mesmas instânciasmongot.Exemplo
shards: - shardName: "shard-0" hosts: - "shard0-node1.external:27018" - "shard0-node2.external:27018" - "shard0-node3.external:27018"
Configurações para implantação de cluster
As seguintes configurações descrevem cada entrada do array spec.clusters necessário.
spec.clustersTipo : array de objetos
Configuração de implantação por cluster Kubernetes para 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,jvmFlagsestatefulSet, ficam dentro de uma entradaclusters. Essas configurações não têm equivalentes de nível superior.Para uma implantação de cluster único, especifique uma entrada. Você pode omitir
nameeindex.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[].nameTipo: string
Nome do cluster Kubernetes para esta entrada, com um comprimento máximo de 253 caracteres. Você pode omitir este campo para uma implantação de cluster único.
Se
spec.clusterscontiver mais de uma entrada,nameserá necessário, deverá ser exclusivo em todas as entradas e não poderá ser alterado após a criação do recurso.
spec.clusters[].indexTipo: inteiro
Identificador de inteiro estável do cluster Kubernetes para esta entrada. O valor deve estar entre
0e999e deve ser exclusivo em todas as entradas. Sespec.clusterscontiver mais de uma entrada,indexserá necessário em cada entrada.O operador do Kubernetes inclui o índice nos nomes dos recursos do Kubernetes que ele cria para esta entrada de cluster, por exemplo,
{name}-search-{index}para StatefulSets,{name}-search-{index}-svcpara Serviços e{name}-search-{index}-configpara ConfigMaps. Para fontes de cluster sharded, os nomes também incluem o nome do shard, por exemplo,{name}-search-{index}-{shardName}e{name}-search-{index}-{shardName}-svc.Aviso
Não altere o
indexde uma entrada existente 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, definaindexexplicitamente 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.
Dimensionamento e armazenamento
spec.clusters[].replicasTipo: inteiro
Número de pods
mongota implantar neste cluster Kubernetes. Para uma fonte de conjunto de réplicas, este é o número total de podsmongot. Para uma fonte de cluster sharded, este é o número de podsmongotpor shard.Se
spec.clusters[].replicasfor maior que1, você também deverá configurarspec.clusters[].loadBalancerpara rotear o tráfego entremongode as múltiplas instânciasmongot.Se você definir
spec.clusters[].replicascomo0, o operador do Kubernetes colocará a implantaçãomongotneste cluster offline. O operador 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[].resourceRequirementsTipo: core/v1/ResourceRequirements
CPU e memória para as quais o container
mongodb-searchpode solicitar e ser limitado. Recomendamos usar esse campo para personalizar as alocações de recursos em vez de substituí-lo porspec.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êinermongot. Ajustespec.clusters[].resourceRequirementsadequadamente para controlar os recursos do pod e o tamanho do heap da JVM.Se omitido, o Kubernetes Operator usa os seguintes valores padrão:
requests: cpu: 2 memory: 4Gi
spec.clusters[].resourceRequirements.limitsTipo: objeto
Limite superior dos recursos (CPU e memória) que o contêiner
mongodb-searchpode 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.requestsTipo: objeto
Quantidade de CPU e memória solicitada para o contêiner
mongodb-search. Se você especificar apenas um decpuoumemory, 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.singleTipo: objeto
Configuração de armazenamento para o volume de persistência do MongoDB Search e Vector Search onde os índices do MongoDB Search e Vector Search são armazenados. Cada instância de pesquisa (pod) tem seu próprio armazenamento independente para manter índices, que não é compartilhado com o banco de dados MongoDB . Somente metadados de índice (definições) são armazenados no próprio banco de dados .
EscalarTipo de DadosDescriçãolabelSelectorstring
Tag usada para vincular volumes montados a diretórios.
storagestring
Tamanho mínimo do volume persistente 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.storageClassstring
Tipo de armazenamento especificado em uma declaração de volume persistente. Você pode criar esse tipo de armazenamento como um objeto StorageClass antes de usá-lo nesta especificação de objeto.
Certifique-se de definir a StorageClass
reclaimPolicycomo Retain. Isso garante que os dados sejam mantidos quando uma declaração de volume persistente for removida.O MongoDBSearch suporta apenas o modo de persistência
single, que usa um volume para todos os dados. Embora o esquema CRD também contenha um campospec.clusters[].persistence.multiple, o operador Kubernetes não o aplica. Se você omitirpersistence, o operador Kubernetes definiráspec.clusters[].persistence.single.storagecomo16G.
Balanceamento de carga
spec.clusters[].loadBalancerTipo: objeto
Configuração para balanceamento de carga L7 entre
mongod(oumongos) emongot. Este campo é obrigatório sespec.clusters[].replicasfor maior que1. Sespec.clusters[].replicasfor1, este campo será opcional. Você pode configurar um balanceador de carga mesmo para uma única instância domongotpara preparar-se para o dimensionamento posterior.Exatamente um entre
managedouunmanageddeve ser definido.Todas as entradas em
spec.clustersdevem concordar com o modo de balanceador de carga: ou cada entrada defineloadBalancer.managed, cada entrada defineloadBalancer.unmanaged, ou nenhuma entrada defineloadBalancer. O Kubernetes Operator rejeita modos mistos. As implantações de vários clusters suportam apenas o modo gerenciado.O balanceador de carga afeta quais certificados TLS os clientes
mongodveem e quais nomes de host esses certificados devem conter:Sem um balanceador de carga, o
mongodconecta diretamente aomongot. O certificado TLS apresentado amongodé o próprio certificado demongot. Se o cluster MongoDB estiver fora do Kubernetes, o serviçomongotserá exposto em um domínio externo. Você deve incluir esse domínio externo no campo SAN ( nome alternativo do assunto ) do certificado TLSmongot.Com um balanceador de carga gerenciado (
spec.clusters[].loadBalancer.managed), o proxy Envoy é o único componente que se conecta diretamente aomongot. O proxy Envoy atingemongotpor meio dos FQDNs de serviço internos:conjunto de réplicas:
<name>-search-<clusterIndex>-svc.<ns>.svc.cluster.localcluster 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 certificadomongotapenas em relação à autoridade de certificação e não corresponde aos nomes de host SAN. Os processos externosmongodveem o certificado TLS do proxy Envoy, portanto, inclua domínios externos nos SANs do certificado Envoy, não no certificadomongot.
Dica
Habilite um balanceador de carga gerenciado mesmo se você implantar inicialmente um único pod do
mongot. Com o balanceador de carga em vigor, os domínios em seus certificados TLS permanecerão estáveis se você dimensionarspec.clusters[].replicasmais tarde, pois o balanceador de carga já está presente entremongodemongot.
spec.clusters[].loadBalancer.managedTipo: objeto
Configura um balanceador de carga Envoy gerenciado pelo operador. O Operador do Kubernetes implementa e gerencia o proxy Envoy com roteamento correto, mTLS e fixação de fluxo HTTP/2+gRPC. Defina este campo como um objeto vazio (
{}) para usar os padrões.Este campo é mutuamente exclusivo com
spec.clusters[].loadBalancer.unmanaged.Para fontes de cluster sharded, você também deve configurar
spec.security.tlsse usar um balanceador de carga gerenciado. O proxy Envoy roteia o tráfego para o shard correto usando SNI, que requer TLS.Exemplo
spec: clusters: - loadBalancer: managed: {}
spec.clusters[].loadBalancer.managed.externalHostnameTipo: string
Nome de host que o proxy Envoy espera para correspondência SNI nas solicitações recebidas. O Kubernetes operador usa esse valor para configurar as regras de roteamento que correspondam ao campo TLS SNI das conexões
mongodde entrada. O certificado do servidor Envoy TLS deve incluir este nome de host em seu campo SAN ( nome alternativo do assunto ).Para 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.routerHostnameTipo: string
Ponto de extremidade que os roteadores
mongosusam para alcançar as instânciasmongotdeste cluster por meio do balanceador de carga Envoy gerenciado, no formatohost:port. O Operador Kubernetes usa o nome do host para correspondência SNI na cadeia de roteamento de nível de cluster, portanto, o certificado do servidor Envoy TLS deve incluir esse nome de host em seus SANs.Este campo é necessário se você usar um balanceador de carga gerenciado com uma origem MongoDB sharded externa (
spec.source.external.shardedCluster). O operador Kubernetes ignora este campo para origens de conjunto de réplicas e para MongoDB gerenciado pelo operador.Ao contrário do
externalHostname, o Operador Kubernetes usa esse valor literalmente, portanto, o valor não deve conter um placeholder{shardName}. Este ponto de extremidade é o ponto de entrada agnóstico de shard paramongos.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.replicasTipo: inteiro
Número de pods de proxy do Envoy a serem implantados neste cluster do Kubernetes. O valor deve ser
1ou superior. Se omitido, o padrão é1.
spec.clusters[].loadBalancer.managed.resourceRequirementsTipo: core/v1/ResourceRequirements
CPU e memória que o contêiner Envoy pode solicitar e ser limitado. Se você especificar esta configuração, o Operador Kubernetes substituirá completamente os padrões.
Se omitido, o Kubernetes Operator usa os seguintes valores padrão:
requests: cpu: 100m memory: 128Mi limits: cpu: 500m memory: 512Mi Exemplo
spec: clusters: - loadBalancer: managed: resourceRequirements: requests: cpu: "200m" memory: "256Mi" limits: cpu: "1" memory: "1Gi"
spec.clusters[].loadBalancer.managed.deploymentTipo: objeto
Substituições que o operador Kubernetes mescla na Implantação do Envoy criada pelo operador. Segue a mesma convenção que
spec.statefulSetnos recursos do MongoDB . Se omitido, o Kubernetes Operator usa padrões para a implantação Envoy.Este objeto contém dois campos:
metadata— contémlabelseannotationscampos que o Operador Kubernetes mescla nos metadados da implantação do Envoy.spec— um objeto apps/v1/DeploymentSpec. O Operador Kubernetes mescla essas substituições na especificação da implantação do Envoy.
Exemplo
spec: clusters: - loadBalancer: managed: deployment: spec: template: spec: nodeSelector: kubernetes.io/os: linux
spec.clusters[].loadBalancer.managed.retryPolicyTipo: objeto
Comportamento de repetição que o proxy Envoy aplica a streams gRPC individuais para as instâncias
mongotupstream. O proxy Envoy envia cada tentativa de repetição para um hostmongotdiferente da tentativa com falha.Se você omitir este campo, o proxy do Envoy tentará novamente com os valores padrão:
2tentativas com um tempo limite por tentativa de60s.Exemplo
spec: clusters: - loadBalancer: managed: retryPolicy: numRetries: 2 perTryTimeout: "60s"
spec.clusters[].loadBalancer.managed.retryPolicy.numRetriesTipo: inteiro
Número máximo de tentativas por solicitação. O valor deve ser
1ou superior. Se omitido, o padrão é2, o que permite três tentativas no total para cada solicitação.
spec.clusters[].loadBalancer.managed.retryPolicy.perTryTimeoutTipo: string
Tempo limite para cada tentativa individual, incluindo a solicitação original, expressa como uma string de duração (por exemplo,
"30s"). Se omitido, o padrão é"60s".
spec.clusters[].loadBalancer.managed.minMongotReadyReplicasTipo: inteiro
Número mínimo de réplicas
mongotprontas que um grupomongot(por exemplo, as instânciasmongotde um shard) deve ter antes que o proxy Envoy direcione o tráfego para ele. Enquanto um grupo estiver abaixo desse limite, o proxy Envoy encaminhará o tráfego destinado a esse grupo para um grupomongotsaudável e marcará as solicitações com o cabeçalhorouted_from_another_shard. Essas solicitações retornam resultados vazios em vez de erros.O valor deve ser
1ou superior. Se omitido, o padrão é1.
spec.clusters[].loadBalancer.unmanagedTipo: objeto
Configura um balanceador de carga L7 fornecido pelo usuário. 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.endpointTipo: string
O ponto de extremidade do balanceador de carga BYO no formato
host:port. Você deve especificar este campo se configurarspec.clusters[].loadBalancer.unmanaged.Se o Kubernetes Operator gerenciar a implantação do MongoDB (usando
spec.source.mongodbResourceRef), o Kubernetes Operator gravará esse valor na configuraçãomongodcomomongotHostesearchIndexManagementHostAndPort. Se o MongoDB for externo, você configurará os parâmetrosmongodvocê 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"
Substituições por shard
spec.clusters[].shardOverridesTipo : 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 emspec.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,persistenceoujvmFlagsem uma substituição, eles substituirão o valor do cluster para os shards nomeados. O operador Kubernetes mescla profundamentestatefulSetno 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[*].shardNamesTipo: 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[*].replicasTipo: inteiro
Substitui a contagem de réplicas
mongotdo cluster para os shards nomeados. Um valor de0desativa as instânciasmongotpara esses shards.
spec.clusters[].shardOverrides[*].resourceRequirementsTipo: core/v1/ResourceRequirements
Substitui as solicitações e limites de CPU e memória do cluster para os shards nomeados.
spec.clusters[].shardOverrides[*].persistenceTipo: 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[*].statefulSetTipo: 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[].statefulSetdo cluster em vez de substituí-lo.
spec.clusters[].shardOverrides[*].jvmFlagsTipo: array de strings
Substitui o
spec.clusters[].jvmFlagsdo cluster para os shards nomeados se você o definir como uma lista não vazia. As regras de formato paraspec.clusters[].jvmFlagstambém se aplicam a este campo.
Seleção da fonte de sincronização
spec.clusters[].syncSourceSelectorTipo: objeto
Seleciona de quais nós
mongodas instânciasmongotnesta entrada de cluster sincronizam os dados.
spec.clusters[].syncSourceSelector.matchTagSetsTipo : array de objetos
Lista ordenada de conjuntos de tags de conjunto de réplicas que seleciona os nós de origem de sincronização
mongodpor suas tags de conjunto de réplicas. O operador do Kubernetes passa a lista para a configuraçãomongot.mongotsincroniza a partir dos nós que o primeiro conjunto de tags correspondente seleciona e prefere nós secundários.Cada entrada é um mapa de nomes de tags para valores de tags. Um documento vazio (
{}) corresponde a qualquer nó, para que você possa anexar uma entrada{}à direita como um fallback de correspondência se nenhum conjunto de tags anterior corresponder. Você pode especificar no máximo 50 entradas.Exemplo
spec: clusters: - syncSourceSelector: matchTagSets: - region: us-east-1 workload: search - {}
JVM Flags
spec.clusters[].jvmFlagsTipo: array de strings
Sinalizadores JVM passados para o processo
mongot. O Operador Kubernetes inclui os sinalizadores sem modificação no comando de inicialização domongotutilizando--jvm-flags "<all flags space-separated>".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
-Xmsou-Xmxneste campo, o Operador Kubernetes calculará automaticamente o tamanho do heap configurando ambos para metade despec.clusters[].resourceRequirements.requests.memory. Se você não especificar os requisitos de recursos, o Kubernetes operador usará um padrão de 4Solicitação de memória Gi, gerando aproximadamente-Xmx2048m -Xms2048m.Se você fornecer seus próprios valores
-Xmsou-Xmx, o Operador Kubernetes os utilizará e não substituirá os valores. O operador Kubernetes sempre anexa os sinalizadores fornecidos após os sinalizadores calculados pelo operador.Para saber mais, consulte Dimensionamento de hardware para mongot.
Exemplo
spec: clusters: - jvmFlags: - -Xms2g - -Xmx2g
Substituições de StatefulSet
spec.clusters[].statefulSetTipo: objeto
Substituições para o StatefulSet que o operador Kubernetes cria para implantar
mongotpods. 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émlabelseannotationscampos 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 camposspec.clusters[].resourceRequirementsespec.clusters[].persistencerespectivamente.
Configurações avançadas do mongot
spec.clusters[].advancedMongotConfigsTipo: objeto
Configurações avançadas de
mongotpara esta entrada de cluster. O operador Kubernetes renderiza o valor literalmente sob a chaveadvancedConfigsdo arquivo de configuraçãomongot, sem lê-lo ou modificá-lo. Este campo não afeta as configurações que o operador Kubernetes gera em outro lugar na configuraçãomongot.Use este campo apenas para configurações
mongotque o recurso MongoDBSearch não expõe como campos de primeira classe.
Configurações de segurança
spec.securityTipo: objeto
Configurações de segurança para
mongotservidor de escuta.
spec.security.tlsTipo: objeto
Configurações de TLS para
mongot. Se omitido, omongotnão utilizará TLS para conexões recebidas.Se você usar um balanceador de carga gerenciado com uma fonte de cluster sharded, este campo será necessário. O proxy Envoy roteia o tráfego para o shard correto usando SNI, que depende do TLS ClientHello. O operador do Kubernetes falha na reconciliação se você omitir
spec.security.tlsnesta configuração.
spec.security.tls.certificateKeySecretRef.nameTipo: string
Descontinuado desde a versão 1.8.0. : Em vez disso, use
spec.security.tls.certsSecretPrefix.Nome do segredo TLS no mesmo namespace que contém a chave privada (
tls.key) e o certificado (tls.crt). O segredo pode ser do tipokubernetes.io/tls(que é emitido pelo cert-manager) ou pode ser criado manualmente.O Operador Kubernetes ainda suporta este campo para implantações de conjunto de réplicas para compatibilidade com versões anteriores. No entanto:
Para sistemas de cluster fragmentado , o Operador Kubernetes rejeita este campo durante a validação. Em vez disso, use
spec.security.tls.certsSecretPrefix, porque uma única referência secreta não pode cobrir certificados por fragmento.Se você especificar
certificateKeySecretRefecertsSecretPrefix,certificateKeySecretRefterá precedência para implantações do conjunto de réplicas.
Para novas implantações, utilize o
spec.security.tls.certsSecretPrefixmesmo para conjuntos de réplica.
spec.security.tls.certsSecretPrefixTipo: string
Prefixo que o operador Kubernetes usa para derivar nomes secretos TLS por convenção de nomenclatura. Se você definir esse campo}, o operador Kubernetes procurará segredos seguindo esses padrões em vez de exigir referências secretas explícitas para cada componente:
ComponentePadrão de nome secretoCertificado de servidor
mongotdo conjunto de réplicas{certsSecretPrefix}-{name}-search-certCertificado
mongotsharded (por cluster e shard){certsSecretPrefix}-{name}-search-{clusterIndex}-{shardName}-certCertificado de servidor de balanceador de carga gerenciado (por cluster, todas as topologias)
{certsSecretPrefix}-{name}-search-lb-{clusterIndex}-certCertificado de cliente balanceador de carga gerenciado
{certsSecretPrefix}-{name}-search-lb-{clusterIndex}-client-certOnde:
{name}émetadata.namedo recurso MongoDBSearch{clusterIndex}é o valor despec.clusters[].index(0para uma implantação de cluster único que não define um índice){shardName}é o valor despec.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
externalHostnamee orouterHostname.O Operador Kubernetes resolve o nome secreto do certificado do servidor
mongotna seguinte ordem:Se você definir
spec.security.tls.certificateKeySecretRef.name, o operador Kubernetes usará esse nome.Se você definir
certsSecretPrefix, o Kubernetes operador usará os padrões de nomenclatura na tabela anterior.Se você não definir nenhum dos campos, o operador Kubernetes usa o nome padrão
{name}-search-certpara implantações de conjunto de réplicas, ou o padrão por shard padrão{name}-search-{clusterIndex}-{shardName}-certpara implantações sharded.
Se você não definir
certsSecretPrefix, os certificados do balanceador de carga gerenciado também usarão nomes padrão: o operador Kubernetes monta{name}-search-lb-{clusterIndex}-certpara o certificado do servidor e{name}-search-lb-{clusterIndex}-client-certpara o certificado do cliente.Observação
Para implantações de cluster sharded, o Operador Kubernetes rejeita
certificateKeySecretRefporque uma única referência secreta não pode cobrir certificados por shard. UsecertsSecretPrefix, 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.keyFilePasswordSecretRefTipo: objeto
Segredo que contém a senha que descriptografa a chave privada do servidor criptografada por senha no segredo do certificado TLS. O segredo deve conter a senha sob a chave
keyFilePassword. Omita este campo se a chave privada do servidor não estiver criptografada.
Configurações para registro
spec.logLevelTipo: string
Verbosidade dos registros do
mongot. O valor pode ser um dos seguintes:TRACEDEBUGINFOWARNERROR
Se omitido, o padrão é
INFO.
Configurações para métricas
spec.observabilityTipo: objeto
Configurações de observabilidade para o recurso MongoDBSearch, incluindo o ponto de extremidade de métricas do Prometheus em
mongote o encaminhador de métricas para o MongoDB Ops Manager.
spec.observability.prometheusTipo: 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ão9946. Para desabilitar o ponto de extremidade, definaspec.observability.prometheus.modecomodisabled. Para alterar a porta, definaspec.observability.prometheus.port.
spec.observability.prometheus.modeTipo: string
Ativa ou desativa o ponto de extremidade de métricas do Prometheus em
mongot. O valor pode ser um dos seguintes:enableddisabled
Se omitido, o padrão é
enabled.
spec.observability.prometheus.portTipo: inteiro
Porta na qual ativar o ponto de extremidade de métricas Prometheus. Por padrão, o ponto de extremidade de métricas Prometheus está habilitado na porta
9946.
spec.observability.metricsForwarderTipo: objeto
Configuração para o encaminhador de métricas, uma implantação que o operador Kubernetes cria para raspar as métricas do Prometheus
mongote encaminhá-las para o MongoDB Ops Manager.
spec.observability.metricsForwarder.modeTipo: string
Se o operador Kubernetes cria o encaminhador de métricas. O valor pode ser um dos seguintes:
auto— O Operador Kubernetes cria o encaminhador para fontes gerenciadas pelo operadorMongoDB(com suporte do Ops Manager) e para fontes externas somente se você definirspec.observability.metricsForwarder.opsManager. Para fontesMongoDBCommunity, o Operador Kubernetes não cria o encaminhador.enabled— O Operador Kubernetes sempre cria o encaminhador. Se a origem for um recursoMongoDBCommunity, o Operador Kubernetes relata um erro porque o encaminhador não é compatível com origensMongoDBCommunity.disabled— O operador do Kubernetes nunca cria o encaminhador.
Se omitido, o padrão é
auto.Os modos
enabledeautoexigem que o ponto de extremidade do Prometheus (spec.observability.prometheus) esteja habilitado. Se você desabilitar o ponto de extremidade, o Kubernetes Operator relatará um status de encaminhador de métricasInvalid.
spec.observability.metricsForwarder.resourceRequirementsTipo: core/v1/ResourceRequirements
CPU e memória que o contêiner do encaminhador de métricas pode solicitar e 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.deploymentTipo: 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 campometadatacomlabelseannotations, e um campospeccom um objeto apps/v1/DeploymentSpec.
spec.observability.metricsForwarder.opsManagerTipo: objeto
Projeto e credenciais do MongoDB Ops Manager para os quais o encaminhador de métricas envia métricas. Se omitido, o operador Kubernetes deriva o projeto e as credenciais da configuração de conexão do recurso MongoDB de origem. Defina este campo para fontes externas do MongoDB, onde não existe nenhum recurso MongoDB de origem.
Se você definir este campo, deverá definir
agentCredentialseprojectConfigMapRef.
spec.observability.metricsForwarder.opsManager.agentCredentials.nameTipo: 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.nameTipo: 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.
Configurações para incorporação automática
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.autoEmbeddingTipo: objeto
Configuração para incorporação automática de dados de texto em sua coleção.
spec.autoEmbedding.embeddingModelAPIKeySecretTipo: objeto
Configuração para as chaves API do fornecedor do modelo de incorporação. Para habilitar a Incorporação Automática, você deve criar duas chaves, uma para gerar incorporações no momento do índice para os dados da sua coleção e outra para gerar incorporações no momento da query para o texto da query. Se você ainda não tiver as chaves, recomendamos que crie chaves a partir de dois projetos do Atlas . Para saber mais sobre como criar chaves para os projetos do Atlas a partir da IU do Atlas, consulte Gerenciar chaves de API.
spec.autoEmbedding.embeddingModelAPIKeySecret.nameTipo: string
Nome do segredo que contém as chaves API do modelo de embedding que
mongotdeve usar para gerar embeddings no momento do índice e da query. O segredo deve conter a chave de tempo de índice sob a chaveindexing-keye a chave de tempo de query sob a chavequery-key.Você pode omitir
embeddingModelAPIKeySecretsomente sespec.autoEmbedding.providerEndpointapontar para o serviço de embedding Voyage AI autohospedado e gerenciado pelo operador. Caso contrário, o operador Kubernetes o exige.
spec.autoEmbedding.providerEndpointTipo: string
URL 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
Configurações para sinalizadores de recursos
spec.featureFlagsTipo: objeto
Sinalizadores de recursos para
mongot. Se você definir um sinalizador comotrue, o operador do Kubernetes o renderizará na configuraçãomongot. Se você omitir o objetofeatureFlagsou um sinalizador individual, o padrão de esquema para esse sinalizador será aplicado (trueparaenableOverloadRetrySignal).
spec.featureFlags.enableOverloadRetrySignalTipo: booleano
Ativa o sinal de nova tentativa de sobrecarga
mongot. Se você ativar esse sinalizador,mongotsinalizará o descarregamento de carga para proxies upstream (como o balanceador de carga Envoy gerenciado pelo operador) por meio de respostas gRPCRESOURCE_EXHAUSTED. Os proxies, então, tentam novamente a solicitação em outra instânciamongot.Se omitido, o padrão é
true.
Outras configurações
spec.versionTipo: string
Versão da imagem do Docker
mongodb-search. Se omitido, o Kubernetes operador usará a versão padrão do MongoDB Search incluída nele. Você pode definir a versão explicitamente para evitar atualizações automáticas ao atualizar o Kubernetes Operator.
Campos de status
O Operador Kubernetes relata informações de status no campo status do recurso MongoDBSearch.
status.phaseTipo: string
Fase atual do recurso MongoDBSearch. Os valores possíveis incluem
Pending,Running,Failed,Disabled,UpdatedeUnsupported.Este campo está visível na saída
kubectl getna colunaPHASE.
status.messageTipo: string
Mensagem legível por humanos com detalhes sobre o status atual, como o motivo pelo qual o recurso está em uma fase
PendingouFailed.
status.lastTransitionTipo: string
Carimbo de data/hora da última transição de
status.phase.
status.observedGenerationTipo: inteiro
Geração do recurso MongoDBSearch que o Operador Kubernetes processou pela última vez.
status.warningsTipo: array de strings
Avisos que o Kubernetes operador relata para o recurso.
status.versionTipo: string
Versão do MongoDB Search (
mongot) que o operador do Kubernetes reconciliou.Este campo está visível na saída
kubectl getna colunaVERSION.
status.resourcesNotReadyTipo : array de objetos
Recursos dependentes do Kubernetes que ainda não estão prontos. Cada entrada relata o
kinde onamedo recurso e ummessageopcional e uma lista deerrors.
status.pvcTipo : array de objetos
Estado das reivindicações de volume persistente dos
mongotStatefulSets. Cada entrada relata ophasee ostatefulsetNameaos quais as reivindicações pertencem.
status.loadBalancerTipo: objeto
Status do balanceador de carga gerenciado pelo operador (Envoy). Este campo está presente somente se você definir
spec.clusters[].loadBalancer.managed. Para implantações de vários cluster, o Operador Kubernetes relata a pior fase em todas as implantações do Envoy de todos os cluster.
status.loadBalancer.phaseTipo: string
Fase atual do balanceador de carga gerenciado. Os valores possíveis incluem
Pending,RunningeFailed. O Operador Kubernetes relata esta fase independentemente dostatus.phaseprincipal, para que você possa monitorar a implantação do Envoy separadamente.Este campo também está visível na saída
kubectl getna colunaLOADBALANCER.
status.loadBalancer.messageTipo: string
Mensagem legível por humanos com detalhes sobre o status do balanceador de carga gerenciado.
status.metricsForwarderTipo: objeto
Status do encaminhador de métricas.
status.metricsForwarder.phaseTipo: string
Fase atual do encaminhador de métricas. Os valores possíveis incluem
Pending,RunningeFailed. A fase relataDisabledse você definirspec.observability.metricsForwarder.modecomodisabled.Este campo também está visível na saída
kubectl getna colunaMETRICSFORWARDER.
status.metricsForwarder.messageTipo: string
Mensagem legível por humanos com detalhes sobre o status do encaminhador de métricas.
status.clustersTipo : 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[].nameTipo: string
Nome do cluster de membros. Vazio em sistemas de cluster único.
status.clusters[].indexTipo: 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[].searchTipo: string
Pior fase nos StatefulSets
mongotdeste cluster. Um cluster executa um StatefulSetmongotpara uma origem do conjunto de réplicas ou um por fragmento para uma origem fragmentada. Os valores podem serPending,RunningouFailed.
status.clusters[].searchMessageTipo: string
Mensagem legível por humanos com a razão quando
status.clusters[].searchnão éRunning.
status.clusters[].loadBalancerTipo: 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,RunningouFailed.
status.clusters[].loadBalancerMessageTipo: string
Mensagem legível por humanos com a razão quando
status.clusters[].loadBalancernão éRunning.
status.clusters[].metricsForwarderTipo: 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,RunningouFailed.
status.clusters[].metricsForwarderMessageTipo: string
Mensagem legível por humanos com a razão quando
status.clusters[].metricsForwardernão éRunning.
Exemplo
kubectl get mdbs NAME PHASE VERSION LOADBALANCER METRICSFORWARDER AGE mdb-rs-ext-lb-search Running 1.70.1 Running Running 14m