En esta página se explica cómo rotar las credenciales de tu clúster de GKE. Planificar y rotar periódicamente las credenciales del clúster es fundamental para mantener los clústeres en buen estado. En esta página, aprenderás a realizar rotaciones de credenciales. También aprenderás las prácticas recomendadas para planificar rotaciones periódicas.
Esta página está dirigida a los especialistas en seguridad responsables del ciclo de vida de las credenciales en los clústeres de 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
Acerca de la rotación de credenciales en GKE
La autoridad de certificación (CA) raíz del clúster tiene una vida útil limitada. Cuando caduca la AC, las credenciales firmadas por la AC dejan de ser válidas, incluidos el certificado de cliente del clúster (del campo de la API MasterAuth
), la clave y el certificado del servidor de la API, y los certificados de cliente de kubelet.
El tiempo de validez de las credenciales del clúster depende de cuándo creaste el clúster o de cuándo rotaste las credenciales por última vez. Para obtener más información, consulta el tiempo de validez de las credenciales.
Puedes realizar una rotación de credenciales para revocar y emitir nuevas credenciales para tu clúster. Esta operación rota la clave privada de la CA del clúster y requiere que se vuelvan a crear los nodos para usar las nuevas credenciales. Debes iniciar y finalizar una rotación de credenciales de tu clúster antes de que caduquen las credenciales actuales. Además de rotar las credenciales, la rotación de credenciales también realiza una rotación de IP.
Cuándo realizar una rotación de credenciales
Debes realizar rotaciones de credenciales periódicamente y antes de la fecha de vencimiento de tus credenciales actuales. Para usar las nuevas credenciales, es necesario volver a crear los nodos, lo que puede interrumpir las cargas de trabajo en ejecución. Planifica los periodos de mantenimiento y realiza las rotaciones durante las ventanas de mantenimiento para evitar tiempos de inactividad inesperados de las cargas de trabajo o que los clientes de la API no respondan fuera del clúster.
Para obtener más información sobre cómo afecta la disponibilidad del mantenimiento a la rotación de credenciales del clúster y qué tipo de interrupción experimenta el clúster durante los pasos de una rotación, consulta la fila de rotación de credenciales 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.
Tiempo de validez de las credenciales del clúster
La duración de las credenciales del clúster suele depender de cuándo se creó el clúster o de cuándo se rotaron las credenciales por última vez:
- Los clústeres creados antes de octubre del 2021 tienen un periodo de validez de 5 años.
- Los clústeres creados después de octubre del 2021 (aproximadamente) tienen un tiempo de vida de la CA de 30 años.
- Los clústeres que se han rotado después de enero del 2022 tienen un periodo de validez de 30 años.
Buscar clústeres con credenciales caducadas o que van a caducar
Si las credenciales de tu clúster caducarán en los próximos 180 días o ya han caducado, GKE te proporcionará una guía con una estadística y una recomendación para explicarte que debes rotar las credenciales de este clúster. En estas directrices se incluye la fecha de vencimiento de las credenciales. Puedes consultar estas directrices en la Google Cloud consola. También puedes consultar esta guía con la CLI de gcloud o la API Recommender, especificando el subtipo CLUSTER_CA_EXPIRATION
.
Si recibes una estadística y una recomendación para un clúster, debes realizar una rotación de credenciales o GKE iniciará automáticamente una rotación de credenciales en un plazo de 30 días a partir de la fecha de vencimiento de la CA actual, tal como se explica en la siguiente sección. Una vez que se haya completado la rotación de credenciales, pueden transcurrir hasta 36 horas para que se resuelvan la estadística y la recomendación.
Política de automatización de GKE para evitar interrupciones en los clústeres
Para evitar que tu clúster entre en un estado irrecuperable si caducan tus credenciales actuales, GKE inicia automáticamente una rotación de credenciales en un plazo de 30 días a partir de la fecha de vencimiento de tu CA actual. Por ejemplo, si la CA de tu clúster caduca el 6 de enero del 2024 y no rotas tus credenciales antes del 5 de diciembre del 2023. GKE inicia una rotación automática el 7 de diciembre del 2023 o después, e intenta completar esta rotación siete días después de que se inicie la operación. Esta rotación automática es un último recurso para evitar una interrupción del clúster y tiene las siguientes consideraciones:
- Las rotaciones automáticas suelen respetar las ventanas o exclusiones de mantenimiento. Sin embargo, GKE se reserva el derecho de realizar pasos en un plazo de 30 días a partir del vencimiento para rotar las credenciales, independientemente de la disponibilidad del mantenimiento. En un plazo de 30 días, GKE ignora la disponibilidad del mantenimiento en el primer paso, que es iniciar la rotación.
- Si la disponibilidad del mantenimiento impide que GKE complete la rotación inicialmente, GKE seguirá intentando completar la rotación hasta la fecha de vencimiento de las credenciales. Después de esa fecha, el clúster no se podrá recuperar.
- Cuando se complete la rotación de credenciales, se revocarán las credenciales que vayan a caducar. Los clientes de la API de Kubernetes que estén fuera del clúster, como kubectl en entornos locales, no funcionarán hasta que configures los clientes para que usen las nuevas credenciales.
- Si se vuelven a crear los grupos de nodos durante la rotación, se pueden producir interrupciones en las cargas de trabajo en ejecución.
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
.
- Asegúrate de que tienes un clúster Autopilot o Standard. Si necesitas uno, crea un clúster de Autopilot.
Comprobar la duración de la credencial
Te recomendamos que compruebes la duración de tus credenciales antes y después de realizar una rotación de credenciales para saber la validez de la CA raíz de tu clúster.
Para comprobar el tiempo de validez de las credenciales de un solo clúster, ejecuta el siguiente comando:
gcloud container clusters describe CLUSTER_NAME \
--location LOCATION \
--format "value(masterAuth.clusterCaCertificate)" \
| base64 --decode \
| openssl x509 -noout -dates
El resultado debería ser similar al siguiente:
notBefore=Mar 17 16:45:34 2023 GMT
notAfter=Mar 9 17:45:34 2053 GMT
Si ejecutas este comando después de iniciar una rotación de credenciales, el resultado será el tiempo de vida de tu certificado original. Este certificado sigue siendo válido hasta que completes la rotación. Una vez que hayas completado la rotación, el resultado será el tiempo de validez de tu nuevo certificado.
Para comprobar la duración de las credenciales de todos los clústeres de un proyecto, ejecuta el siguiente 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}'
Realizar una rotación de credenciales
Cualquier rotación de credenciales implica los siguientes pasos:
- Iniciar la rotación: el plano de control empieza a servir en una nueva dirección IP además de la dirección IP original. Se emiten nuevas credenciales para las cargas de trabajo y el plano de control.
- Recrear nodos: GKE recrea los nodos del clúster para que usen la nueva dirección IP y las nuevas credenciales, respetando la disponibilidad de las ventanas de mantenimiento y las exclusiones. También puedes volver a crear manualmente tus nodos actualizando la versión de los nodos a la misma versión de GKE que ya tienen.
- Actualiza los clientes de la API: después de iniciar la rotación, actualiza los clientes de la API del clúster, como las máquinas de desarrollo que usan
kubectl
, para que se comuniquen con el plano de control mediante la nueva dirección IP. - Completa la rotación: el plano de control deja de servir tráfico a través de la dirección IP original. Se revocarán las credenciales antiguas, incluidas las credenciales estáticas de las cuentas de servicio de Kubernetes.
Cuando inicias una rotación de credenciales o cuando GKE inicia automáticamente una rotación, GKE realiza estos pasos automáticamente, incluido el intento de completar la rotación. En cada paso, si la caducidad del clúster es de más de 30 días, GKE respeta la disponibilidad del mantenimiento. Durante las rotaciones automáticas antes de que caduque el clúster, GKE se reserva el derecho de ignorar la disponibilidad del mantenimiento para evitar que el clúster no se pueda recuperar. En un plazo de 30 días, GKE ignora la disponibilidad del mantenimiento en el primer paso, que es iniciar la rotación.
Si no completas una rotación de credenciales 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 las credenciales anteriores, la operación de finalización automática fallará, pero GKE seguirá intentando completar la operación hasta que las credenciales caduquen y el clúster no se pueda recuperar. Debes planificar el seguimiento manual y completar las rotaciones de credenciales que inicies. Para anular los bloqueos de disponibilidad de mantenimiento, ejecuta los comandos de cada una de las secciones siguientes para activar manualmente esas fases del proceso de rotación. No confíes en la función de autocompletar, que es una medida que se aplica de la mejor forma posible.
Iniciar la rotación
Para iniciar una rotación de credenciales, ejecuta el siguiente comando:
gcloud container clusters update CLUSTER_NAME \
--location LOCATION \
--start-credential-rotation
Este comando crea nuevas credenciales, las emite al plano de control y configura el plano de control para que funcione en dos direcciones IP: la dirección IP original y una nueva.
Volver a crear nodos
Después de volver a configurar el servidor de la API para que funcione con una nueva dirección IP, GKE actualiza automáticamente los nodos para que usen la nueva dirección IP y las credenciales si hay disponibilidad de mantenimiento. GKE actualiza todos tus nodos a la misma versión de GKE que ya tienen, lo que provoca que se vuelvan a crear. Para obtener más información, consulta Actualizaciones de grupos de nodos.
De forma predeterminada, GKE completa automáticamente las rotaciones de credenciales 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 vuelva a crear algunos nodos durante este periodo de siete días, la rotación de credenciales 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. Durante eventos importantes como Google Cloud Next, GKE también puede pausar la recreación automática de nodos para que no se produzcan interrupciones.
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=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 los cambios manuales que respetan las políticas de mantenimiento de GKE.
Comprobar el progreso de la recreación del grupo de nodos
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.
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 credenciales, debes actualizar todos los clientes de la API que estén fuera del clúster (como kubectl
en los ordenadores de los desarrolladores) para que usen las nuevas credenciales y apunten a la nueva dirección IP del plano de control.
Para actualizar tus clientes API, ejecuta el siguiente comando para cada cliente:
gcloud container clusters get-credentials CLUSTER_NAME \
--location LOCATION
Actualizar las credenciales de la cuenta de servicio de Kubernetes
Si usas credenciales estáticas para las cuentas de servicio de tu clúster, cambia a credenciales de corta duración. Al completar la rotación, las credenciales de ServiceAccount dejarán de ser válidas. Si no quieres usar credenciales de corta duración, asegúrate de volver a crear tus credenciales estáticas para todas las cuentas de servicio del clúster antes de completar la rotación.
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 las nuevas credenciales y la nueva dirección IP:
gcloud container clusters update CLUSTER_NAME \
--location=LOCATION \
--complete-credential-rotation
Si la rotación de credenciales no se completa y devuelve un mensaje de error similar al siguiente, consulta Error 400: Node pool requires recreation (Error 400: el grupo de nodos requiere una recreación):
ERROR: (gcloud.container.clusters.update) ResponseError: code=400, message=Node pool "test-pool-1" requires recreation.
GKE respeta la disponibilidad del mantenimiento al completar automáticamente la rotación. Sin embargo, GKE puede ignorar esta disponibilidad en un plazo de 30 días a partir de la fecha de vencimiento para evitar que el clúster se vuelva irrecuperable. Si la finalización de la rotación falla inicialmente y la rotación se inició hace al menos siete días, GKE intenta completar la rotación hasta la fecha de vencimiento de las credenciales. Después de esa fecha, el clúster no se podrá recuperar.
Siguientes pasos
- Consulta información sobre el objeto Secret de Kubernetes.
- Consulta cómo solucionar problemas de GKE.