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 della CA (autorità di certificazione) non valido o con formato non corretto all'interno della configurazione del webhook di conversionespec.conversion.webhook.clientConfig.caBundle, può interrompere le operazioni del cluster. Ciò può manifestarsi sotto forma di errori durante la creazione, l'aggiornamento o l'eliminazione delle risorse. Google Kubernetes Engine (GKE) monitora i tuoi cluster e utilizza il servizio Recommender per fornire indicazioni su come ottimizzare l'utilizzo della piattaforma.

Per aiutarti ad assicurarti che il tuo cluster rimanga stabile e ottimizzato, consulta i consigli di GKE per i CRD che funzionano, ma hanno un bundle CA non valido. Utilizza queste indicazioni per controllare i CRD potenzialmente configurati in modo errato e aggiornarli, se necessario. Per scoprire di più su come gestire gli approfondimenti e i consigli di Recommenders, consulta l'articolo Ottimizzare l'utilizzo di GKE con approfondimenti e consigli.

Identifica i cluster interessati

Per ottenere informazioni che identificano i cluster interessati da 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 Google Cloud console.
  • Utilizza Google Cloud CLI o l'API Recommender filtrando con il sottotipoK8S_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 configurati in modo errato

GKE genera un'informazione 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 i CRD con bundle CA configurato in modo errato.

Risolvere i problemi relativi ai CRD rilevati

Le sezioni seguenti forniscono istruzioni per la risoluzione dei problemi relativi ai CRD rilevati da GKE come potenzialmente configurati in modo errato.

Dopo aver implementato le istruzioni e aver configurato correttamente i CRD, il consiglio 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 contrassegnarlo 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 insight per cluster con un CRD danneggiato.

  2. Esegui il seguente comando per descrivere il servizio e trovare i CRD con pacchetti 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 risorsa 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 di cui sai che utilizza un webhook di conversione, è possibile che si tratti di un potenziale problema con il caBundle.

Ricrea il 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 il seguente 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 campospec.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