Conteneurs éphémères Kubernetes : Améliorer la sécurité et rationaliser le dépannage dans les clusters de production

Les conteneurs éphémères dans Kubernetes sont une fonctionnalité puissante qui permet aux opérateurs de déboguer et de résoudre des problèmes avec des Pods en cours d’exécution en créant des conteneurs de courte durée au sein du même Pod. Cela est particulièrement utile pour les problèmes qui ne peuvent pas être reproduits dans un environnement séparé. En utilisant des conteneurs éphémères, vous pouvez attacher un conteneur à un Pod en cours d’exécution, inspecter le système de fichiers, les paramètres réseau ou les processus en cours, puis jeter le conteneur sans affecter les conteneurs principaux du Pod.

Qu’est-ce que les conteneurs éphémères ?

Les conteneurs éphémères sont des conteneurs spéciaux qui ne fonctionnent pas dans le cadre d’une charge de travail d’application, mais qui sont plutôt ajoutés à un Pod existant dans le but de déboguer. Ils partagent les mêmes ressources (espace de noms réseau, volumes, etc.) que les autres conteneurs du Pod, ce qui les rend idéaux pour un diagnostic en temps réel. Une fois le débogage terminé, le conteneur éphémère peut être supprimé sans avoir besoin de recréer l’ensemble du Pod.

Points clés

  • De courte durée : Les conteneurs éphémères sont destinés uniquement au débogage ou à la résolution de problèmes.
  • Non disruptifs : Ils n’impactent pas les conteneurs d’application existants dans le Pod.
  • Partage des ressources : Ils partagent des ressources comme des volumes de stockage et des espaces de noms réseau avec le Pod, rendant le débogage plus puissant.

Considérations de sécurité avec les conteneurs éphémères

Les conteneurs éphémères offrent une approche de débogage plus sûre en limitant l’accès prolongé aux Pods de production. Vous pouvez appliquer des règles RBAC strictes afin que seuls les utilisateurs autorisés puissent ajouter et exécuter des conteneurs éphémères, réduisant ainsi la fenêtre pour les menaces potentielles. Étant donné que ces conteneurs disparaissent une fois le débogage terminé, la surface d’attaque est réduite, renforçant ainsi la sécurité globale du cluster.

Cas d’utilisation

  • Dépannage des plantages d’application: Lorsque vous devez inspecter les journaux ou exécuter des outils de débogage dans un conteneur planté ou en train de planter, les conteneurs éphémères vous permettent d’entrer dans un environnement en cours d’exécution sans modifier la configuration du conteneur principal.
  • Débogage réseau: Vous pouvez installer des outils de débogage (par exemple, tcpdump, netstat) dans le conteneur éphémère pour diagnostiquer les problèmes de réseau dans l’espace de noms réseau du Pod.
  • Vérifications du système de fichiers en direct: Si vous soupçonnez une corruption de fichiers ou des chemins de fichiers incorrects, les conteneurs éphémères vous permettent de vérifier le système de fichiers en temps réel.

Prérequis

  • Version de Kubernetes: Les conteneurs éphémères nécessitent au moins Kubernetes 1.23+ où la fonctionnalité EphemeralContainers est généralement disponible (GA). Sur les anciennes versions de Kubernetes, vous pourriez avoir besoin d’activer le porte-fenêtre de fonctionnalité EphemeralContainers.
  • kubectl: Assurez-vous que votre client kubectl local est au moins de la même version ou plus récente que le plan de contrôle de votre cluster.
  • Autorisations RBAC suffisantes: Vous avez besoin d’une autorisation pour utiliser la commande kubectl debug et mettre à jour les Pods (le conteneur éphémère est ajouté via une mise à jour de la spécification du Pod).

Guide étape par étape: Utilisation des conteneurs éphémères

Voici un processus général qui fonctionnera sur n’importe quel environnement Kubernetes, y compris EKS (Elastic Kubernetes Service sur AWS), AKS (Azure Kubernetes Service), GKE (Google Kubernetes Engine) ou des clusters sur site. Nous nous concentrerons sur la commande kubectl debug, qui est le mécanisme principal pour ajouter des conteneurs éphémères.

Vérifiez la configuration de votre cluster

Shell

 

  • Assurez-vous que votre Version du serveur est d’au moins 1.23.
  • Confirmez que votre Version du client est également compatible.

Si vous êtes sur un environnement géré comme EKS ou AKS, vérifiez la version du cluster à partir du tableau de bord ou de l’interface en ligne de commande de votre fournisseur de cloud pour vous assurer qu’elle est de 1.23 ou ultérieure.

Identifiez le Pod que vous souhaitez déboguer

Listez les Pods dans un espace de noms spécifique:

Shell

 

Choisissez le nom du Pod que vous devez dépanner, par exemple: mon-app-pod-abc123.

Ajoutez un conteneur éphémère en utilisant kubectl debug

