Importante
As configurações nesta página existem para dar suporte à migração de uma implantação autogerenciada para o Kubernetes sob o Kubernetes operador. Não os defina em um recurso MongoDB que você implanta diretamente no Kubernetes sem uma migração associada.
Esta página documenta os campos de recurso MongoDB, condições de status e anotações que se aplicam apenas durante uma migração de uma implantação de máquina virtual autogerenciada para o Kubernetes. Para o conjunto completo de configurações de recurso MongoDB, consulte Especificação de recurso de banco de dados MongoDB.
Membros externos
Esses campos identificam a máquina virtual de origem ou os processos bare-metal que uma migração está estendendo para o Kubernetes. Eles se aplicam ao recurso MongoDB, apiVersion: mongodb.com/v1.
Importante
Esses campos existem apenas para migração. Não os defina em um recurso MongoDB para uma implantação Kubernetes greenfield.
spec.externalMembersTipo: array de objetos
ExternalMemberOs processos de origem da máquina virtual ou bare-metal que fazem parte da migração. Este campo é apenas para migração.
Você pode remover entradas desta lista, mas nunca deve adicionar entradas depois que a migração começou. Uma lista
spec.externalMembersvazia significa que a migração está concluída.
spec.externalMembers[].processNameTipo: string
Obrigatório
Este campo existe apenas para migração. O nome do processo exatamente como aparece no array
processesda configuração de automação.
spec.externalMembers[].hostnameTipo: string
Obrigatório
Este campo existe apenas para migração. O valor
host:portpara o processo, exatamente como aparece na configuração de automação.
Sobreposições de nome
Esses campos existem apenas para migração e substituem o nome da configuração de recurso ou automação que o Kubernetes operador usaria ou geraria de outra forma.
spec.replicaSetNameOverrideTipo: string
Este campo existe apenas para migração. O nome do conjunto de réplicas da configuração de automação, quando difere do nome do recurso do Kubernetes ou quando o nome do conjunto de réplicas da configuração de automação não é um nome válido do Kubernetes. O plugin
kubectl mongodb migrate-to-mckdefine este campo para você por meio de seu sinalizador--resource-name-override.
spec.configServerNameOverrideTipo: string
Este campo existe apenas para migração. O nome do conjunto de réplicas do servidor de configuração como aparece na configuração de automação.
spec.shardNameOverridesTipo: array de objetos
ShardNameOverrideEste campo existe apenas para migração. Configuração de automação por shard: nome do conjunto de réplicas e shard
_id.Observação
Não confunda
spec.shardNameOverridescomspec.shardOverrides.spec.shardOverridesconfigura as configurações de recurso por shard e não está relacionado à nomenclatura de migração.Nomes
StatefulSetdo Kubernetes nunca são afetados por essas substituições.
Caminhos de configuração de automação configuráveis
O operador Kubernetes codificou anteriormente essas configurações de automação. A migração exige que eles sejam configuráveis para que uma implantação do Kubernetes possa corresponder a caminhos já em uso nas máquinas virtuais de origem.
spec.downloadBaseTipo: string
Padrão:
/var/lib/mongodb-mms-automationDiretório onde o MongoDB Agent baixa o binário do agente. O operador Kubernetes deriva o caminho do arquivo de chave a partir desta configuração como
<downloadBase>/keyfile.
spec.security.tls.caFilePathTipo: string
Padrão:
/mongodb-automation/tls/ca/ca-pemCaminho absoluto onde o operador Kubernetes projeta o certificado CA dentro do pod. Este caminho deve conter pelo menos dois segmentos de caminho. Não compatível com o banco de dados de aplicativo.
Observação
Se o seu modelo de pod montar um volume nesse caminho ou acima dele, a montagem poderá ocultar o arquivo de CA projetado. Revisar suas montagens de volume
podTemplateantes de definir um valor personalizado.
spec.security.authentication.agents.autoPEMKeyFilePathTipo: string
Caminho absoluto do arquivo PEM combinado do MongoDB Agent dentro dos pods do banco de dados. Definir este campo define o valor
tls.autoPEMKeyFilePathdo MongoDB Ops Manager ou Cloud Manager e monta o segredo referenciado porspec.security.authentication.agents.clientCertificateSecretRefnesse caminho.Exige
spec.security.authentication.agents.clientCertificateSecretRef.O padrão é o caminho de montagem do certificado do agente com hash que o Kubernetes operador usa para implantações não migradas.
Condições de status
status.conditionsTipo: array de Condições do Kubernetes
Condições padrão do Kubernetes, com chave
type. Este campo é novo no recursoMongoDBe suporta migração.
status.conditions[type=Migrating]Tipo: Condição do Kubernetes
O indicador de nível superior que mostra se uma migração está ativa.
statuséTrueenquantospec.externalMembersnão está vazio, e muda paraFalsecom o motivoMigrationCompleteassim que você remover o último nó externo.RazãoStatusSignificadoValidatingTrueA anotação para executar o teste está definida.
ExtendingTrueA contagem de nós do Kubernetes desejada excede a última contagem reconciliada.
PruningTrueA contagem de
externalMemberscaiu abaixo destatus.migrationObservedExternalMembersCount.InProgressTrueNós externos existem, mas nada está mudando. Esta é também a razão na primeira reconciliação.
MigrationCompleteFalseTodos os nós externos foram removidos.
A precedência é
Validating>Extending>Pruning>InProgress. Uma operação de limpeza que também afeta o lado do Kubernetes relataExtending, o que é outro motivo para fazer uma alteração por vez.Não é permitido realizar poda e extensão ao mesmo tempo.
Para criar um script para a conclusão da migração, use
kubectl wait --for=condition=Migrating=Falseem vez de fazer polling emstatus.phase.
status.conditions[type=NetworkConnectivityVerified]Tipo: Condição do Kubernetes
O resultado da verificação de conectividade de executar. O operador Kubernetes remove essa condição de
status.conditionscompletamente assim que não restarem mais nós externos.Código de saída da tarefa do validadorStatus da CondiçãoRazãoSignificadoTarefa ainda em execução
UnknownRunningO
status.phaseéConnectivityCheckRunning.0TrueNetworkValidationPassedTodos os nós externos são acessíveis e autenticados.
2FalseAuthenticationFailedCredenciais, o mecanismo de autenticação ou uma função
__system@localausente.3FalseNetworkFailedDNS, TLS, timeouts ou nós inacessíveis. Verifique os log do Pod da tarefa.
1ou outroFalseUnknownErrorFalha não classificada. Verifique o log do Pod de tarefa.
Falhas que ocorrem antes do início da tarefa usam os motivos
OperatorImageUnknown,BuildStatefulSetOptions,AgentCertSecretFailedeAgentCertSubject.O Kubernetes operador remove a condição
NetworkConnectivityVerifieddestatus.conditionsinteiramente assim que não restarem mais nós externos.
status.migrationObservedExternalMembersCountTipo: inteiro
O número de entradas
spec.externalMembersque o Kubernetes operador observou na última reconciliação. O Kubernetes operador compara esse valor com a contagem atual despec.externalMembersna próxima reconciliação para detectar que você removeu um nó externo. Este campo não é definido quando não restam nós externos.Observação
Este campo também aparece no esquema de recurso personalizado
MongoDBOpsManager, como um efeito colateral do embedding de struct Go. No recursoMongoDBOpsManager, o campo é sempre nulo. Ignorar isso lá.
Anotações
metadata.annotations.mongodb.com/migration-dry-runTipo: string (valor booleano)
O plugin
kubectl mongodb migrate-to-mckdefine esta anotação comotrue. Enquanto esta anotação estiver presente, o Kubernetes operador não faz alterações na configuração de automação e realiza apenas a validação de conectividade. Remover a anotação inicia a migração real.
Campos relacionados que precisam de atenção específica à migração
Os seguintes campos de recurso MongoDB existentes não são exclusivos para migração, mas exigem valores específicos ou revisar durante uma migração:
spec.members,spec.mongodsPerShardCount,spec.configServerCountespec.mongosCountcomeçam em0no recurso que o pluginkubectl mongodb migrate-to-mckgera.spec.memberConfig[].votes(inteiro, padrão1) espec.memberConfig[].priority(string contendo um float, padrão"1"). Você deve fornecer pelo menos tantas entradasspec.memberConfigquantospec.members. O Kubernetes Operator ignora ospec.memberConfigde nível superior para clusters fragmentados somente quandospec.topologyéMultiCluster. Para clusters fragmentados de cluster único, ospec.memberConfigde nível superior configura os membros do servidor de configuração e os membros de cada shard sem uma entradaspec.shardOverridescorrespondente. O plugin-inkubectl mongodb migrate-to-mcknão geraspec.memberConfig, e o Kubernetes Operator não padroniza os novos membros como não votantes, portanto, os padrões CRD de1e"1"estão incorretos enquanto um novo membro está sincronizando.Aviso
Defina spec.memberConfig antes de aumentar o número de nós
Por padrão, novos nós do Kubernetes entram como nós votantes. O padrão do CRD é
votes: 1epriority: "1", que permite que um nó ainda em sincronização participe de uma eleição antes de concluir sua sincronização inicial.O MongoDB recomenda que você grave uma entrada
spec.memberConfigpor novo nó do Kubernetes comvotes: 0epriority: "0"antes de aumentar a contagem de nós, para que um nó ainda em sincronização não possa vencer uma eleição.votesé um número inteiro.priorityé uma string.Campos que devem corresponder exatamente à implantação de origem:
spec.version,spec.featureCompatibilityVersion,spec.additionalMongodConfig.net.port,spec.security.authentication.modesespec.security.authentication.internalCluster.