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 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 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
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.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:
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
Elimina il CRD esistente:
kubectl delete crd <crd-name>
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.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>
Applica il CRD corretto:
kubectl apply -f <corrected-crd-file.yaml>
Ripristina le risorse personalizzate:
kubectl apply -f backup.yaml