Hur man luddar sina Kubernetes-manifest med Kube-Score

0
165

Kube-Score är ett statiskt analysverktyg från Kubernetes som liner dina resurser för att identifiera säkerhets- och tillförlitlighetsfrågor. Att köra Kube-Score innan du använder manifest på ditt kluster kan hjälpa dig att identifiera smärtpunkter innan de blir till verkliga problem.

Komma igång

Kube-Score erbjuds i flera installationsformat. Förbyggda binärer är tillgängliga för Windows, macOS och Linux från GitHub. Alternativt kan du använda Brew-pakethanteraren på macOS (brygga installera kube-score/tap/kube-score) eller lägga till Kube-Score som ett kubectl-plugin (kubectl krew installera poäng).

Run Kube -Poänga med kommandot kube-score i din terminal. Den accepterar sökvägen till en Kubernetes YAML -manifestfil. Jokertecken stöds för att skanna flera matchande filer och hela kataloger.

Kube-Score fungerar också med manifester som pipas in från standardinmatning. Detta låter dig köra verktyget mot ett levande Kubernetes -kluster. Använd kubectl för att komma åt ett resursmanifest och rör det i kommandot. Här är det rekommenderade sättet att analysera hela ditt kluster:

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

Denna mekanism underlättar också användning med rodertabeller. Använd kommandot rodermall för att återge diagrammet som ett vanligt Kubernetes -manifest. Rör denna utdata till kube-score:

helm template exempel-manifest | kube -poäng poäng –

Annons

Färgade testresultat sänds direkt till din terminal. Varje misslyckad kontroll innehåller en beskrivning av testet och förslag på möjliga lösningar. Granska utdata för att identifiera sätt att förbättra dina manifest.

Tester kommer att markeras antingen som VARNING eller KRITISKA. Ett kritiskt misslyckande kräver vanligtvis omedelbar åtgärd. Varningar behöver kanske inte lösas, beroende på din specifika situation.

Mänskläsbar utmatning kan inaktiveras med flaggan –output-format. Ställ in detta på json eller ci för att få maskinläsbart innehåll som lätt kan analyseras av andra verktyg. Ci -formatet är avsett att underlätta konsumtion av CI/CD -system, medan json ger dig en JSON -representation av den vanliga konsolutmatningen. Kube-Score avslutas alltid med en statuskod på 1 när fel upptäcks.

Om du vill experimentera med Kube-Score kan du använda live-analysatorn på projektets webbplats. Detta låter dig skriva ett manifest och observera dess skanningsresultat i realtid. Det är praktiskt när du snabbt experimenterar med Kube-Score eller dina manifest.

Vad kontrollerar Kube-Score? /h2>

Kube-Score kör över 20 olika kontroller som täcker ett brett spektrum av säkerhets- och tillförlitlighetsproblem. Dessa inkluderar tester för korrekta behållarresursgränser, korrekt användning av in- och utträdesvägar och konfiguration av behållarberedskapssonder för hälsokontroller.

Här är några av de inbyggda reglerna:

  • Förbjud användning av den senaste taggen för bilder.
  • Se till att varje pod har en image pull -policy på Always, så att pull -hemligheter valideras vid varje försök.
  • Kontrollera podningar ha giltiga sondkonfigurationer och nätverkspolicyer.
  • Kontrollera att alla etiketter på alla resurser är giltiga.
  • Sök efter oöverkomliga Pod-anti-affiniteter som skulle förhindra att andra Pods schemaläggs till samma arbetare nod.
  • Kontrollera att alla tjänster riktar sig mot en giltig pod.
  • Se till att behållare använder ett skrivskyddat rotfilsystem utan privilegierat läge.

Du bör läsa Kube-Score README för en uttömmande lista över tillgängliga kontroller. I många fall är standarduppsättningen tillräcklig för att ge dig inblick i de vanligaste manifestproblemen.

Valfria regler

Vissa regler är valfria och inaktiverade som standard. Det här är i allmänhet subjektiva fall som kan orsaka oväntade misslyckanden om de tillämpas globalt.

Annonsering

Valfria test aktiveras genom att skicka flaggan –enable-optional-test till kommandot kube-score. Det krävs ett test -ID för att lägga till skanningen. Flera valfria test aktiveras genom att flaggan upprepas.

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

Detta kommando kör Kube-Score med ett extra test för explicita användar- och grupp -ID. Kontrollen misslyckas om en pod körs utan att manuellt ställa in användar-/grupp -ID på 1 000 eller högre.

Du kan inaktivera tester på ett liknande sätt med –ignore-test flaggan. Detta tar ett test -ID för att ta bort från skanningen. Dessutom hämmar –ignore-container-cpu-limit och –ignore-container-memory-limit-flaggorna Kube-Scores vanliga insisterande på att varje behållare har manuellt konfigurerade CPU- och minnesgränser.

< h2 id = "managing-kubernetes-versioner"> Hantera Kubernetes-versioner

Kube-Score förutsätter för närvarande att du använder Kubernetes v1.18. Om du kör en annan version anger du den med –kubernetes-version flaggan. Detta informerar Kube-Score om vilka kontroller som faktiskt är relevanta för din distributionsmiljö. Om du inte anger den korrekta versionen kan det leda till falska positiva eller negativa resultat, vilket ger dig en felaktig bild av klusterets motståndskraft.

Kube-Score förväntar sig att dina enskilda resurser använder stabila Kubernetes API: er. Alla resurser som refererar till beta -API: er som har ersatts av en stabil version kommer att misslyckas med testet.

Sammanfattning

Kube-Score ger enkel statisk analys för Kubernetes-resursmanifest. Det låter dig lära dig om potentiella problem innan du försöker distribuera till ditt kluster. Att köra Kube-Score som en del av din CI-pipeline ger dig förtroende för att dina resurser är korrekt konfigurerade och att ditt kluster fungerar på ett tillförlitligt sätt.

Annonsering

För bästa resultat, mata Kube-Score alla dina resurser. Det är mest effektivt när dess inmatning innehåller alla resurser i samma namnområde. Annars kan det hända att vissa problem förbises om de dyker upp på grund av en konflikt med ett annat manifest.

Kom ihåg att Kube-Score inte är en uttömmande analys av ditt kluster. Det är ett hjälpmedel, inte en komplett checklista som garanterar ett vattentätt kluster. Du bör fortfarande självständigt granska din miljö för att upprätthålla stark säkerhet och högsta prestanda. Kube-Score används bäst som ett dagligt verktyg som ökar säkerheten för enskilda distributioner.