Bonnes pratiques et bonnes pratiques pour l'exécution de conteneurs et de Kubernetes dans des environnements de production

Bonnes pratiques et bonnes pratiques pour l'exécution de conteneurs et de Kubernetes dans des environnements de production
L’écosystème technologique de la conteneurisation évolue et change rapidement, il existe donc un manque de bonnes pratiques de travail dans ce domaine. Cependant, Kubernetes et les conteneurs sont de plus en plus utilisés, à la fois pour moderniser les applications existantes et pour développer des applications cloud modernes. 

Équipe Kubernetes aaS de Mail.ru a collecté des prévisions, des conseils et des meilleures pratiques pour les leaders du marché de Gartner, 451 Research, StacxRoх et autres. Ils permettront et accéléreront le déploiement de conteneurs dans les environnements de production.

Comment savoir si votre entreprise est prête à déployer des conteneurs dans un environnement de production

Selon Gartner, en 2022, plus de 75 % des organisations utiliseront des applications conteneurisées en production. C’est bien plus qu’aujourd’hui, où moins de 30 % des entreprises utilisent de telles applications. 

selon Recherche 451Le marché prévu pour les applications technologiques des conteneurs en 2022 s'élèvera à 4,3 milliards de dollars, soit plus du double du montant projeté en 2019, avec un taux de croissance du marché de 30 %.

В Enquête Portworx et Aqua Security 87 % des personnes interrogées ont déclaré utiliser actuellement des technologies de conteneurs. À titre de comparaison, en 2017, il y avait 55 % de ces répondants. 

Malgré l’intérêt et l’adoption croissants des conteneurs, leur mise en production nécessite une courbe d’apprentissage en raison de l’immaturité technologique et du manque de savoir-faire. Les organisations doivent être réalistes quant aux processus métier qui nécessitent la conteneurisation des applications. Les responsables informatiques doivent évaluer s’ils possèdent les compétences nécessaires pour aller de l’avant avec la nécessité d’apprendre rapidement. 

Experts Gartner Nous pensons que les questions de l'image ci-dessous vous aideront à déterminer si vous êtes prêt à déployer des conteneurs en production :

Bonnes pratiques et bonnes pratiques pour l'exécution de conteneurs et de Kubernetes dans des environnements de production

Les erreurs les plus courantes lors de l'utilisation de conteneurs en production

Les organisations sous-estiment souvent les efforts requis pour faire fonctionner les conteneurs en production. Gartner a découvert Quelques erreurs courantes dans les scénarios clients lors de l’utilisation de conteneurs dans des environnements de production :

Bonnes pratiques et bonnes pratiques pour l'exécution de conteneurs et de Kubernetes dans des environnements de production

Comment sécuriser les conteneurs

La sécurité ne peut pas être traitée « plus tard ». Il doit être intégré au processus DevOps, c'est pourquoi il existe même un terme spécial : DevSecOps. Les organisations doivent planifier protéger votre environnement de conteneurs tout au long du cycle de vie du développement, qui comprend le processus de création et de développement, le déploiement et le lancement de l'application.

Recommandations de Gartner

  1. Intégrez le processus d’analyse des images d’application à la recherche de vulnérabilités dans votre pipeline d’intégration continue/livraison continue (CI/CD). Les applications sont analysées lors des étapes de création et de lancement du logiciel. Insistez sur la nécessité d’analyser et d’identifier les composants, bibliothèques et frameworks open source. Les développeurs utilisant d’anciennes versions vulnérables sont l’une des principales causes des vulnérabilités des conteneurs.
  2. Améliorez votre configuration avec les tests du Center for Internet Security (CIS), disponibles pour Docker et Kubernetes.
  3. Assurez-vous d'appliquer des contrôles d'accès, d'assurer la séparation des tâches et de mettre en œuvre une politique de gestion des secrets. Les informations sensibles, telles que les clés SSL (Secure Sockets Layer) ou les informations d'identification de la base de données, sont chiffrées par l'orchestrateur ou des services de gestion tiers et exposées au moment de l'exécution.
  4. Évitez les conteneurs surélevés en gérant les politiques de sécurité pour réduire les risques potentiels de violation.
  5. Utilisez des outils de sécurité qui fournissent une liste blanche, une surveillance comportementale et une détection des anomalies pour empêcher les activités malveillantes.

