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. Questo problema può manifestarsi come errori durante la creazione, gli aggiornamenti o le eliminazioni delle risorse, influendo sulla stabilità e sulle prestazioni del cluster.

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

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

Identificare i cluster interessati

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

  • Utilizza la console Google Cloud .
  • Utilizza Google Cloud CLI o l'API Recommender, filtrando in base al 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 insight 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 i CRD con bundle CA configurato in modo errato.

Risolvere i problemi relativi ai CRD rilevati

Le seguenti sezioni 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 consiglio viene risolto entro 24 ore e non viene più visualizzato nella console. Se non sono ancora trascorse 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 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 del CRD.
    • CaBundle: il bundle CA associato all'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 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 il 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