Importante
As configurações nesta página existem para suportar a migração de uma implementação autogerenciada para Kubernetes no Kubernetes Operator. Não os defina em um recurso MongoDB que você implementa diretamente no Kubernetes sem uma migração de acompanhamento.
Esta página documenta os campos de recursos MongoDB, as condições de status e as anotações que se aplicam somente durante uma migração de uma implantação de máquina virtual autogerenciada para o Kubernetes. Para obter o conjunto completo de configurações de recursos MongoDB, consulte Especificação de recursos de banco de dados MongoDB .
Membros externos
Esses campos identificam a máquina virtual de origem ou os processos simples 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 nova do Kubernetes.
spec.externalMembersType: array of
ExternalMemberobjectsA máquina virtual ou os processos de origem completamente vazios que fazem parte da migração. Este campo existe apenas para migração.
Você pode remover entradas desta lista, mas nunca deve adicionar entradas após o início da migração. Uma lista
spec.externalMembersvazia significa que a migração foi concluída.
spec.externalMembers[].processNameTipo: string
Obrigatório
Este campo existe apenas para migração. O nome do processo exatamente como aparece na array
processesda configuração de automação.
spec.externalMembers[].hostnameTipo: string
Obrigatório
Este campo existe apenas para migração. O valor
host:portdo processo, exatamente como aparece na configuração de automação.
Substituiçõ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 Operator usaria ou geraria.
spec.replicaSetNameOverrideTipo: string
Este campo existe apenas para migração. O nome do conjunto de réplicas de configuração de automação, quando é diferente do nome do recurso Kubernetes ou quando o nome do conjunto de réplicas de configuração de automação não é um nome válido do Kubernetes. O plugin-in
kubectl mongodb migrate-to-mckdefine esse campo para você por meio do 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.shardNameOverridesType: array of
ShardNameOverrideobjectsEste campo existe apenas para migração. nome do conjunto de réplicas de configuração de automação por shard e shard
_id.Observação
Não confunda
spec.shardNameOverridescomspec.shardOverrides.spec.shardOverridesconfigura as configurações de recursos por fragmento e não está relacionado à nomenclatura de migração.Os nomes
StatefulSetdo Kubernetes nunca são afetados por essas substituições.
Caminhos de configuração de automação configuráveis
O Kubernetes Operator codificou anteriormente estas definições de configuração de automação. A migração exige que eles sejam configuráveis para que um sistema 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 Kubernetes Operator deriva o caminho do arquivo-chave dessa configuração como
<downloadBase>/keyfile.
spec.security.tls.caFilePathTipo: string
Padrão:
/mongodb-automation/tls/ca/ca-pemCaminho absoluto onde o Kubernetes Operator projeta o certificado da CA dentro do pod. Este caminho deve conter pelo menos dois segmentos de caminho. Não suportado para o Banco de Dados de Aplicativos.
Observação
Se o modelo de pod montar um volume nesse caminho ou acima dele, a montagem poderá sombrear o arquivo CA projetado. Revise suas
podTemplatemontagens de volume antes de definir um valor personalizado.
spec.security.authentication.agents.autoPEMKeyFilePathTipo: string
Caminho absoluto do arquivo PEM combinado do MongoDB Agent dentro de pods de banco de dados . A definição desse campo define o valor
tls.autoPEMKeyFilePathdo Ops Manager ou do 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 de agente derivado de hash que o Kubernetes Operator usa para sistemas não migrados.
Condições de status
status.conditionsType: array of Kubernetes Conditions
Condições padrão do Kubernetes, ativadas por
type. Este campo é novo no recursoMongoDBe suporta migração.
status.conditions[type=Migrating]Tipo: condição do Kubernetes
O indicador de nível superior se uma migração está ativa.
statuséTrueenquantospec.externalMembersnão está vazio e muda paraFalsecom a razãoMigrationCompletedepois de remover o último membro externo.RazãoStatusSignificadoValidatingTrueA anotação de execução seca está definida.
ExtendingTrueA contagem de membros do Kubernetes desejado excede a última contagem reconciliada.
PruningTrueThe
externalMemberscount dropped belowstatus.migrationObservedExternalMembersCount.InProgressTrueExistem membros externos, mas nada está mudando. Esta também é a razão da primeira reconciliação.
MigrationCompleteFalseTodos os membros externos foram removidos.
Precedence is
Validating>Extending>Pruning>InProgress. A prune that also grows the Kubernetes side reportsExtending, which is another reason to make one change at a time.Poda e extensão não são permitidos ao mesmo tempo.
To script against migration completion, use
kubectl wait --for=condition=Migrating=Falserather than pollingstatus.phase.
status.conditions[type=NetworkConnectivityVerified]Type: Kubernetes condition
O resultado da verificação de conectividade de execução seca. O Kubernetes Operator remove esta condição de
status.conditionstotalmente quando nenhum membro externo permanecer.Código de saída do trabalho do validadorStatus da condiçãoRazãoSignificadoA tarefa ainda está em execução
UnknownRunningThe
status.phaseisConnectivityCheckRunning.0TrueNetworkValidationPassedTodos os membros externos são acessíveis e autenticados.
2FalseAuthenticationFailedCredentials, the authentication mechanism, or a missing
__system@localrole.3FalseNetworkFailedDNS, TLS, tempos limite ou membros inacessíveis. Verifique os registros do pod de trabalho.
1ou outroFalseUnknownErrorFalha não classificada. Verifique os registros do pod de trabalho.
Failures that occur before the Job starts use the reasons
OperatorImageUnknown,BuildStatefulSetOptions,AgentCertSecretFailed, andAgentCertSubject.Kubernetes Operator removes the
NetworkConnectivityVerifiedcondition fromstatus.conditionsentirely once no external members remain.
Anotações
metadata.annotations.mongodb.com/migration-dry-runType: string (boolean value)
O plugin
kubectl mongodb migrate-to-mckdefine esta anotação comotrue. Enquanto essa anotação estiver presente, o Kubernetes Operator não faz alterações na configuração de automação e executa apenas validação de conectividade. Remover a anotação inicia a migração real.
Campos relacionados que precisam de atenção específica para migração
Os seguintes campos de recurso MongoDB existentes não são apenas de migração, mas exigem valores específicos ou revisão 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. 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 exatamente errados enquanto um novo membro está sincronizando.Aviso
Definir spec.memberConfig antes de aumentar a contagem de membros
By default, new Kubernetes members join as voting members. The CRD defaults are
votes: 1andpriority: "1", which let a still-syncing member participate in an election before it has finished its initial sync.MongoDB recommends that you write one
spec.memberConfigentry per new Kubernetes member withvotes: 0andpriority: "0"before you raise the member count, so that a still-syncing member cannot win an election.votesis an integer.priorityis a string.Campos que devem corresponder exatamente ao sistema de origem:
spec.version,spec.featureCompatibilityVersion,spec.additionalMongodConfig.net.port,spec.security.authentication.modesespec.security.authentication.internalCluster.