Recommandations de StacxRox:

  1. Tirez parti des capacités intégrées de Kubernetes. Configurez l'accès pour les utilisateurs utilisant des rôles. Assurez-vous de ne pas accorder d'autorisations inutiles à des entités individuelles, même si la réflexion sur les autorisations minimales requises peut prendre un certain temps. Il peut être tentant d'accorder des privilèges étendus à l'administrateur du cluster, car cela permet de gagner du temps au départ. Cependant, toute compromission ou erreur dans le compte peut entraîner des conséquences dévastatrices par la suite. 
  2. Évitez les autorisations d’accès en double. Il peut parfois être utile de superposer différents rôles, mais cela peut entraîner des problèmes opérationnels et également créer des angles morts lors de la suppression des autorisations. Il est également important de supprimer les rôles inutilisés et inactifs.
  3. Définir des politiques réseau : isoler les modules pour en limiter l'accès ; autoriser explicitement l'accès à Internet aux modules qui en ont besoin à l'aide de balises ; Autoriser explicitement la communication entre les modules qui doivent communiquer entre eux. 

Comment organiser la surveillance des conteneurs et des services qu'ils contiennent

Sécurité et surveillance - principaux problèmes des entreprises lors du déploiement de clusters Kubernetes. Les développeurs sont toujours plus concentrés sur les fonctionnalités des applications qu'ils développent plutôt que sur les aspects surveiller ces applications

Recommandations de Gartner:

  1. Essayez de surveiller l'état des conteneurs ou des services qu'ils contiennent en conjonction avec la surveillance des systèmes hôtes.
  2. Recherchez des fournisseurs et des outils profondément intégrés à l’orchestration de conteneurs, en particulier Kubernetes.
  3. Choisissez des outils qui fournissent une journalisation détaillée, une découverte automatique des services et des recommandations en temps réel à l'aide d'analyses et/ou d'apprentissage automatique.

Le blog SolarWinds conseille:

  1. Utilisez des outils pour découvrir et suivre automatiquement les métriques des conteneurs, en corrélant les métriques de performances telles que le processeur, la mémoire et la disponibilité.
  2. Garantissez une planification optimale des capacités en prévoyant les dates d’épuisement des capacités en fonction des mesures de surveillance des conteneurs.
  3. Surveillez la disponibilité et les performances des applications conteneurisées, ce qui est utile à la fois pour la planification de la capacité et pour le dépannage des problèmes de performances.
  4. Automatisez les flux de travail en fournissant une prise en charge de la gestion et de la mise à l'échelle des conteneurs et de leurs environnements d'hébergement.
  5. Automatisez le contrôle d'accès pour surveiller votre base d'utilisateurs, désactivez les comptes obsolètes et invités et supprimez les privilèges inutiles.
  6. Assurez-vous que votre ensemble d'outils peut surveiller ces conteneurs et applications dans plusieurs environnements (cloud, sur site ou hybrides) pour visualiser et comparer les performances de l'infrastructure, du réseau, des systèmes et des applications.

Comment stocker les données et assurer leur sécurité

Avec l'augmentation du nombre de conteneurs de travail avec état, les clients doivent prendre en compte la présence de données en dehors de l'hôte, ainsi que la nécessité de protéger ces données. 

Selon Enquête Portworx et Aqua Security, la sécurité des données arrive en tête de liste des problèmes de sécurité cités par la majorité des personnes interrogées (61 %). 

Le chiffrement des données est la principale stratégie de sécurité (64 %), mais les personnes interrogées utilisent également la surveillance de l'exécution.

(49 %), analyse des registres à la recherche de vulnérabilités (49 %), analyse des vulnérabilités dans les pipelines CI/CD (49 %) et blocage des anomalies grâce à la protection d'exécution (48 %).

Recommandations de Gartner:

  1. Choisissez des solutions de stockage basées sur des principes architecture de microservices. Il est préférable de se concentrer sur ceux qui répondent aux exigences de stockage de données pour les services de conteneurs, sont indépendants du matériel, pilotés par API, ont une architecture distribuée, prennent en charge le déploiement local et le déploiement dans le cloud public.
  2. Évitez les plugins et interfaces propriétaires. Choisissez des fournisseurs qui proposent l’intégration Kubernetes et prennent en charge les interfaces standard telles que CSI (Container Storage Interfaces).

Comment travailler avec les réseaux

Le modèle de réseau d'entreprise traditionnel, dans lequel les équipes informatiques créent des environnements de développement, de test, d'assurance qualité et de production en réseau pour chaque projet, ne s'adapte pas toujours bien au flux de travail de développement continu. De plus, les réseaux de conteneurs s'étendent sur plusieurs couches.

В blog Magalix collecté des règles de haut niveau que doit respecter la mise en œuvre d’une solution cluster-réseau :

  1. Les pods planifiés sur le même nœud doivent pouvoir communiquer avec d'autres pods sans utiliser NAT (Network Address Translation).
  2. Tous les démons système (processus en arrière-plan tels que kubelet) exécutés sur un nœud particulier peuvent communiquer avec les pods exécutés sur le même nœud.
  3. Pods utilisant réseau hôte, doit être capable de communiquer avec tous les autres pods sur tous les autres nœuds sans utiliser NAT. Veuillez noter que la mise en réseau des hôtes n'est prise en charge que sur les hôtes Linux.

