Rotar la IP del plano de control


En esta página se explica cómo realizar una rotación de IP para tu plano de control en clústeres de Google Kubernetes Engine (GKE).

Antes de leer esta página, asegúrate de que conoces la rotación de credenciales. Te recomendamos que realices una rotación de credenciales, que incluye la rotación de IP. Sin embargo, es posible que tengas que realizar una rotación de IP independiente si no puedes llevar a cabo una rotación completa de las credenciales.

Esta página está dirigida a especialistas en seguridad que mantienen el ciclo de vida de los clústeres en GKE. Para obtener más información sobre los roles habituales y las tareas de ejemplo a las que hacemos referencia en el contenido, consulta Roles y tareas habituales de los usuarios de GKE. Google Cloud

Antes de empezar

Antes de empezar, asegúrate de haber realizado las siguientes tareas:

  • Habilita la API de Google Kubernetes Engine.
  • Habilitar la API de Google Kubernetes Engine
  • Si quieres usar Google Cloud CLI para esta tarea, instálala y, a continuación, inicialízala. Si ya has instalado la gcloud CLI, obtén la versión más reciente ejecutando gcloud components update.

Realizar una rotación de IP

La rotación de IP es un proceso de varios pasos:

  1. Cuando inicias una rotación de IP, tu plano de control empieza a servir en la nueva dirección IP, además de en la original.
  2. GKE vuelve a crear tus grupos de nodos para usar la nueva dirección IP, respetando la disponibilidad del mantenimiento. También puedes volver a crear tus grupos de nodos manualmente actualizando la versión del grupo de nodos a la misma versión de GKE que ya ejecutan los nodos.
  3. Después de iniciar una rotación, debes actualizar los clientes de la API de tu clúster (como las máquinas de desarrollo que usan la interfaz de línea de comandos kubectl) para que empiecen a comunicarse con el plano de control a través de la nueva dirección IP.
  4. Cuando completes la rotación, el plano de control dejará de servir tráfico con la dirección IP anterior.

Cuando inicias una rotación de direcciones IP, GKE vuelve a crear los nodos por ti, respetando la disponibilidad del mantenimiento. Durante eventos importantes, como Google Cloud Next, GKE puede pausar la recreación automática de nodos para que no se produzcan interrupciones. Para obtener más información sobre cómo afecta la disponibilidad del mantenimiento a la rotación de IP y qué tipo de interrupción experimenta tu clúster durante los pasos de una rotación, consulta la fila de rotación de IP en la tabla de cambios manuales que recrean los nodos mediante una estrategia de actualización de nodos y respetando las políticas de mantenimiento. GKE depende de la disponibilidad de recursos para actualizar los nodos. Para obtener más información sobre las actualizaciones de nodos, consulta Planificar interrupciones de actualizaciones de nodos.

Si no completas una rotación de direcciones IP en un plazo de siete días desde que la inicias, GKE intentará completarla por ti. Si algún nodo de tu clúster sigue usando la dirección IP anterior, la operación de finalización automática fallará, pero GKE seguirá intentando completar la operación hasta que se vuelvan a crear los nodos y se pueda completar la operación.

Debes planificar el seguimiento manual y completar la rotación de direcciones IP después de iniciarla. Siempre puedes anular la disponibilidad del mantenimiento y activar manualmente pasos específicos para asegurarte de que se pueda completar la rotación de credenciales. No confíes en la función de autocompletar, ya que es una medida que se aplica en la medida de lo posible.

Iniciar la rotación

  1. Para iniciar una rotación de IP, ejecuta el siguiente comando:

    gcloud container clusters update CLUSTER_NAME \
        --start-ip-rotation
    

    Sustituye CLUSTER_NAME por el nombre del clúster.

    El resultado debería ser similar al siguiente:

    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. Google Kubernetes Engine will then schedule recreation of all nodes
    to point to the new IP address.  If maintenance window is
    used, nodes are not recreated until a maintenance window occurs. See
    documentation 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)?
    

    Este comando configura el plano de control para que sirva en dos direcciones IP: la dirección original y una nueva.

  2. Confirma la rotación y deja la carcasa abierta para que se complete la operación.

