Las definiciones de recursos personalizados (CRD)
son herramientas potentes 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. Este problema puede manifestarse como errores durante la creación, actualización o eliminación de recursos, lo que afecta la estabilidad y el rendimiento del clúster.
Para evitar este problema, Google Kubernetes Engine (GKE) detecta automáticamente los CRD con paquetes de CA no válidos y genera una recomendación. Usa este documento para encontrar la recomendación, identificar los CRD mal configurados y actualizarlos.
Esta información es importante para los administradores y operadores de la plataforma y otros usuarios que administran CRD y recursos personalizados en GKE.
Identifica los clústeres afectados
Para obtener estadísticas que identifiquen los clústeres afectados por CRD con paquetes de AC no válidos, sigue
las instrucciones para ver estadísticas y recomendaciones del subtipo K8S_CRD_WITH_INVALID_CA_BUNDLE. Puedes obtener estadísticas de las siguientes maneras:
- Usa la consola de Google Cloud .
- Usa Google Cloud CLI o la API de Recommender y filtra con el subtipo
K8S_CRD_WITH_INVALID_CA_BUNDLE.
Después de identificar las 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 una 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 secciones siguientes, se incluyen instrucciones para solucionar problemas de las CRD que GKE detectó como potencialmente mal configuradas.
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 CRDs afectados en un clúster
Consulta estadísticas y recomendaciones para el subtipo
K8S_CRD_WITH_INVALID_CA_BUNDLEy 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.caBundleSe muestra el siguiente resultado:
- Name: Es el nombre de la 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 una CRD que sabes que utiliza un webhook de conversión, esto indica un posible problema con el caBundle.
Vuelve a crear la CRD
Para resolver este error, vuelve a crear el CRD afectado con un paquete de CA válido:
Crea 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.yamlBorra el CRD existente:
kubectl delete crd <crd-name>Asegúrate de que el campo
caBundlede la CRD contenga un certificado PEM con codificación en base64 y con el formato correcto. Para ello, puedes editar la CRD directamente o comunicarte con sus autores.Modifica la definición YAML de la CRD y actualiza el campo
spec.conversion.webhook.clientConfig.caBundlecon los datos válidos del paquete de CA. El resultado debería ser similar a lo siguiente:spec: conversion: webhook: clientConfig: caBundle: <base64-encoded-ca-bundle>Aplica el CRD corregido:
kubectl apply -f <corrected-crd-file.yaml>Restablece tus recursos personalizados:
kubectl apply -f backup.yaml