Las definiciones de recursos personalizados
(CRDs) son herramientas eficaces para ampliar las funciones de Kubernetes.
Sin embargo, si un CRD contiene un paquete de autoridad de certificación (CA) no válido o mal formado en 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, las actualizaciones o las eliminaciones de recursos. Google Kubernetes Engine (GKE) monitoriza tus clústeres y usa el servicio Recommender para ofrecerte recomendaciones sobre cómo optimizar el uso de la plataforma.
Para ayudarte a asegurarte de que tu clúster siga siendo estable y tenga un buen rendimiento, consulta las recomendaciones de GKE para CRDs que funcionan, pero que tienen un paquete de CA no válido. Sigue estas instrucciones para comprobar si hay CRDs mal configurados y actualizarlos si es necesario. Para obtener más información sobre cómo gestionar las estadísticas y las recomendaciones de Recommenders, consulta Optimizar el uso de GKE con estadísticas y recomendaciones.
Identificar los clústeres afectados
Para obtener información valiosa que identifique los clústeres afectados por CRDs con paquetes de CA no válidos, sigue las instrucciones para ver información valiosa y recomendaciones del subtipo K8S_CRD_WITH_INVALID_CA_BUNDLE
. Puedes obtener estadísticas de las siguientes formas:
- Usa la consola Google Cloud .
- Usa Google Cloud CLI o la API Recommender y filtra por el subtipo
K8S_CRD_WITH_INVALID_CA_BUNDLE
.
Una vez que haya identificado los CRDs mediante las estadísticas, siga las instrucciones para solucionar el problema del paquete de CA mal configurado.
Cuando GKE detecta CRDs mal configurados
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 una o más CRDs que informan de un caBundle
mal configurado para la configuración del cliente webhook en spec.conversion.webhook.clientConfig
.
Sigue las instrucciones para comprobar los CRDs con un paquete de CA mal configurado.
Solucionar los problemas detectados en los CRDs
En las siguientes secciones se incluyen instrucciones para solucionar los problemas de los CRDs que GKE ha detectado como potencialmente mal configurados.
Una vez que haya implementado las instrucciones y los CRDs estén configurados correctamente, la recomendación se resolverá en un plazo de 24 horas y dejará de aparecer en la consola. Si han transcurrido menos de 24 horas desde que implementaste las directrices de la recomendación, puedes marcarla como resuelta. Si no quieres implementar la recomendación, puedes rechazarla.
Identificar CRDs afectados en un clúster
Consulta las estadísticas y las recomendaciones del subtipo
K8S_CRD_WITH_INVALID_CA_BUNDLE
y elige una estadística cada vez para solucionar los problemas. GKE genera una estadística por clúster que tiene un CRD dañado.Ejecuta el siguiente comando para describir el servicio y buscar CRDs con paquetes de CA que puedan dar problemas:
kubectl get crd -o custom-columns=NAME:.metadata.name,CABUNDLE:.spec.conversion.webhook.clientConfig.caBundle
La salida incluye lo siguiente:
- Nombre: el nombre del CRD.
- CaBundle el paquete de CA asociado al webhook de conversión del CRD, si está presente. Examina el resultado. Si la columna caBundle está vacía en un CRD que utiliza un webhook de conversión, significa que puede haber un problema con caBundle.
Vuelve a crear el CRD
Para solucionar este error, vuelva a crear el CRD afectado con un paquete de CA válido:
Crea una copia de seguridad de los recursos personalizados asociados a este CRD problemático, si los tienes. Ejecuta el siguiente comando para exportar los recursos:
kubectl get <crd-name> -o yaml > backup.yaml
Elimina el CRD que ya tienes:
kubectl delete crd <crd-name>
Asegúrate de que el campo
caBundle
del CRD contenga un certificado PEM bien formado y codificado en Base64. Para ello, puedes editar el CRD directamente o ponerte en contacto con sus autores.Modifica la definición YAML de CRD y actualiza el campo
spec.conversion.webhook.clientConfig.caBundle
con los datos válidos del paquete de CA. El resultado debería ser similar al siguiente:spec: conversion: webhook: clientConfig: caBundle: <base64-encoded-ca-bundle>
Aplica el CRD corregido:
kubectl apply -f <corrected-crd-file.yaml>
Restaura tus recursos personalizados:
kubectl apply -f backup.yaml