O plugin kubectl mongodb sempre adiciona a anotação mongodb.com/migration-dry-run: true ao recurso que ele gera para migrar uma implantação para o Kubernetes. Enquanto essa anotação estiver presente, o Kubernetes operador não fará alterações na configuração de automação. Ele apenas valida a conectividade e as credenciais, para que você possa corrigir problemas e executar novamente quantas vezes precisar antes que o Kubernetes operador assuma a propriedade da implantação.
Sobre esta tarefa
O Operador Kubernetes cria uma tarefa por recurso
MongoDB, chamada<resourceName>-connectivity-check. A tarefa disca para cada nó externo e autentica-se nele. Ele se excluir usandottlSecondsAfterFinished, e a próxima reconciliação o recria, portanto, a revalidação após uma correção é automática. Você não precisa usar o trigger manualmente.A executar de teste verifica a acessibilidade de Kubernetes para máquina virtual (DNS, TLS, firewall e endereços de nós) e credenciais, incluindo a função
__systemno banco de dadoslocal, e a CA quando o TLS está habilitado.Executar a seco não verifica a conectividade de entrada da máquina virtual para o Kubernetes. Verifique essa direção você mesmo, seja por meio do status de monitoramento da IU do Ops Manager para a implantação ou executando
rs.status()de um nó de máquina virtual e confirmando que ele pode acessar os Pods do Kubernetes.A verificação de versão do plugin e do operador Kubernetes executa independentemente de a anotação dry-run estar presente.
Antes de começar
Um recurso personalizado
MongoDBgerado com a anotaçãomongodb.com/migration-dry-run: trueainda presente. Para aprender como gerar este recurso, consulte Migrar um conjunto de réplicas para o Kubernetes.Se a implantação usar TLS, os certificados de nó e o material da CA descritos em Configurar TLS para uma migração para o Kubernetes.
O operador Kubernetes
ServiceAccounttembatch/jobspermissões (create,get,list,watchedelete). Sem essa concessão, o operador do Kubernetes não pode criar a tarefa do validador de conectividade de forma alguma.
Procedimento
Aplique o recurso e deixe a simulação ser executada.
Aplique o recurso personalizado MongoDB com a anotação dry-run ainda definida. O Kubernetes operador cria a tarefa <resourceName>-connectivity-check e relata o progresso por meio de status.phase e da condição NetworkConnectivityVerified.
Enquanto a tarefa executa, status.phase lê ConnectivityCheckRunning.
Leia o resultado.
Leia status.conditions[type=NetworkConnectivityVerified]:
Código de saída da tarefa do validador | Status da Condição | Razão | Significado |
|---|---|---|---|
Tarefa ainda em execução |
|
| O |
|
|
| Todos os nós externos são acessíveis e autenticados. |
|
|
| Credenciais, o mecanismo de autenticação ou uma função |
|
|
| DNS, TLS, timeouts ou nós inacessíveis. Verifique os log do Pod da tarefa. |
|
|
| Falha não classificada. Verifique o log do Pod de tarefa. |
Falhas que ocorrem antes do início da tarefa usam os motivos OperatorImageUnknown, BuildStatefulSetOptions, AgentCertSecretFailed e AgentCertSubject.
O Kubernetes operador remove a condição NetworkConnectivityVerified de status.conditions inteiramente assim que não restarem mais nós externos.
Corrija os problemas e execute novamente, se necessário.
Corrija problemas de conectividade ou credenciais no Kubernetes ou na IU do MongoDB Ops Manager, conforme necessário. Você não precisa excluir ou reaplicar nada: a próxima reconciliação recria a tarefa do validador automaticamente.
Se o executar de teste parecer travado, exclua a tarefa <resourceName>-connectivity-check. A próxima reconciliação o recria.
Uma concessão RBAC batch/jobs ausente no operador Kubernetes ServiceAccount impede a criação da tarefa em primeiro lugar, portanto, nenhuma condição ou tarefa aparece nesse caso. Falhas que ocorrem antes do início da tarefa aparecem como motivos OperatorImageUnknown, BuildStatefulSetOptions, AgentCertSecretFailed ou AgentCertSubject em vez dos motivos de código de saída na tabela acima.
Remova a anotação dry-run para prosseguir.
Quando a condição NetworkConnectivityVerified for True com o motivo NetworkValidationPassed, remover a anotação:
kubectl annotate mdb <resourceName> \ mongodb.com/migration-dry-run-Importante
Remover a anotação dry-run é o ponto em que o operador do Kubernetes assume a propriedade do projeto Ops Manager ou Cloud Manager. Trate isso como o ponto sem retorno para a conectividade e o estado das credenciais que você acabou de validar.