Como fazer a rotação de IP do plano de controle

Esta página explica como realizar uma rotação de IP para seu plano de controle no Google Kubernetes Engine.

Visão geral

É possível executar uma rotação de IP para alterar o endereço IP que o plano de controle (mestre) do cluster usa para atender a solicitações da API Kubernetes.

A rotação de IP também altera o certificado SSL e a autoridade de certificação do cluster, o que limita a capacidade de conectar o endereço anterior ao novo.

Antes de começar

Antes de começar, verifique se você realizou as tarefas a seguir:

Defina as configurações padrão da gcloud usando um dos métodos a seguir:

  • Use gcloud init se quiser orientações para definir os padrões.
  • Use gcloud config para definir individualmente a região, a zona e o ID do projeto.

Como usar o gcloud init

Se você receber o erro One of [--zone, --region] must be supplied: Please specify location, conclua esta seção.

  1. Execute gcloud init e siga as instruções:

    gcloud init

    Se você estiver usando SSH em um servidor remoto, utilize a sinalização --console-only para impedir que o comando inicie um navegador:

    gcloud init --console-only
  2. Siga as instruções para autorizar a gcloud a usar sua conta do Google Cloud.
  3. Crie uma nova configuração ou selecione uma atual.
  4. Escolha um projeto do Google Cloud.
  5. Escolha uma zona padrão do Compute Engine para clusters zonais ou uma região para clusters regionais ou de Autopilot.

Como usar o gcloud config

  • Defina o ID do projeto padrão:
    gcloud config set project PROJECT_ID
  • Se você estiver trabalhando com clusters zonais, defina a zona do Compute padrão:
    gcloud config set compute/zone COMPUTE_ZONE
  • Se você estiver trabalhando com clusters de Autopilot ou regionais, defina a região do Compute padrão:
    gcloud config set compute/region COMPUTE_REGION
  • Atualize gcloud para a versão mais recente:
    gcloud components update

Como a rotação de IP funciona

Uma rotação de IP é um processo de várias etapas.

  • Quando você inicia uma rotação de IP, o plano de controle começa a veicular o novo endereço IP, além do endereço IP original.
  • Depois de iniciar uma rotação, atualize os clientes de API do cluster, como máquinas de desenvolvimento que usam a interface de linha de comando kubectl, para começar a se comunicar com o plano de controle no novo endereço IP.
  • Quando você completa a rotação, o plano de controle deixa de veicular o tráfego no endereço IP anterior.

Como fazer uma rotação de IP

As seções a seguir explicam como executar uma rotação de IP.

Como iniciar a rotação

Para iniciar uma rotação de IP, execute o seguinte comando:

gcloud container clusters update [CLUSTER_NAME] --start-ip-rotation

em que [CLUSTER_NAME] é o nome do cluster

Este comando configura o plano de controle para o cluster exibir em dois endereços IP: o original e um novo. Isso gera um breve período de inatividade na API do cluster.

O comando retorna a seguinte saída:


This will start an IP Rotation on cluster [CLUSTER-NAME].
The master will be updated to serve on a new IP address in addition to
the current IP address. GKE schedule recreation of all nodes
to point to the new IP address.  If maintenence window is
used, nodes are not recreated until a maintenance window occurs. See
documentation https://cloud.google.com/kubernetes-engine/docs/how-to/ip-rotation
on how to manually update nodes. This operation is
long-running and will block other operations on the cluster (including
delete) until it has run to completion.
Do you want to continue (Y/n)?

Depois de confirmar, deixe o shell aberto até que a operação seja concluída.

Depois que o plano de controle for reconfigurado, o GKE agendará uma atualização para os nós do cluster usarem o novo endereço IP. Cada pool de nós está marcado como "requer recriação". O GKE não finaliza a rotação de IP até que a recriação automática seja concluída.

Como inspecionar a rotação

Para monitorar a operação de atualização, execute o seguinte comando:

gcloud container operations list --filter="UPGRADE_NODES RUNNING"

Esse comando retorna o código da operação de atualização.

Para pesquisar a operação, passe o código da operação para o seguinte comando:

gcloud container operations wait [OPERATION_ID]

Os pools de nós são recriados um a um, e cada um tem uma operação própria. Se tiver vários pools de nós, é possível usar as instruções acima para pesquisar cada operação.

Como atualizar clientes de API

Depois que a rotação de IP tiver sido iniciada, atualize todos os clientes da API fora do cluster para apontar para o novo endereço, como kubectl nas máquinas do desenvolvedor.

Para atualizar os clientes de API, execute o seguinte comando para cada um deles:

gcloud container clusters get-credentials [CLUSTER_NAME]

Como concluir a rotação

Para concluir a rotação, execute o seguinte comando:

gcloud container clusters update [CLUSTER_NAME] --complete-ip-rotation

O comando retorna a seguinte saída:

This will complete the in-progress IP Rotation on cluster [CLUSTER_NAME].
The master will be updated to stop serving on the old IP address and only
serve on the new IP address. Make sure all API clients have been updated
to communicate with the new IP address (e.g. by running `gcloud container
clusters get-credentials --project [PROJECT-ID] --zone [COMPUTE-ZONE]
[CLUSTER-NAME]`). This operation is long-running and will
block other operations on the cluster (including delete) until it has
run to completion.

Esse comando configura o plano de controle para veicular apenas no novo endereço IP. Isso gera um curto período de inatividade para a API do cluster.

A seguir