O Google Distributed Cloud usa certificados e chaves privadas para autenticar a comunicação entre os componentes do sistema Kubernetes num cluster de administrador. Quando cria um cluster de administrador, são criados novos certificados da autoridade de certificação (AC), e estes certificados de raiz são usados para emitir certificados de folhas adicionais para componentes do sistema Kubernetes.
Este guia aplica-se apenas à rotação de certificados de AC do cluster de administrador. Para clusters de utilizadores, consulte Rotação de certificados da AC de clusters de utilizadores.
Existem três certificados da AC (autoridade de certificação) usados pelo sistema Kubernetes num cluster de administrador:
O certificado da AC do etcd protege a comunicação do servidor da API Kubernetes para as réplicas do etcd e também a comunicação entre as réplicas do etcd. Este certificado é autoassinado.
O certificado da AC do cluster protege a comunicação entre o servidor da API Kubernetes e todos os clientes da API Kubernetes internos, por exemplo, o kubelet, o gestor de controladores e o programador. Este certificado é autoassinado.
O certificado da AC do proxy frontal protege a comunicação com as APIs agregadas. Este certificado é autoassinado.
Pode usar gkectl
para acionar uma rotação de certificados. Durante uma rotação, o gkectl
substitui os certificados da AC do sistema principal do cluster de administrador por certificados recém-gerados. Em seguida, distribui os novos certificados da AC, certificados de folhas e chaves privadas aos componentes do sistema do cluster de administrador. A rotação ocorre de forma incremental para que os componentes do sistema possam continuar a comunicar durante a rotação. No entanto, tenha em atenção que as cargas de trabalho e os nós são reiniciados durante a rotação.
Sem a rotação, os certificados da AC e os certificados do plano de controlo expiram após um período desde a data de criação do cluster.
O período de validade depende do tipo de cluster e da respetiva versão de criação:
- Clusters avançados:
- Validade de 10 anos
- Clusters não avançados:
- Criado antes da versão 1.5: expiração de 10 anos
- Criado entre as versões 1.5 e 1.16: expiração de 5 anos
- Criados após a versão 1.16: expiração de 30 anos
Os certificados do plano de controlo são rodados automaticamente durante uma atualização do cluster, mas as ACs não são rodadas automaticamente. Isto significa que tem de fazer uma rotação da AC antes da data de validade da AC, além das atualizações de versão normais.
Limitações
Tenha em atenção a seguinte limitação com os clusters avançados:
- Versão 1.31: a rotação de AC não é suportada em clusters avançados.
- Versão 1.32 e superior: a rotação da AC é suportada em clusters avançados, mas existem algumas diferenças menores indicadas, quando aplicável, neste documento.
A rotação de certificados da CA está limitada aos certificados etcd, cluster e front-proxy mencionados anteriormente.
A rotação de certificados da CA está limitada a certificados emitidos automaticamente pelo Google Distributed Cloud. Não atualiza os certificados emitidos manualmente por um administrador, mesmo que esses certificados sejam assinados pelas ACs do sistema.
A rotação do certificado da AC reinicia o servidor da API Kubernetes, outros processos do plano de controlo e cada nó no cluster de administrador várias vezes. Cada fase de uma rotação progride de forma semelhante a uma atualização de cluster. Embora o cluster de administrador e os clusters de utilizadores geridos pelo cluster de administrador permaneçam operacionais durante uma rotação de certificados, deve esperar que as cargas de trabalho no cluster de administrador sejam reiniciadas e reagendadas. Também deve esperar breves períodos de inatividade para o plano de controlo do cluster de administrador e o plano de controlo do cluster de utilizador.
Tem de atualizar o ficheiro kubeconfig do cluster de administrador a meio de uma rotação de certificados e novamente após a conclusão da rotação. Isto deve-se ao facto de o certificado do cluster antigo ter sido revogado e as credenciais no ficheiro kubeconfig terem deixado de funcionar.
Depois de iniciada, não é possível reverter uma rotação de certificado da AC.
A rotação de certificados da AC pode demorar um tempo considerável a ser concluída, consoante o tamanho do cluster.
O processo de rotação de certificados pode ser retomado executando novamente o mesmo comando se for interrompido. No entanto, tem de garantir que só existe um comando de rotação em execução de cada vez.
Inicie a rotação
Para iniciar a rotação de certificados, execute o seguinte comando:
gkectl update credentials certificate-authorities rotate \ --admin-cluster \ --config ADMIN_CLUSTER_CONFIG \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Substitua o seguinte:
ADMIN_CLUSTER_CONFIG: o caminho do ficheiro de configuração do cluster de administrador
ADMIN_CLUSTER_KUBECONFIG: o caminho do ficheiro kubeconfig do cluster de administrador
O comportamento do comando difere consoante o cluster avançado estar ativado:
Não ativada
O comando gkectl update credentials certificate-authorities rotate
inicia
e executa a primeira metade da rotação. O comando é pausado para lhe permitir executar o comando seguinte para atualizar o ficheiro kubeconfig.
Atualize o ficheiro kubeconfig
Quando o comando gkectl update credentials certificate-authorities rotate
for pausado, atualize o ficheiro kubeconfig para o cluster de administrador. Esta ação coloca um novo certificado de cliente e um novo certificado da AC no ficheiro kubeconfig. O certificado de cliente antigo é removido do ficheiro kubeconfig e o certificado de CA antigo permanece no ficheiro kubeconfig.
gkectl update credentials certificate-authorities update-kubeconfig \ --admin-cluster \ --config ADMIN_CLUSTER_CONFIG \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Continue a rotação
Execute o seguinte comando para realizar a segunda metade do procedimento. O comando não avança até que o gkectl
verifique se o ficheiro kubeconfig atualizado está no diretório atual.
gkectl update credentials certificate-authorities rotate \ --admin-cluster \ --complete \ --config ADMIN_CLUSTER_CONFIG \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Quando a rotação estiver concluída, comunica a versão atual da AC.
Atualize novamente o ficheiro kubeconfig
Após a conclusão da segunda metade da rotação, atualize novamente o ficheiro kubeconfig. Esta ação remove o certificado da AC antigo do ficheiro kubeconfig.
gkectl update credentials certificate-authorities update-kubeconfig \ --admin-cluster \ --config ADMIN_CLUSTER_CONFIG \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Ativado
Se o cluster avançado estiver ativado, o comando gkectl update credentials
certificate-authorities rotate
é síncrono. O comando produz mensagens de estado na estação de trabalho do administrador à medida que a rotação da AC progride.
Depois de a CA ser rodada com êxito, o comando é terminado e é gerado automaticamente um novo ficheiro kubeconfig. O ficheiro kubeconfig que especificou no comando é substituído por um novo. O resultado do comando é semelhante ao seguinte:
Beginning CA rotation with generated CA ... Successfully rotated CA for admin cluster. The kubeconfig file "/home/ubuntu/kubeconfig" has been updated. Done rotating certificate-authorities
Distribua o novo ficheiro kubeconfig
Distribua o novo ficheiro kubeconfig do cluster de administrador a todos os utilizadores do cluster.