Les solutions de mise en réseau doivent être étroitement intégrées aux primitives et aux politiques Kubernetes. Les responsables informatiques doivent s'efforcer d'atteindre un degré élevé d'automatisation des réseaux et de fournir aux développeurs les bons outils et une flexibilité suffisante.

Recommandations de Gartner:

  1. Découvrez si votre CaaS (container as a service) ou votre SDN (Software Defined Network) prend en charge les réseaux Kubernetes. Si ce n’est pas le cas ou si la prise en charge est insuffisante, utilisez l’interface réseau CNI (Container Network Interface) pour vos conteneurs, qui prend en charge les fonctionnalités et politiques nécessaires.
  2. Assurez-vous que votre CaaS ou PaaS (plateforme en tant que service) prend en charge la création de contrôleurs d'entrée et/ou d'équilibreurs de charge qui répartissent le trafic entrant entre les nœuds du cluster. Si ce n’est pas une option, envisagez d’utiliser des proxys tiers ou des maillages de services.
  3. Formez vos ingénieurs réseau aux réseaux Linux et aux outils d'automatisation des réseaux pour réduire le déficit de compétences et accroître l'agilité.

Comment gérer le cycle de vie des applications

Pour une livraison d'applications automatisée et transparente, vous devez compléter l'orchestration des conteneurs avec d'autres outils d'automatisation, tels que les produits d'infrastructure en tant que code (IaC). Ceux-ci incluent Chef, Puppet, Ansible et Terraform. 

Des outils d'automatisation pour la création et le déploiement d'applications sont également requis (voir «Magic Quadrant pour l’orchestration des versions d’applications"). Les conteneurs offrent également des capacités d'extensibilité similaires à celles disponibles lors du déploiement de machines virtuelles (VM). Par conséquent, les responsables informatiques doivent avoir outils de gestion du cycle de vie des conteneurs.

Recommandations de Gartner:

  1. Définissez des normes pour les images de conteneurs de base en fonction de la taille, des licences et de la flexibilité permettant aux développeurs d'ajouter des composants.
  2. Utilisez des systèmes de gestion de configuration pour gérer le cycle de vie des conteneurs dont la configuration est basée sur des images de base situées dans des référentiels publics ou privés.
  3. Intégrez votre plateforme CaaS à des outils d'automatisation pour automatiser l'ensemble de votre flux de travail applicatif.

Comment gérer des conteneurs avec des orchestrateurs

La fonctionnalité de base pour le déploiement de conteneurs est fournie au niveau des couches d'orchestration et de planification. Lors de la planification, les conteneurs sont placés sur les hôtes les plus optimaux du cluster, comme dicté par les exigences de la couche d'orchestration. 

Kubernetes est devenu de facto le standard d'orchestration de conteneurs avec une communauté active et est pris en charge par la plupart des principaux fournisseurs commerciaux. 

Recommandations de Gartner:

  1. Définir les exigences de base en matière de contrôles de sécurité, de surveillance, de gestion des politiques, de persistance des données, de mise en réseau et de gestion du cycle de vie des conteneurs.
  2. Sur la base de ces exigences, sélectionnez l'outil qui correspond le mieux à vos besoins et à vos cas d'utilisation.
  3. Utilisez les recherches de Gartner (voir "Comment choisir un modèle de déploiement Kubernetes") pour comprendre les avantages et les inconvénients des différents modèles de déploiement Kubernetes et choisir celui qui convient le mieux à votre application.
  4. Sélectionnez un fournisseur capable de fournir une orchestration hybride pour les conteneurs de travail dans plusieurs environnements avec une intégration back-end étroite, des plans de gestion communs et des modèles de tarification cohérents.

Comment utiliser les capacités des fournisseurs de cloud

Gartner croitCet intérêt pour le déploiement de conteneurs sur le cloud public IaaS augmente en raison de la disponibilité d'offres CaaS prêtes à l'emploi, ainsi que de l'intégration étroite de ces offres avec d'autres produits proposés par les fournisseurs de cloud.

Les cloud IaaS offrent une consommation de ressources à la demande, une évolutivité rapide et la gestion des services, ce qui permettra d'éviter la nécessité d'une connaissance approfondie de l'infrastructure et de sa maintenance. La plupart des fournisseurs de cloud proposent un service de gestion de conteneurs et certains proposent plusieurs options d'orchestration. 

Les principaux fournisseurs de services gérés dans le cloud sont présentés dans le tableau : 

Fournisseur de cloud
Type de service
Produit/service

Alibaba
Service cloud natif
Service de conteneur Alibaba Cloud, service de conteneur Alibaba Cloud pour Kubernetes

Amazon Web Services (AWS)
Service cloud natif
Amazon Elastic Container Services (ECS), Amazon ECS pour Kubernetes (EKS), AWS Fargate

Essaim géant
MSP
Infrastructure Kubernetes gérée par Giant Swarm

Google
Service cloud natif
Moteur de conteneur Google (GKE)

IBM
Service cloud natif
Service IBM Cloud Kubernetes

Microsoft
Service cloud natif
Service Azure Kubernetes, Azure Service Fabric

Oracle
Service cloud natif
Moteur de conteneur OCI pour Kubernetes

Platform9
MSP
Kubernetes géré

Red Hat
Service hébergé
OpenShift dédié et en ligne

VMware
Service hébergé
Cloud PKS (bêta)

Solutions cloud Mail.ru*
Service cloud natif
Conteneurs cloud Mail.ru

* On ne le cachera pas, nous nous sommes ajoutés ici lors de la traduction :)

