Esta página explica como rodar as credenciais do cluster do GKE. O planeamento e a rotação regular das credenciais do cluster são fundamentais para manter os clusters em bom estado. Nesta página, vai saber como fazer rotações de credenciais. Também fica a conhecer as práticas recomendadas para planear rotações regulares.
Esta página destina-se a especialistas de segurança responsáveis pelo ciclo de vida das credenciais em clusters do GKE. Para saber mais sobre as funções comuns e as tarefas de exemplo que referimos no conteúdo, consulte o artigo Funções e tarefas comuns do utilizador do GKE. Google Cloud
Acerca das rotações de credenciais no GKE
A autoridade de certificação (CA) de raiz do cluster tem uma duração limitada. Quando a AC expira, as credenciais que foram assinadas pela AC deixam de ser válidas, incluindo o certificado de cliente do cluster (do campo da API MasterAuth
), a chave e o certificado para o servidor da API, e os certificados de cliente do kubelet.
A duração das credenciais do cluster depende da data de criação do cluster ou da data da última rotação das credenciais. Para obter detalhes, verifique o período de validade das credenciais.
Pode fazer uma rotação de credenciais para revogar e emitir novas credenciais para o seu cluster. Esta operação roda a chave privada da AC do cluster e requer a recriação de nós para usar novas credenciais. Tem de iniciar e concluir uma rotação de credenciais para o seu cluster antes de as credenciais atuais expirarem. Além de rodar as credenciais, a rotação de credenciais também executa uma rotação de IP.
Quando deve fazer uma rotação de credenciais
Deve fazer rotações de credenciais regularmente e antes da data de validade das credenciais atuais. As rotações de credenciais requerem a recriação de nós para usar as novas credenciais, o que pode ser prejudicial para as cargas de trabalho em execução. Planeie períodos de manutenção e faça as rotações durante as janelas de manutenção para evitar tempos de inatividade inesperados da carga de trabalho ou clientes da API sem resposta fora do cluster.
Para saber mais sobre como a disponibilidade de manutenção afeta a rotação das credenciais do cluster e que tipo de interrupção o cluster sofre durante os passos de uma rotação, consulte a linha relativa à rotação das credenciais na tabela de alterações manuais que recriam os nós através de uma estratégia de atualização de nós e respeitando as políticas de manutenção. O GKE depende da disponibilidade de recursos para atualizar os nós. Para saber mais sobre as atualizações de nós, consulte o artigo Planeamento de interrupções de atualizações de nós.
Tempo de vida das credenciais do cluster
Normalmente, a duração das credenciais do cluster depende de quando o cluster foi criado ou quando as credenciais foram atualizadas mais recentemente:
- Os clusters criados antes de aproximadamente outubro de 2021 têm um tempo de vida do CA de 5 anos.
- Os clusters criados após aproximadamente outubro de 2021 têm um tempo de vida do CA de 30 anos.
- Os clusters rodados após aproximadamente janeiro de 2022 têm um tempo de vida do CA de 30 anos.
Encontre clusters com credenciais a expirar ou expiradas
Se as credenciais do cluster expirarem nos próximos 180 dias ou já tiverem expirado, o GKE fornece orientações com uma estatística e uma recomendação para explicar que tem de fazer uma rotação de credenciais para este cluster. Estas orientações incluem a data de validade das credenciais. Pode ver estas orientações na Google Cloud consola. Em alternativa, pode ver estas
orientações
com a CLI gcloud ou a API Recommender, especificando o
subtipo CLUSTER_CA_EXPIRATION
.
Se receber uma estatística e uma recomendação para um cluster, tem de fazer uma rotação de credenciais ou o GKE inicia automaticamente uma rotação de credenciais no prazo de 30 dias após a data de validade da AC atual, conforme explicado na secção seguinte. Assim que a rotação de credenciais estiver concluída, a resolução da estatística e da recomendação pode demorar até 36 horas.
Política de automatização do GKE para evitar interrupções do cluster
Para evitar que o cluster entre num estado irrecuperável se as suas credenciais atuais expirarem, o GKE inicia automaticamente uma rotação de credenciais no prazo de 30 dias após a data de validade da AC atual. Por exemplo, o CA do cluster expira a 6 de janeiro de 2024 e não roda as suas credenciais até 5 de dezembro de 2023. O GKE inicia uma rotação automática a 7 de dezembro de 2023 ou após essa data e tenta concluir esta rotação sete dias após o início da operação. Esta rotação automática é uma tentativa de último recurso para evitar uma falha de cluster e tem as seguintes considerações:
- As rotações automáticas geralmente respeitam as janelas de manutenção ou as exclusões de manutenção. No entanto, o GKE reserva-se o direito de executar passos no prazo de 30 dias após a expiração para rodar as credenciais, independentemente da disponibilidade de manutenção. No prazo de 30 dias, o GKE ignora a disponibilidade de manutenção para o primeiro passo, que é iniciar a rotação.
- Se a disponibilidade de manutenção impedir que o GKE conclua a rotação inicialmente, o GKE continua a tentar concluir a rotação até à data de expiração das credenciais, após a qual o cluster torna-se irrecuperável.
- Quando a rotação de credenciais estiver concluída, as credenciais em expiração são revogadas. Os clientes da API Kubernetes fora do cluster, como o kubectl em ambientes locais, não funcionam até configurar os clientes para usar as novas credenciais.
- As recriações do conjunto de nós durante a rotação podem causar interrupções nas cargas de trabalho em execução.
Antes de começar
Antes de começar, certifique-se de que realizou as seguintes tarefas:
- Ative a API Google Kubernetes Engine. Ative a API Google Kubernetes Engine
- Se quiser usar a CLI gcloud para esta tarefa,
instale-a e, em seguida,
inicialize-a. Se instalou anteriormente a CLI gcloud, execute
gcloud components update
para obter a versão mais recente.
- Certifique-se de que tem um cluster do Autopilot ou Standard existente. Se precisar de um, crie um cluster do Autopilot.
Verifique a duração das credenciais
Recomendamos que verifique o tempo de vida das credenciais antes e depois de fazer uma rotação de credenciais para saber a validade da AC raiz do cluster.
Para verificar o tempo de vida das credenciais de um único cluster, execute o seguinte comando:
gcloud container clusters describe CLUSTER_NAME \
--location LOCATION \
--format "value(masterAuth.clusterCaCertificate)" \
| base64 --decode \
| openssl x509 -noout -dates
O resultado é semelhante ao seguinte:
notBefore=Mar 17 16:45:34 2023 GMT
notAfter=Mar 9 17:45:34 2053 GMT
Se executar este comando após iniciar uma rotação de credenciais, o resultado é a duração do seu certificado original. Este certificado permanece válido até concluir a rotação. Depois de concluir a rotação, o resultado é a duração do novo certificado.
Para verificar o tempo de vida das credenciais de todos os clusters num projeto, execute o seguinte comando:
gcloud container clusters list --project PROJECT_ID \
--format="value(name,masterAuth.clusterCaCertificate)" | \
while read -r cluster ca; do \
expiry_date=$(echo -e "$ca" | base64 --decode | openssl x509 -noout -enddate | awk -F'=' '{print $2}'); \
printf "%-40s | %s\n" "$cluster" "$expiry_date" ; \
done | \
column -t | \
awk -F',' 'BEGIN{print "Cluster Name | Certificate Expiry Date"} {print}'
Faça uma rotação de credenciais
Qualquer rotação de credenciais envolve os seguintes passos:
- Iniciar a rotação: o plano de controlo começa a publicar num novo endereço IP, além do endereço IP original. São emitidas novas credenciais para as cargas de trabalho e o plano de controlo.
- Recrie nós: o GKE recria os nós do cluster para que os nós usem o novo endereço IP e credenciais, respeitando a disponibilidade das janelas de manutenção e exclusões. Também pode recriar manualmente os nós fazendo uma atualização da versão dos nós para a mesma versão do GKE que os nós já executam.
- Atualize os clientes da API: após iniciar a rotação, atualize todos os clientes da API do cluster, como máquinas de desenvolvimento que usam
kubectl
, para comunicar com o plano de controlo através do novo endereço IP. - Conclua a rotação: o plano de controlo deixa de publicar tráfego através do endereço IP original. As credenciais antigas são revogadas, incluindo todas as credenciais estáticas existentes para contas de serviço do Kubernetes.
Quando inicia uma rotação de credenciais ou quando o GKE inicia automaticamente uma rotação, o GKE executa estes passos automaticamente, incluindo a tentativa de concluir a rotação. Em cada passo, se a expiração do cluster for superior a 30 dias a partir de agora, o GKE respeita a disponibilidade de manutenção. Durante as rotações automáticas antes do vencimento do cluster, o GKE reserva-se o direito de ignorar a disponibilidade de manutenção para evitar que o cluster se torne irrecuperável. No prazo de 30 dias, o GKE ignora a disponibilidade de manutenção para o primeiro passo, que é iniciar a rotação.
Se não concluir uma rotação de credenciais no prazo de sete dias após o início, o GKE tenta concluir a rotação por si. Se algum nó no cluster ainda usar as credenciais anteriores, a operação de conclusão automática falha, mas o GKE continua a tentar a conclusão até as credenciais expirarem e o cluster ficar irrecuperável. Deve planear monitorizar e concluir manualmente todas as rotações de credenciais que iniciar. Para substituir os bloqueadores de disponibilidade de manutenção, execute os comandos em cada uma das secções que se seguem para acionar manualmente essas fases do processo de rotação. Não confie na conclusão automática, que é uma medida de melhor esforço.
Inicie a rotação
Para iniciar uma rotação de credenciais, execute o seguinte comando:
gcloud container clusters update CLUSTER_NAME \
--location LOCATION \
--start-credential-rotation
Este comando cria novas credenciais, emite estas credenciais para o plano de controlo e configura o plano de controlo para publicação em dois endereços IP: o endereço IP original e um novo endereço IP.
Recrie nós
Depois de reconfigurar o servidor da API para ser publicado num novo endereço IP, o GKE atualiza automaticamente os seus nós para usarem o novo endereço IP e as credenciais, se houver disponibilidade de manutenção. O GKE atualiza todos os seus nós para a mesma versão do GKE que os nós já executam, o que recria os nós. Para mais informações, consulte o artigo Atualizações do conjunto de nós.
Por predefinição, o GKE conclui automaticamente as rotações de credenciais sete dias após iniciar a operação. Se uma janela de manutenção ativa ou uma exclusão no seu cluster impedir o GKE de recriar alguns nós durante este período de sete dias, a rotação de credenciais falha inicialmente na conclusão. No entanto, o GKE continua a tentar recriar os nós e concluir a rotação até que a disponibilidade de manutenção permita que o GKE avance. Durante eventos importantes, como o Google Cloud Next, o GKE também pode pausar as recriações automáticas de nós para que não tenha interrupções.
Se usar exclusões de manutenção ou janelas de manutenção que possam resultar numa rotação com falhas, atualize manualmente o cluster para forçar a recriação do nó:
gcloud container clusters upgrade CLUSTER_NAME \ --location=LOCATION \ --cluster-version=VERSION
Substitua
VERSION
pela mesma versão do GKE que o cluster já usa.Para mais informações, consulte as alterações manuais que respeitam as políticas de manutenção do GKE.
Verifique o progresso da recriação do conjunto de nós
Para monitorizar a operação de rotação, execute o seguinte comando:
gcloud container operations list \ --filter="operationType=UPGRADE_NODES AND status=RUNNING" \ --format="value(name)"
Este comando devolve o ID da operação da operação de atualização do nó.
Para sondar a operação, transmita o ID da operação para o seguinte comando:
gcloud container operations wait OPERATION_ID
Os conjuntos de nós são recriados um a um e cada um tem a sua própria operação. Se tiver vários conjuntos de nós, use estas instruções para sondar cada operação.
Atualize os clientes da API
Após iniciar a rotação de credenciais, tem de atualizar todos os clientes de API fora do cluster (como kubectl
em computadores de programadores) para usar as novas credenciais e apontar para o novo endereço IP do plano de controlo.
Para atualizar os clientes API, execute o seguinte comando para cada cliente:
gcloud container clusters get-credentials CLUSTER_NAME \
--location LOCATION
Atualize as credenciais da conta de serviço do Kubernetes
Se usar credenciais estáticas para contas de serviço no seu cluster, mude para credenciais de curta duração. A conclusão da rotação invalida as credenciais da conta de serviço existentes. Se não quiser usar credenciais de curta duração, certifique-se de que recria as credenciais estáticas para todas as contas de serviço no cluster antes de concluir a rotação.
Atualize os endereços IP codificados e as regras de firewall
Se codificou o endereço IP do plano de controlo no seu ambiente ou se tiver regras de firewall que segmentam o endereço IP do plano de controlo, atualize os endereços para o novo endereço IP. Se concluir a rotação sem atualizar os endereços IP nas aplicações e nas regras de firewall, esses recursos podem sofrer interrupções quando o GKE deixar de publicar no endereço IP do plano de controlo anterior.
Conclua a rotação
Depois de atualizar os clientes da API fora do cluster, conclua a rotação para configurar o plano de controlo de modo a que seja servido apenas com as novas credenciais e o novo endereço IP:
gcloud container clusters update CLUSTER_NAME \
--location=LOCATION \
--complete-credential-rotation
Se a rotação de credenciais não for concluída e devolver uma mensagem de erro semelhante à seguinte, consulte o artigo Erro 400: o conjunto de nós requer recriação:
ERROR: (gcloud.container.clusters.update) ResponseError: code=400, message=Node pool "test-pool-1" requires recreation.
O GKE respeita a disponibilidade de manutenção quando conclui automaticamente a rotação. No entanto, o GKE pode ignorar esta disponibilidade no prazo de 30 dias após a expiração para evitar que o cluster se torne irrecuperável. Se a conclusão da rotação falhar inicialmente e a rotação tiver começado há, pelo menos, sete dias, o GKE tenta concluir a rotação até à data de expiração das credenciais, após a qual o cluster torna-se irrecuperável.