Ir al contenido principal

馃攣 Renovaci贸n y Rotaci贸n de Certificados en Kubernetes (kubeadm certs)

 

馃幆 Introducci贸n

En un cl煤ster de Kubernetes, la mayor铆a de los certificados generados por kubeadm tienen una validez de un a帽o. Para evitar interrupciones en los componentes cr铆ticos, es fundamental revisar peri贸dicamente su vigencia y saber c贸mo renovarlos correctamente.

En este art铆culo aprender谩s:

  • C贸mo comprobar la expiraci贸n de los certificados

  • C贸mo renovarlos autom谩ticamente con kubeadm

  • C贸mo simular una renovaci贸n manual con openssl

  • C贸mo aplicar los cambios reiniciando los componentes afectados


馃暤️‍♂️ Comprobaci贸n del estado de los certificados

Kubernetes ofrece una herramienta integrada para revisar los certificados del cl煤ster:

kubeadm certs check-expiration

Este comando muestra informaci贸n clave:

  • Fecha de expiraci贸n

  • Tipo de certificado

  • Ruta en el sistema

馃搶 Salida de ejemplo:

CERTIFICATE EXPIRES RESIDUAL TIME CERTIFICATE AUTHORITY apiserver Jan 06, 2026 19:56 UTC 330d ca apiserver-kubelet-client Jan 06, 2026 19:56 UTC 330d ca

馃搷 Ubicaci贸n de los certificados a renovar

Los certificados generados por kubeadm est谩n en:

/etc/kubernetes/pki/

Ejemplo:

  • /etc/kubernetes/pki/apiserver.crt → Certificado TLS del API Server

  • /etc/kubernetes/pki/apiserver.key → Clave privada

  • /etc/kubernetes/pki/ca.crt y ca.key → CA usada para firmarlos


馃攧 Renovaci贸n autom谩tica con kubeadm

Para renovar los certificados del cl煤ster autom谩ticamente:

sudo kubeadm certs renew all

Tambi茅n puedes renovar certificados de forma individual:

sudo kubeadm certs renew apiserver

Esto genera nuevos certificados con nuevas fechas de expiraci贸n, reutilizando las claves privadas existentes.

⚠️ Nota: Tras renovar, es recomendable reiniciar los componentes afectados si no se reinician autom谩ticamente.


馃敡 Renovaci贸n manual con OpenSSL (simulaci贸n para el CKA)

Para prop贸sitos educativos o simulaciones (como en el ejercicio del examen), tambi茅n puedes generar y firmar certificados manualmente.

✅ Paso 1: Revisar el certificado actual

openssl x509 -in /etc/kubernetes/pki/apiserver.crt -text -noout

Busca:

  • Not After: Fecha de expiraci贸n

  • Issuer: Emisor (normalmente la CA del cl煤ster)

  • Subject: Identidad del servicio (CN=kube-apiserver)


✅ Paso 2: Crear un nuevo CSR (Certificate Signing Request)

Utilizando la misma clave privada:

openssl req -new -key /etc/kubernetes/pki/apiserver.key \ -out /tmp/apiserver.csr -subj "/CN=kube-apiserver"

✅ Paso 3: Firmar el CSR con la CA del cl煤ster

openssl x509 -req -in /tmp/apiserver.csr \ -CA /etc/kubernetes/pki/ca.crt \ -CAkey /etc/kubernetes/pki/ca.key \ -CAcreateserial \ -out /etc/kubernetes/pki/apiserver.crt \ -days 365 -sha256

Esto reemplaza el certificado anterior por uno nuevo firmado por la misma CA.

⚠️ Importante: No cambies el Subject ni el SAN, o el API Server no arrancar谩 correctamente. Para agregar SANs en una renovaci贸n manual, necesitar铆as usar un archivo de configuraci贸n externo (-extfile).


馃攣 Paso 4: Reiniciar el API Server

Si el API Server es un Static Pod (como en la mayor铆a de cl煤steres kubeadm), se reiniciar谩 autom谩ticamente si detecta cambios en su certificado.

Verifica con:

docker ps | grep kube-apiserver # o si usas containerd: crictl ps | grep kube-apiserver

Puedes borrar el contenedor para forzar el reinicio:

docker rm -f <container_id> # o crictl rm <container_id>

馃И Paso 5: Verificar el resultado

Una vez reiniciado, comprueba que el cl煤ster est谩 operativo y que el nuevo certificado est谩 en uso:

kubectl get componentstatuses kubectl get nodes

Y revisa de nuevo el certificado para ver su nueva fecha de expiraci贸n:

openssl x509 -in /etc/kubernetes/pki/apiserver.crt -text -noout

馃摑 Pregunta tipo examen (resumen)

Necesitas renovar el certificado del API Server manualmente y verificar que est茅 en uso.

Pasos esperados:

  1. Revisas el certificado actual con openssl

  2. Generas un CSR con la clave existente

  3. Firmas el nuevo certificado con la CA del cl煤ster

  4. Reemplazas el .crt

  5. Reinicias el API Server (static pod)

  6. Compruebas que est谩 activo y el nuevo certificado en uso


Comentarios

Entradas populares de este blog

Ubicaci贸n, Estructura y Manejo b谩sico de certificados.

                                                     Kubernetes utiliza certificados TLS (X.509) para cifrar la comunicaci贸n entre sus componentes y autenticar identidades (usuarios, nodos, API Server, etc.). Estos certificados son generados y gestionados autom谩ticamente cuando se instala un cl煤ster con kubeadm . En este art铆culo, veremos d贸nde se almacenan los certificados , cu谩l es su estructura y c贸mo inspeccionarlos f谩cilmente, una habilidad muy 煤til para el examen CKA. Cuando creas un cl煤ster con kubeadm , los certificados se generan por defecto en el directorio: /etc/ kubernetes /pki/ Puedes ver su contenido con: ls -l /etc/kubernetes/pki/ Tambi茅n hay certificados en: /etc/kubernetes/ (ah铆 ver谩s admin.conf , kubelet.conf , etc., que incluyen certificados embebidos, como veremos m谩s abajo). 馃П Estructura de los ce...

TLS Bootstrapping en Kubernetes: Qu茅 es, c贸mo funciona y por qu茅 importa en el examen CKA

                                                       Uno de los conceptos que a menudo pasan desapercibidos en la administraci贸n de Kubernetes —pero que resultan clave tanto en entornos reales como en el examen CKA— es el TLS Bootstrapping . En este art铆culo entender谩s qu茅 es, c贸mo funciona, qu茅 lo diferencia del kubeadm join tradicional y c贸mo puede aparecer en el examen. ¿Qu茅 es TLS Bootstrapping? TLS Bootstrapping es el proceso por el cual el kubelet , el agente que corre en cada nodo, obtiene autom谩ticamente un certificado TLS firmado por el cl煤ster para autenticarse con el kube-apiserver . En otras palabras: permite que un nuevo nodo se una de forma segura al cl煤ster sin necesidad de copiar manualmente los certificados. ¿Por qu茅 es necesario? Cuando a帽ades un nuevo nodo worker, su kubelet necesita autentic...