Les fournisseurs de cloud public ajoutent également de nouvelles fonctionnalités et lancent des produits sur site. Dans un avenir proche, les fournisseurs de cloud développeront la prise en charge des cloud hybrides et des environnements multi-cloud. 

Recommandations Gartner:

  1. Évaluez objectivement la capacité de votre organisation à déployer et à gérer les outils appropriés, et envisagez d'autres services de gestion de conteneurs cloud.
  2. Choisissez soigneusement le logiciel, utilisez l'open source lorsque cela est possible.
  3. Choisissez des fournisseurs avec des modèles de fonctionnement communs dans des environnements hybrides qui offrent une gestion centralisée des clusters fédérés, ainsi que des fournisseurs qui facilitent l'auto-hébergement d'IaaS.

Quelques conseils pour choisir un fournisseur Kubernetes aaS sur le blog Replex:

  1. Cela vaut la peine de rechercher des distributions prenant en charge la haute disponibilité dès le départ. Cela inclut la prise en charge de plusieurs architectures majeures, des composants etcd hautement disponibles, ainsi que la sauvegarde et la restauration.
  2. Pour garantir la mobilité dans vos environnements Kubernetes, il est préférable de choisir des fournisseurs de cloud qui prennent en charge un large éventail de modèles de déploiement, du sur site à l'hybride en passant par le multi-cloud. 
  3. Les offres des fournisseurs doivent également être évaluées en fonction de la facilité de configuration, d'installation et de création de cluster, ainsi que des mises à jour, de la surveillance et du dépannage. L'exigence de base est de prendre en charge les mises à jour de cluster entièrement automatisées sans aucun temps d'arrêt. La solution que vous choisissez doit également vous permettre d'exécuter les mises à jour manuellement. 
  4. La gestion des identités et des accès est importante du point de vue de la sécurité et de la gouvernance. Assurez-vous que la distribution Kubernetes que vous choisissez prend en charge l'intégration avec les outils d'authentification et d'autorisation que vous utilisez en interne. Le RBAC et le contrôle d’accès précis sont également des ensembles de fonctionnalités importants.
  5. La distribution que vous choisissez doit soit disposer d'une solution de réseau définie par logiciel native qui couvre un large éventail d'exigences de différentes applications ou infrastructures, soit prendre en charge l'une des implémentations de réseau les plus populaires basées sur CNI, notamment Flannel, Calico, Kube-router ou OVN. .

L'introduction de conteneurs dans la production devient l'orientation principale, comme en témoignent les résultats d'une enquête menée sur Séances Gartner sur les stratégies d'infrastructure, d'exploitation et de cloud (IOCS) en décembre 2018 :

Bonnes pratiques et bonnes pratiques pour l'exécution de conteneurs et de Kubernetes dans des environnements de production
Comme vous pouvez le constater, 27 % des personnes interrogées utilisent déjà des conteneurs dans leur travail et 63 % envisagent de le faire.

В Enquête Portworx et Aqua Security 24 % des personnes interrogées ont déclaré investir plus d'un demi-million de dollars par an dans les technologies de conteneurs, et 17 % des personnes interrogées y ont dépensé plus d'un million de dollars par an. 

Article préparé par l'équipe de la plateforme cloud Solutions Cloud Mail.ru.

Quoi d'autre à lire sur le sujet:

  1. Meilleures pratiques DevOps : rapport DORA.
  2. Kubernetes dans l'esprit du piratage avec un modèle de mise en œuvre.
  3. 25 outils utiles pour le déploiement et l'adoption de Kubernetes.

Source: habr.com

Ajouter un commentaire