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 in formato non corretto all'interno della configurazione del webhook di conversione spec.conversion.webhook.clientConfig.caBundle, può interrompere le operazioni del cluster. Questo problema può manifestarsi come errori durante la creazione, l'aggiornamento o l'eliminazione delle risorse, con un impatto sulla stabilità e sulle prestazioni del cluster.

Per evitare questo problema, Google Kubernetes Engine (GKE) rileva automaticamente i CRD con bundle CA non validi e genera un suggerimento. Utilizza questo documento per trovare il consiglio, identificare le CRD configurate in modo errato e aggiornarle.

Queste informazioni sono importanti per amministratori e operatori della piattaforma e per altri utenti che gestiscono CRD e risorse personalizzate in GKE.

Identificare i cluster interessati

Per ottenere informazioni che identificano i cluster interessati dalle definizioni di risorse personalizzate con bundle CA non validi, segui le istruzioni per visualizzare approfondimenti e suggerimenti per il sottotipo K8S_CRD_WITH_INVALID_CA_BUNDLE. Puoi ottenere insight nei seguenti modi:

  • Utilizza la console Cloud de Confiance .
  • Utilizza Google Cloud CLI o l'API Recommender, filtrando in base al sottotipo K8S_CRD_WITH_INVALID_CA_BUNDLE.

Dopo aver identificato gli elenchi di revoca dei certificati 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 suggerimento 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 aver configurato correttamente le 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 consiglio, 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 risolvere il problema. GKE genera un insight per ogni cluster con un CRD non funzionante.

  2. Esegui questo comando per descrivere il servizio e trovare i 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 il CRD

Per risolvere questo errore, ricrea la CRD interessata 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 della 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 la CRD corretta:

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

        kubectl apply -f backup.yaml
    

Passaggi successivi