Come utilizzare i manifesti di Kubernetes con Kube-Score

0
164

Kube-Score è uno strumento di analisi statica Kubernetes che collega le tue risorse per identificare problemi di sicurezza e affidabilità. L'esecuzione di Kube-Score prima di applicare i manifest al cluster può aiutarti a identificare i punti deboli prima che si trasformino in problemi reali.

Per iniziare

Kube-Score è offerto in diversi formati di installazione. I binari predefiniti sono disponibili per Windows, macOS e Linux da GitHub. In alternativa, puoi utilizzare il gestore di pacchetti Brew su macOS (brew install kube-score/tap/kube-score) o aggiungere Kube-Score come plugin kubectl (kubectl krew install score).

Esegui Kube -Punteggio utilizzando il comando kube-score nel tuo terminale. Accetta il percorso di un file manifest YAML di Kubernetes. I caratteri jolly sono supportati per la scansione di più file corrispondenti e intere directory.

Kube-Score funziona anche con i manifest convogliati dall'input standard. Ciò ti consente di eseguire lo strumento su un cluster Kubernetes live. Usa kubectl per accedere al manifest di una risorsa e reindirizzarlo al comando. Ecco il modo consigliato per analizzare l'intero cluster:

kubectl api-resources –verbs=list –namespaced -o name | xargs -n1 -I{} bash -c “kubectl get {} –all-namespaces -oyaml && echo —” | punteggio kube-score –

Questo meccanismo facilita anche l'uso con i grafici Helm. Usa il comando helm template per eseguire il rendering del tuo grafico come un normale manifest Kubernetes. Convoglia questo output in kube-score:

helm template example-manifest | punteggio kube –

Pubblicità

I risultati dei test colorati vengono inviati direttamente al tuo terminale. Ogni controllo fallito include una descrizione del test e suggerimenti per possibili risoluzioni. Esamina l'output per identificare modi per migliorare i tuoi manifest.

I test saranno contrassegnati come AVVERTENZA o CRITICO. Un errore critico di solito richiede una correzione immediata. Potrebbe non essere necessario risolvere gli avvisi, a seconda della situazione specifica.

L'output leggibile dall'uomo può essere disabilitato con il flag –output-format. Impostalo su json o ci per ottenere contenuti leggibili dalla macchina che possono essere facilmente analizzati da altri strumenti. Il formato ci ha lo scopo di aiutare il consumo da parte dei sistemi CI/CD, mentre json fornisce una rappresentazione JSON del normale output della console. Kube-Score esce sempre con un codice di stato 1 quando vengono rilevati errori.

Se vuoi sperimentare con Kube-Score, puoi utilizzare l'analizzatore live sul sito Web del progetto. Ciò consente di scrivere un manifest e osservarne i risultati della scansione in tempo reale. È utile quando stai sperimentando rapidamente Kube-Score o i tuoi manifest.

Cosa verifica Kube-Score?< /h2>

Kube-Score esegue oltre 20 diversi controlli che coprono un'ampia gamma di problemi di sicurezza e affidabilità. Questi includono i test per i limiti delle risorse del container, l'uso corretto delle rotte di ingresso e di uscita e la configurazione delle sonde di prontezza del container per i controlli di integrità.

Ecco alcune delle regole integrate:

  • Proibisci l'uso dell'ultimo tag per le immagini.
  • Assicurati che ogni Pod abbia una politica di pull delle immagini di Sempre, in modo che i segreti di pull siano convalidati a ogni tentativo.
  • Controlla i pod avere configurazioni probe e criteri di rete validi.
  • Verifica che tutte le etichette su tutte le risorse siano valide.
  • Verifica le anti-affinità proibitive dei Pod che impedirebbero la pianificazione di altri Pod per lo stesso lavoratore nodo.
  • Seleziona tutti i servizi come target di un pod valido.
  • Assicurati che i container utilizzino un filesystem root di sola lettura, senza modalità privilegiata.

Dovresti fare riferimento al README di Kube-Score per un elenco completo dei controlli disponibili. In molti casi, il set predefinito sarà sufficiente per darti visibilità sui problemi manifest più comuni.

Regole facoltative

Alcune regole sono facoltative e disattivate per impostazione predefinita. Questi sono generalmente casi soggettivi che potrebbero causare errori imprevisti se applicati a livello globale.

Pubblicità

I test facoltativi sono abilitati passando il flag –enable-optional-test al comando kube-score. È necessario un ID di prova da aggiungere alla scansione. Più test facoltativi vengono attivati ​​ripetendo il flag.

kube-score –enable-optional-test container-security-context-user-group-id

Questo comando esegue Kube-Score con un test aggiuntivo per esplicita ID utente e gruppo. Il controllo ha esito negativo se un Pod viene eseguito senza impostare manualmente ID utente/gruppo di 1.000 o più.

Puoi disabilitare i test in modo simile con il flag –ignore-test. Questo richiede un ID di prova da rimuovere dalla scansione. Inoltre, i flag –ignore-container-cpu-limit e –ignore-container-memory-limit inibiscono la consueta insistenza di Kube-Score sul fatto che ogni contenitore possiede CPU e limiti di memoria configurati manualmente.

< h2 id="managing-kubernetes-versions">Gestione delle versioni di Kubernetes

Kube-Score attualmente presuppone che tu stia utilizzando Kubernetes v1.18. Se stai eseguendo una versione diversa, specificala con il flag –kubernetes-version. Questo informa Kube-Score quali controlli sono effettivamente rilevanti per il tuo ambiente di distribuzione. Non specificare la versione corretta potrebbe causare falsi positivi o negativi, fornendoti un'immagine imprecisa della resilienza del tuo cluster.

Kube-Score si aspetta che le tue risorse individuali utilizzino API Kubernetes stabili. Qualsiasi risorsa che fa riferimento ad API beta che sono state sostituite da una versione stabile non supererà il test.

Riepilogo

Kube-Score fornisce una semplice analisi statica per i manifest delle risorse Kubernetes. Ti consente di conoscere potenziali problemi prima di provare a eseguire il deployment nel tuo cluster. L'esecuzione di Kube-Score come parte della tua pipeline CI ti dà la certezza che le tue risorse siano configurate correttamente e che il tuo cluster funzionerà in modo affidabile.

Pubblicità

Per ottenere i migliori risultati, fornisci a Kube-Score tutte le tue risorse. È più efficace quando il suo input include tutte le risorse nello stesso spazio dei nomi. In caso contrario, potresti scoprire che alcuni problemi vengono trascurati se vengono visualizzati a causa di un conflitto con un altro manifest.

Ricorda che Kube-Score non è un'analisi esaustiva del tuo cluster. È uno strumento di assistenza, non una lista di controllo completa che garantisce un cluster a tenuta stagna. Dovresti comunque controllare in modo indipendente il tuo ambiente per mantenere una sicurezza forte e prestazioni massime. Kube-Score è meglio utilizzato come utility quotidiana che aumenta la sicurezza delle singole implementazioni.