Las definiciones de recursos personalizados (CRD) son herramientas eficaces para extender las capacidades de Kubernetes.
Sin embargo, si una CRD contiene un paquete de entidades de certificación (CA) no válido o con formato incorrecto dentro de su configuración de webhook de conversión spec.conversion.webhook.clientConfig.caBundle
, puede interrumpir las operaciones del clúster. Esto puede manifestarse como errores durante la creación, actualización o eliminación de recursos. Google Kubernetes Engine (GKE) supervisa tus clústeres y usa el servicio de recomendador para brindar orientación sobre cómo optimizar el uso de la plataforma.
Para ayudarte a garantizar que tu clúster permanezca estable y tenga un buen rendimiento, consulta las recomendaciones de GKE para los CRD que funcionan, pero tienen un paquete de CA no válido. Usa esta guía para verificar tus CRD potencialmente mal configuradas y actualizarlas, si es necesario. Para obtener más información sobre cómo administrar las estadísticas y las recomendaciones de recomendadores, consulta Optimiza el uso de GKE con estadísticas y recomendaciones.
Identifica los clústeres afectados
Para obtener estadísticas que identifiquen los clústeres afectados por CRD con paquetes de CA no válidos, sigue las instrucciones para ver estadísticas y recomendaciones para el subtipo K8S_CRD_WITH_INVALID_CA_BUNDLE
. Puedes obtener estadísticas de las siguientes maneras:
- Usa la Trusted Cloud consola.
- Usa Google Cloud CLI o la API de Recommender y filtra con el subtipo
K8S_CRD_WITH_INVALID_CA_BUNDLE
.
Después de identificar los CRD con las estadísticas, sigue las instrucciones para solucionar problemas del paquete de CA mal configurado.
Cuando GKE detecta CRD mal configuradas
GKE genera una estadística y una recomendación con el subtipo K8S_CRD_WITH_INVALID_CA_BUNDLE
si el clúster de GKE tiene uno o más CRD que informan un caBundle
mal configurado para la configuración del cliente de webhook en spec.conversion.webhook.clientConfig
.
Sigue las instrucciones para verificar las CRDs con un paquete de CA mal configurado.
Soluciona problemas de los CRD detectados
En las siguientes secciones, se incluyen instrucciones para solucionar problemas de los CRD que GKE detectó como potencialmente mal configurados.
Después de que implementes las instrucciones y los CRD se configuren de forma correcta, la recomendación se resuelve en un plazo de 24 horas y ya no aparece en la consola. Si transcurrieron menos de 24 horas desde que implementaste la guía de la recomendación, puedes marcarla como resuelta. Si no deseas implementar la recomendación, puedes descartarla.
Identifica los CRD afectados en un clúster
Consulta las estadísticas y recomendaciones para el subtipo
K8S_CRD_WITH_INVALID_CA_BUNDLE
y elige una estadística a la vez para solucionar problemas. GKE genera una estadística por cada clúster que tiene un CRD dañado.Ejecuta el siguiente comando para describir el servicio y encontrar CRD con paquetes de CA potencialmente problemáticos:
kubectl get crd -o custom-columns=NAME:.metadata.name,CABUNDLE:.spec.conversion.webhook.clientConfig.caBundle
Se muestra el siguiente resultado:
- Nombre: Es el nombre del CRD.
- CaBundle: Es el paquete de CA asociado con el webhook de conversión del CRD, si está presente. Examina el resultado. Si la columna caBundle está vacía para un CRD que sabes que utiliza un webhook de conversión, esto indica un posible problema con caBundle.
Vuelve a crear la CRD
Para resolver este error, vuelve a crear el CRD afectado con un paquete de CA válido:
Haz una copia de seguridad de los recursos personalizados existentes asociados con este CRD problemático, si tienes alguno. Ejecuta el siguiente comando para exportar los recursos existentes:
kubectl get <crd-name> -o yaml > backup.yaml
Borra el CRD existente:
kubectl delete crd <crd-name>
Asegúrate de que el campo
caBundle
de la CRD contenga un certificado PEM con codificación base64 y con el formato correcto. Para ello, edita la CRD directamente o comunícate con sus autores.Modifica la definición YAML de la CRD y actualiza el campo
spec.conversion.webhook.clientConfig.caBundle
con los datos válidos del paquete de la CA. El resultado debería ser similar a lo siguiente:spec: conversion: webhook: clientConfig: caBundle: <base64-encoded-ca-bundle>
Aplica la CRD corregida:
kubectl apply -f <corrected-crd-file.yaml>
Restablece tus recursos personalizados:
kubectl apply -f backup.yaml