Comment lisser vos manifestes Kubernetes avec Kube-Score

0
168

Kube-Score est un outil d'analyse statique Kubernetes qui lint vos ressources pour identifier les problèmes de sécurité et de fiabilité. L'exécution de Kube-Score avant d'appliquer les manifestes à votre cluster peut vous aider à identifier les points sensibles avant qu'ils ne se transforment en problèmes réels.

Mise en route

Kube-Score est proposé dans plusieurs formats d'installation. Des binaires prédéfinis sont disponibles pour Windows, macOS et Linux à partir de GitHub. Alternativement, vous pouvez utiliser le gestionnaire de packages Brew sur macOS (brew install kube-score/tap/kube-score), ou ajouter Kube-Score en tant que plugin kubectl (kubectl krew install score).

Exécutez Kube -Score en utilisant la commande kube-score dans votre terminal. Il accepte le chemin d'accès à un fichier manifeste Kubernetes YAML. Les caractères génériques sont pris en charge pour analyser plusieurs fichiers correspondants et des répertoires entiers.

Kube-Score fonctionne également avec les manifestes transmis à partir de l'entrée standard. Cela vous permet d'exécuter l'outil sur un cluster Kubernetes en direct. Utilisez kubectl pour accéder au manifeste d'une ressource et dirigez-le dans la commande. Voici la méthode recommandée pour analyser l'ensemble de votre cluster :

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

Ce mécanisme facilite également l'utilisation avec les graphiques Helm. Utilisez la commande helm template pour afficher votre graphique en tant que manifeste Kubernetes standard. Transférez cette sortie dans kube-score :

modèle de barre exemple-manifeste | score kube-score –

Publicité

Les résultats de test colorisés sont émis directement sur votre terminal. Chaque contrôle échoué comprend une description du test et des suggestions de solutions possibles. Examinez le résultat pour identifier les moyens d'améliorer vos manifestes.

Les tests seront marqués comme AVERTISSEMENT ou CRITIQUE. Une défaillance critique nécessite généralement une correction immédiate. Les avertissements peuvent ne pas avoir besoin d'être résolus, selon votre situation spécifique.

La sortie lisible par l'homme peut être désactivée avec l'indicateur –output-format. Définissez ceci sur json ou ci pour obtenir un contenu lisible par machine qui est facilement analysé par d'autres outils. Le format ci est destiné à faciliter la consommation par les systèmes CI/CD, tandis que json vous donne une représentation JSON de la sortie de la console normale. Kube-Score se termine toujours avec un code d'état de 1 lorsque des erreurs sont détectées.

Si vous souhaitez expérimenter avec Kube-Score, vous pouvez utiliser l'analyseur en direct sur le site Web du projet. Cela vous permet d'écrire un manifeste et d'observer ses résultats d'analyse en temps réel. C'est pratique lorsque vous expérimentez rapidement avec Kube-Score ou vos manifestes.

Que vérifie Kube-Score ?< /h2>

Kube-Score exécute plus de 20 contrôles différents couvrant un large éventail de problèmes de sécurité et de fiabilité. Celles-ci incluent des tests pour les limites de ressources de conteneur appropriées, l'utilisation correcte des routes d'entrée et de sortie et la configuration des sondes de préparation des conteneurs pour les vérifications de l'état.

Voici quelques-unes des règles intégrées :

  • Interdire l'utilisation de la dernière balise pour les images.
  • S'assurer que chaque pod a une politique d'extraction d'image de Always, afin que les secrets d'extraction soient validés à chaque tentative.
  • Vérifier les pods avoir des configurations de sonde et des politiques réseau valides.
  • Vérifiez que toutes les étiquettes sur toutes les ressources sont valides.
  • Vérifiez les anti-affinités de pod prohibitives qui empêcheraient d'autres pods d'être planifiés pour le même nœud de calcul nœud.
  • Vérifiez que tous les services ciblent un pod valide.
  • Assurez-vous que les conteneurs utilisent un système de fichiers racine en lecture seule, sans mode privilégié.

Vous devez vous référer au fichier README de Kube-Score pour une liste exhaustive des contrôles disponibles. Dans de nombreux cas, l'ensemble par défaut sera suffisant pour vous donner une visibilité sur les problèmes manifestes les plus courants.

Règles facultatives

Certaines règles sont facultatives et désactivées par défaut. Ce sont généralement des cas subjectifs qui peuvent provoquer des échecs inattendus s'ils sont appliqués globalement.

Publicité

Les tests facultatifs sont activés en passant l'indicateur –enable-optional-test à la commande kube-score. Il faut un ID de test à ajouter à l'analyse. Plusieurs tests facultatifs sont activés en répétant l'indicateur.

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

Cette commande exécute Kube-Score avec un test supplémentaire pour explicite ID d'utilisateur et de groupe. La vérification échoue si un pod s'exécute sans ID utilisateur/groupe définis manuellement de 1 000 ou plus.

Vous pouvez désactiver les tests de la même manière avec l'indicateur –ignore-test. Cela prend un ID de test à supprimer de l'analyse. De plus, les indicateurs –ignore-container-cpu-limit et –ignore-container-memory-limit inhibent l'insistance habituelle de Kube-Score pour que chaque conteneur possède des limites de CPU et de mémoire configurées manuellement.

< h2 id="managing-kubernetes-versions">Gestion des versions de Kubernetes

Kube-Score suppose actuellement que vous utilisez Kubernetes v1.18. Si vous exécutez une version différente, spécifiez-la avec l'indicateur –kubernetes-version. Cela indique à Kube-Score quelles vérifications sont réellement pertinentes pour votre environnement de déploiement. Ne pas spécifier la version correcte peut entraîner des faux positifs ou négatifs, vous donnant une image inexacte de la résilience de votre cluster.

Kube-Score s'attend à ce que vos ressources individuelles utilisent des API Kubernetes stables. Toutes les ressources référençant des API bêta qui ont été remplacées par une version stable échoueront au test.

Résumé

Kube-Score fournit une analyse statique simple pour les manifestes de ressources Kubernetes. Il vous permet d'en savoir plus sur les problèmes potentiels avant d'essayer de déployer sur votre cluster. L'exécution de Kube-Score dans le cadre de votre pipeline CI vous donne l'assurance que vos ressources sont correctement configurées et que votre cluster fonctionnera de manière fiable.

Publicité

Pour de meilleurs résultats, alimentez Kube-Score avec toutes vos ressources. Il est plus efficace lorsque son entrée inclut toutes les ressources du même espace de noms. Sinon, certains problèmes pourraient être ignorés s'ils apparaissent en raison d'un conflit avec un autre manifeste.

N'oubliez pas que Kube-Score n'est pas une analyse exhaustive de votre cluster. C'est un outil d'assistance, pas une liste de contrôle complète qui garantit un cluster étanche. Vous devez toujours auditer votre environnement de manière indépendante pour maintenir une sécurité solide et des performances optimales. Kube-Score est mieux utilisé comme utilitaire quotidien qui augmente la sécurité des déploiements individuels.