Solucionar problemas de CRDs con un paquete de CA no válido

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. Este problema puede manifestarse como errores durante la creación, las actualizaciones o las eliminaciones de recursos, lo que afecta a la estabilidad y al rendimiento de tu clúster.

Para evitar este problema, Google Kubernetes Engine (GKE) detecta automáticamente los CRDs con paquetes de CA no válidos y genera una recomendación. Consulta este documento para encontrar la recomendación, identificar las CRDs mal configuradas y actualizarlas.

Esta información es importante para los administradores y operadores de la plataforma y otros usuarios que gestionan CRDs y recursos personalizados en GKE.

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 Google Cloud consola.
  • Usa Google Cloud CLI o la API Recommender y filtra por el subtipo K8S_CRD_WITH_INVALID_CA_BUNDLE.

Una vez que haya identificado las 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 uno o varios 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

  1. 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.

  2. Ejecuta el siguiente comando para describir el servicio y encontrar 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:

  1. 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
    
  2. Elimina el CRD que ya tienes:

      kubectl delete crd <crd-name>
    
  3. Asegúrate de que el campo caBundle del CRD contenga un certificado PEM bien formado y codificado en Base64. Para ello, edita el CRD directamente o ponte en contacto con sus autores.

  4. 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>
    
  5. Aplica el CRD corregido:

        kubectl apply -f <corrected-crd-file.yaml>
    
  6. Restaura tus recursos personalizados:

        kubectl apply -f backup.yaml
    

Siguientes pasos