Utilisez la commande kubectl debug pour ajouter un conteneur éphémère. Par exemple, nous utiliserons une image Ubuntu simple:

Shell

 

Voici un aperçu des indicateurs:

  • mon-app-pod-abc123: Le nom du Pod existant.
  • –image=ubuntu: Image Docker à utiliser pour le conteneur éphémère.
  • –target=my-container: (Optionnel) Spécifie le conteneur dans le Pod que vous souhaitez cibler pour le partage de l’espace de noms. En général, il s’agit du conteneur principal dans le Pod.
  • –interactive=true et –tty=true: Vous permet d’obtenir une session shell à l’intérieur du conteneur éphémère.

Une fois que vous avez exécuté ce qui précède, vous obtiendrez un invite de commande shell dans le conteneur éphémère à l’intérieur du Pod existant. Vous pouvez maintenant exécuter des commandes de débogage comme ls, ps, netstat, ou installer des paquets supplémentaires.

Confirmer la Création du Conteneur Éphémère

Dans un autre terminal, ou après avoir quitté le shell du conteneur éphémère, exécutez:

Shell

 

Vous devriez voir une nouvelle section sous spec ou status décrivant le conteneur éphémère.

Débogage et Résolution de Problèmes

Depuis l’intérieur du conteneur éphémère, vous pouvez:

  • Vérifier les logs ou la configuration de l’application.
  • Utiliser des outils de débogage comme curl, wget, telnet pour vérifier la connectivité réseau.
  • Inspecter les variables d’environnement pour confirmer la configuration de votre application.
Shell

 

Nettoyer les Conteneurs Éphémères

Les conteneurs éphémères sont supprimés automatiquement lorsque le Pod est détruit ou après que vous les ayez supprimés manuellement. Pour retirer le conteneur éphémère du Pod sans détruire l’ensemble du Pod (sur les versions prises en charge), vous pouvez patcher la spécification du Pod. Cependant, les conteneurs éphémères ne sont généralement pas destinés à être de longue durée. Une fois que vous supprimez le Pod ou réduisez votre déploiement, le conteneur éphémère sera également supprimé.

Notes spécifiques pour les services gérés

Amazon EKS

  • Assurez-vous que votre cluster EKS exécute Kubernetes 1.23 ou supérieur.
  • Confirmez que les permissions IAM vous permettent d’effectuer des opérations kubectl debug.
  • Si vous utilisez des versions EKS plus anciennes (1.22 ou antérieures), vous devrez activer la fonctionnalité EphemeralContainers.

Azure AKS

  • Utilisez l’Azure CLI (az aks update) pour mettre à niveau votre cluster AKS vers une version compatible si nécessaire.

Confirmez que votre kubectl contexte est défini sur le cluster AKS :

Shell

 

Autres clusters gérés ou sur site

  • Consultez la documentation de votre cluster ou demandez à votre fournisseur de confirmer que les conteneurs éphémères sont activés.
  • La plupart des solutions modernes sur site (OpenShift, Rancher, etc.) ont les conteneurs éphémères activés par défaut à partir de Kubernetes 1.23, mais vous devrez peut-être activer manuellement la fonctionnalité si vous utilisez une version plus ancienne.

Meilleures pratiques

  • Utilisez des images minimales : Choisissez des images légères pour réduire la surcharge (par exemple, busybox, images de débogage sans distribution).
  • Restreindre RBAC: Limiter qui peut créer des conteneurs éphémères pour minimiser les risques potentiels pour la sécurité.
  • Journaliser Toutes les Sessions de Débogage: Suivre l’utilisation des conteneurs éphémères pour l’audit et la conformité.
  • Ne Pas Dépendre des Conteneurs Éphémères: Ils sont uniquement destinés au débogage. Si vous avez besoin d’un conteneur auxiliaire ou permanent, configurez-le dans la spécification du Pod dès le départ.

Conclusion

Les conteneurs éphémères sont un moyen polyvalent et puissant de résoudre les problèmes en temps réel sans affecter les conteneurs d’application principaux. Que vous exécutiez Kubernetes sur EKS, AKS, sur site ou une autre solution gérée, comprendre et utiliser les conteneurs éphémères peut réduire considérablement votre temps moyen de récupération (MTTR) et améliorer l’efficacité opérationnelle.Ils complètent les méthodes traditionnelles de dépannage et devraient faire partie de l’arsenal de toute équipe de plateforme pour diagnostiquer des problèmes d’application complexes. En suivant les étapes décrites ci-dessus, vous pouvez déployer en toute confiance des conteneurs éphémères dans votre environnement et rationaliser vos processus de débogage.

Note de l’auteur: Issu du dépannage réel de Kubernetes, ce guide vise à vous aider à déboguer rapidement et sans interruption les Pods dans les environnements de production.

Source:
https://dzone.com/articles/enhancing-security-troubleshooting-in-production-clusters