Analyse des objets Kubernetes avec des recommandations pour améliorer la fiabilité et la sécurité. kube-score prévient activement les temps d'arrêt et les bugs dans vos YAML et Charts Kubernetes. Analyse statique de code pour Kubernetes.

kube-score est un outil qui effectue une analyse statique de code de vos définitions d'objets Kubernetes.
Le résultat est une liste de recommandations sur ce que vous pouvez améliorer pour rendre votre application plus sécurisée et plus résiliente.
Vous pouvez tester kube-score dans le navigateur avec la démo en ligne (source).
kube-score est facile à installer et est disponible via les sources suivantes :
| Distribution | Commande / Lien |
|---|---|
| Binaires pré-compilés pour macOS, Linux et Windows | Releases GitHub |
| Docker | docker pull zegl/kube-score (Docker Hub) |
| Homebrew (macOS et Linux) | brew install kube-score |
| Krew (macOS et Linux) | kubectl krew install score |
Pour une liste complète des vérifications, voir README_CHECKS.md.
NetworkPolicy, des règles d'egress et d'ingress sont recommandéesPodDisruptionPolicy
kube-score peut être exécuté dans votre environnement CI/CD et se termine avec le code de sortie 1 si une erreur critique a été trouvée.
Le niveau de déclenchement peut être changé en avertissement avec l'argument --exit-one-on-warning.
L'entrée de kube-score doit être toutes les applications que vous déployez dans le même namespace pour le meilleur résultat.
helm template my-app | kube-score score -
kustomize build . | kube-score score -
kube-score score my-app/*.yaml
kube-score score my-app/deployment.yaml my-app/service.yaml
kubectl api-resources --verbs=list --namespaced -o name \
| xargs -n1 -I{} bash -c "kubectl get {} --all-namespaces -oyaml && echo ---" \
| kube-score score -
docker run -v $(pwd):/project zegl/kube-score:latest score my-app/*.yaml
Utilisation de kube-score :
kube-score [action] --flags
Actions :
score Vérifie tous les fichiers en entrée et leur donne un score et des recommandations
list Affiche une liste CSV de toutes les vérifications de score disponibles
version Affiche la version de kube-score
help Affiche ce message
Flags pour score :
--disable-ignore-checks-annotations Définir sur true pour désactiver l'effet des annotations 'kube-score/ignore'
--disable-optional-checks-annotations Définir sur true pour désactiver l'effet des annotations 'kube-score/enable'
--enable-optional-test strings Activer un test optionnel, peut être défini plusieurs fois
--exit-one-on-warning Quitter avec le code 1 en cas d'avertissements
--help Afficher l'aide
--ignore-container-cpu-limit Désactive l'obligation de définir une limite CPU de conteneur
--ignore-container-memory-limit Désactive l'obligation de définir une limite mémoire de conteneur
--ignore-test strings Désactiver un test, peut être défini plusieurs fois
--kubernetes-version string Définir la version de kubernetes affecte les vérifications exécutées sur les manifests. Définissez-la sur la version de Kubernetes que vous utilisez en production pour les meilleurs résultats. (par défaut "v1.18")
-o, --output-format string Définir sur 'human', 'json', 'ci' ou 'sarif'. Si défini sur ci, kube-score produira la sortie dans un format plus facile à analyser par d'autres programmes. La sortie Sarif permet une intégration plus facile avec les plateformes CI. (par défaut "human")
--output-version string Modifie la version de --output-format. Le format 'json' a les versions 'v2' (par défaut) et 'v1' (déprécié, sera supprimé dans v1.7.0). Les formats 'human' et 'ci' n'ont que la version 'v1' (par défaut). Si non défini explicitement, la version par défaut pour ce format de sortie particulier sera utilisée.
-v, --verbose count Activer la sortie verbeuse, peut être défini plusieurs fois pour plus de verbosité.
Les tests peuvent être ignorés pour toute l'exécution du programme avec le flag --ignore-test.
Un test peut également être ignoré par objet en ajoutant l'annotation kube-score/ignore à l'objet.
La valeur doit être une chaîne de caractères séparée par des virgules des IDs de tests.
Exemple :
Tester cet objet désactivera temporairement le test service-type, qui avertit contre l'utilisation de services de type NodePort.
apiVersion: v1
kind: Service
metadata:
name: node-port-service-with-ignore
namespace: foospace
annotations:
kube-score/ignore: service-type
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: NodePort
Les tests optionnels peuvent être activés pour toute l'exécution du programme avec le flag --enable-optional-test.
Un test peut également être activé par objet en ajoutant l'annotation kube-score/enable à l'objet.
La valeur doit être une chaîne de caractères séparée par des virgules des IDs de tests.
Exemple :