Risolvi i problemi relativi alle CRD con un bundle CA non valido


Le definizioni di risorse personalizzate (CRD) sono strumenti potenti per estendere le funzionalità di Kubernetes. Tuttavia, se una CRD contiene un bundle di autorità di certificazione (CA) non valido o malformato all'interno della configurazione del webhook di conversione spec.conversion.webhook.clientConfig.caBundle, può interrompere le operazioni del cluster. Ciò può manifestarsi come errori durante la creazione, gli aggiornamenti o le eliminazioni delle risorse. Google Kubernetes Engine (GKE) monitora i cluster e utilizza il servizio Recommender per fornire indicazioni su come ottimizzare l'utilizzo della piattaforma.

Per aiutarti a garantire che il tuo cluster rimanga stabile e performante, consulta i suggerimenti di GKE per le CRD che funzionano ma hanno un bundle CA non valido. Utilizza queste indicazioni per controllare le CRD potenzialmente configurate in modo errato e aggiornarle, se necessario. Per saperne di più su come gestire approfondimenti e suggerimenti di Recommenders, consulta Ottimizzare l'utilizzo di GKE con approfondimenti e suggerimenti.

Identificare i cluster interessati

Per ottenere approfondimenti che identificano i cluster interessati dalle CRD con bundle CA non validi, segui le istruzioni per visualizzare approfondimenti e consigli per il sottotipo K8S_CRD_WITH_INVALID_CA_BUNDLE. Puoi ottenere approfondimenti nei seguenti modi:

  • Utilizza la console Trusted Cloud .
  • Utilizza Google Cloud CLI o l'API Recommender, filtrando con il sottotipo K8S_CRD_WITH_INVALID_CA_BUNDLE.

Dopo aver identificato i CRD utilizzando gli approfondimenti, segui le istruzioni per risolvere i problemi relativi al bundle CA configurato in modo errato.

Quando GKE rileva CRD configurate in modo errato

GKE genera un approfondimento e un consiglio con il sottotipo K8S_CRD_WITH_INVALID_CA_BUNDLE se il cluster GKE ha uno o più CRD che segnalano un caBundle configurato in modo errato per la configurazione del client webhook in spec.conversion.webhook.clientConfig.

Segui le istruzioni per controllare le definizioni di risorse personalizzate con bundle CA configurato in modo errato.

Risolvere i problemi relativi ai CRD rilevati

Le sezioni seguenti contengono istruzioni per risolvere i problemi relativi alle CRD che GKE ha rilevato come potenzialmente configurate in modo errato.

Dopo aver implementato le istruzioni e configurato correttamente i CRD, il suggerimento viene risolto entro 24 ore e non viene più visualizzato nella console. Se sono trascorse meno di 24 ore dall'implementazione delle indicazioni del consiglio, puoi contrassegnare il consiglio come risolto. Se non vuoi implementare il suggerimento, puoi ignorarlo.

Identificare le CRD interessate in un cluster

  1. Visualizza approfondimenti e consigli per il sottotipo K8S_CRD_WITH_INVALID_CA_BUNDLE, scegliendo un approfondimento alla volta per la risoluzione dei problemi. GKE genera un approfondimento per cluster con una CRD danneggiata.

  2. Esegui questo comando per descrivere il servizio e trovare CRD con bundle CA potenzialmente problematici:

    kubectl get crd -o custom-columns=NAME:.metadata.name,CABUNDLE:.spec.conversion.webhook.clientConfig.caBundle
    

    L'output include quanto segue:

    • Nome: il nome della CRD.
    • CaBundle: il bundle CA associato al webhook di conversione del CRD, se presente. Esamina l'output. Se la colonna caBundle è vuota per un CRD che sai che utilizza un webhook di conversione, ciò indica un potenziale problema con caBundle.

Ricrea la CRD

Per risolvere questo errore, ricrea il CRD interessato con un bundle CA valido:

  1. Esegui il backup delle risorse personalizzate esistenti associate a questo CRD problematico, se presenti. Esegui questo comando per esportare le risorse esistenti:

      kubectl get <crd-name> -o yaml > backup.yaml
    
  2. Elimina la CRD esistente:

      kubectl delete crd <crd-name>
    
  3. Assicurati che il campo caBundle della CRD contenga un certificato PEM con codifica Base64 in formato corretto. Puoi farlo modificando direttamente la CRD o contattando i relativi autori.

  4. Modifica la definizione YAML del CRD, aggiornando il campo spec.conversion.webhook.clientConfig.caBundle con i dati del bundle CA validi. Il risultato dovrebbe essere simile al seguente:

        spec:
          conversion:
            webhook:
              clientConfig:
                caBundle: <base64-encoded-ca-bundle>
    
  5. Applica il CRD corretto:

        kubectl apply -f <corrected-crd-file.yaml>
    
  6. Ripristina le risorse personalizzate:

        kubectl apply -f backup.yaml
    

Passaggi successivi