Volver a crear nodos

Después de volver a configurar el servidor de la API para que sirva en una nueva dirección IP, GKE actualiza automáticamente los nodos para que usen la nueva dirección IP. GKE actualiza todos tus nodos a la versión de nodo compatible más cercana, lo que implica volver a crear los nodos. Para obtener más información, consulta Actualizaciones de grupos de nodos.

De forma predeterminada, GKE completa automáticamente las rotaciones de direcciones IP siete días después de que inicies la operación. Si una ventana de mantenimiento activa o una exclusión de tu clúster impide que GKE recree algunos nodos durante este periodo de siete días, la rotación de direcciones IP no se completará inicialmente. Sin embargo, GKE sigue intentando recrear los nodos y completar la rotación hasta que la disponibilidad del mantenimiento permita a GKE continuar.

  • Si usas exclusiones o ventanas de mantenimiento que podrían provocar un error en la rotación, actualiza manualmente el clúster para forzar la recreación de los nodos:

    gcloud container clusters upgrade CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --cluster-version=VERSION
    

    Sustituye VERSION por la misma versión de GKE que ya usa el clúster.

    Para obtener más información, consulta Mantenimiento automático que respeta las políticas de mantenimiento de GKE.

Comprobar el progreso de la recreación del grupo de nodos

  1. Para monitorizar la operación de rotación, ejecuta el siguiente comando:

    gcloud container operations list \
        --filter="operationType=UPGRADE_NODES AND status=RUNNING" \
        --format="value(name)"
    

    Este comando devuelve el ID de operación de la operación de actualización del nodo.

  2. Para sondear la operación, traslada la ID de operación al siguiente comando:

    gcloud container operations wait OPERATION_ID
    

Los grupos de nodos se recrean uno a uno, y cada uno tiene su propia operación. Si tienes varios grupos de nodos, sigue estas instrucciones para sondear cada operación.

Actualizar clientes de API

Después de iniciar la rotación de IP, debe actualizar todos los clientes de API que estén fuera del clúster (como kubectl en las máquinas de los desarrolladores) para que apunten a la nueva dirección IP.

Para actualizar tus clientes API, ejecuta el siguiente comando para cada cliente:

gcloud container clusters get-credentials CLUSTER_NAME

Actualizar las direcciones IP codificadas y las reglas de cortafuegos

Si has codificado la dirección IP del plano de control en tu entorno o tienes reglas de cortafuegos que se dirigen a la dirección IP del plano de control, actualiza las direcciones a la nueva dirección IP. Si completas la rotación sin actualizar las direcciones IP en las aplicaciones y en las reglas de cortafuegos, es posible que esos recursos sufran interrupciones cuando GKE deje de servir en la dirección IP del plano de control anterior.

Completar la rotación

Después de actualizar los clientes de la API fuera del clúster, completa la rotación para configurar el plano de control de forma que solo funcione con la nueva dirección IP.

Para completar la rotación, ejecuta el siguiente comando:

gcloud container clusters update CLUSTER_NAME \
    --complete-ip-rotation

El resultado debería ser similar al siguiente:

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 --region COMPUTE_REGION
CLUSTER_NAME`). This operation is long-running and will
block other operations on the cluster (including delete) until it has
run to completion.

Si no se completa la rotación de la dirección IP y se devuelve un mensaje de error similar al siguiente, consulta Error 400: Node pool requires recreation (Error 400: es necesario volver a crear el pool de nodos):

ERROR: (gcloud.container.clusters.update) ResponseError: code=400, message=Node pool "test-pool-1" requires recreation.

Si no completas una rotación de direcciones IP en un plazo de siete días desde que la inicias, GKE intentará completarla por ti. Si algún nodo de tu clúster sigue usando la dirección IP anterior (quizá debido a la disponibilidad del mantenimiento y a las restricciones relacionadas que impiden que se vuelvan a crear los nodos), la finalización automática fallará, pero GKE seguirá intentando completar la operación hasta que se vuelvan a crear los nodos.

Siguientes pasos