Você emite um novo certificado de host com outro endereço de overlay, copia-o sobre o arquivo antigo, envia a recarga, e o host continua respondendo no endereço que tinha antes. O reflexo é supor que a recarga falhou ou que o arquivo errado foi lido. Normalmente nenhuma das duas coisas aconteceu: o processo em execução manteve deliberadamente a identidade que já tinha, porque a substituição mudou algo que uma recarga não consegue aplicar.

O suporte de recarga do PKI do Nebula está documentado com essa fronteira, e é fácil não perceber quando a mesma documentação mostra que a recarga funciona para outras mudanças.

O que uma recarga realmente relê

Um certificado de host não é apenas uma credencial como é uma chave SSH. Ele carrega o endereço de overlay, o nome do host, as associações a grupos e uma janela de validade, e tudo isso está unido pela assinatura da CA. O daemon usa esse conteúdo assinado para decidir como se apresenta e quais regras se aplicam a ele.

A recarga permite ao processo assumir uma credencial renovada sem derrubar seus túneis, o que é valioso para a rotação de rotina: mesmo endereço, mesmo nome, mesmos grupos, validade posterior. A restrição é que a identidade precisa continuar a mesma. Mude o endereço de overlay e o caminho de recarga não consegue aplicá-lo, porque o endereço faz parte daquilo a que a instância em execução já se comprometeu.

Então o comportamento que você viu é o limite documentado fazendo o seu trabalho, não uma falha silenciosa. O arquivo no disco é novo; a identidade na memória é antiga; o processo não tem uma forma suportada de conciliar essa diferença sem reiniciar.

Endereço, nome e grupos são uma só identidade

Ajuda pensar no certificado como um único registro e não como um conjunto de campos que se podem editar separadamente. Mover o endereço não é como mudar uma preferência, porque o endereço aparece nas configurações de pares de outros hosts, nas ligações de serviços e em políticas escritas contra a identidade.

FieldWhat changes when you replace it
Overlay addressPeers that pinned the old address, service bindings, and any rule written against it
Host nameName-based policy and the identities other hosts expect to see
GroupsWhich access rules match, even if the address stays identical
Validity windowNothing structural, which is why renewal reloads cleanly

Os grupos merecem uma linha própria porque provocam uma versão mais silenciosa da mesma confusão. Um host que mantém o endereço mas muda de grupos pode alcançar serviços diferentes após reiniciar, e um teste que só faz ping no endereço antigo parecerá completamente saudável enquanto as decisões de acesso mudaram por baixo. Verifique um serviço sujeito a uma regra, não apenas o alcance. É a diferença entre confirmar o túnel e confirmar a política.

Compare o certificado carregado com a substituição

Antes de supor que o daemon ignorou o arquivo, leia os dois. Imprima o certificado que pretende carregar e confirme os campos que acha que alterou, depois confirme que a configuração em execução aponta para esse caminho e não para uma cópia noutro lugar.

nebula-cert print -path /etc/nebula/host.crt
systemctl status nebula
ps -o args= -p $(pgrep -f 'nebula -config' | head -1)

Os argumentos do processo importam mais do que as pessoas esperam. Uma unidade que transmite -config /etc/nebula/config.yml lê a entrada pki.cert desse arquivo, e um certificado instalado num diretório temporário não afeta nada. Verifique o caminho na linha de comando em execução, não o caminho da documentação que seguiu. Se os dois diferirem, encontrou o problema sem tocar no certificado.

Se o novo certificado tem um endereço diferente e o processo manteve o antigo, agora tem uma explicação em vez de um mistério. Reinicie-o se for aceitável, e trate a mudança de endereço como uma mudança de rede planeada e não acidental.

Uma mudança de endereço é uma mudança de rede

Planeie-a como planearia mover uma máquina. Outros hosts podem ter fixado o endereço antigo na sua configuração, serviços podem ligar-se explicitamente a ele, e regras de firewall podem estar escritas contra ele. Mudar o certificado move o host, e mover o host invalida pressupostos noutros lugares.

Mantenha um segundo caminho de gestão disponível enquanto o faz, porque a ligação overlay pode ser justamente a que está a interromper. Fazer isto pelo túnel que está prestes a quebrar é a forma clássica de transformar uma mudança de cinco minutos numa visita ao local.

Se reiniciar é aceitável depende do que o host está a fazer, e isso é uma questão de planeamento e não técnica. O que não é opcional é reconhecer o requisito de reinício em vez de enviar a recarga pela quinta vez.

Retire a credencial antiga separadamente

Instalar um substituto numa única máquina deixa cada par ainda a confiar na credencial que já conhece. Se o motivo da mudança foi um compromisso, a identidade antiga tem de ser retirada através do procedimento de confiança ou de lista de bloqueio para que os pares a rejeitem de facto.

Esse é um passo separado com a sua própria verificação: confirme a partir de outro host que a identidade antiga já não funciona, em vez de assumir que o novo ficheiro fez o trabalho. A documentação de configuração do PKI do Nebula cobre as definições recarregáveis e a limitação de endereço aqui descrita, e vale a pena lê-la na íntegra antes de rodar seja o que for em produção.

Artigos relacionados