Kubernetes est un orchestrateur de conteneurs open source créé par Google en 2014 , il est devenu un outil indispensable pour les applications Cloud ready, conçues pour être hébergées dans le cloud ou hybride !
Ses avantages sont les suivants :
Le design Cloud-Native : Kubernetes encourage l’implémentation des architectures de type microservices et distribuées, ce qui augmente l’agilité, la résilience à la panne, et la scalabilité de l’application
La portabilité : Kubernetes fonctionne de la même manière, en utilisant la même image et les mêmes configurations, quelque soit le cloud provider (AWS, Azure, GCP, etc) ou Vmware
L’automatisation du déploiement: Kubernetes permet de modéliser une application sous conteneurs et d’en automatiser le déploiement
open source : Kubernetes est un projet libre disponible bénéficiant d’une large communauté
INFOGÉRANCE ET SERVICES MANAGÉS KUBERNETES
Dans une approche d’agilité , de fiabilité et de sécurité, je propose une infogérance de plateforme Kubernetes peut import l’hébergeur même chez vous.
Je propose également une prestation d’infogérance pour offrir aux utilisateurs une souplesse totale dans leur infrastructure Kubernetes avec des services managés de manière totalement transparente.
Vous êtes propriétaire de votre plateforme! Toutes les travaux sont clairement et simplement documentés pour faciliter le transfert.
Je propose une interface Rancher2 pour tous les clusters à manager.
Services proposés :
Création du cluster Kubernetes chez vous ou complètement infogérer
Maintient en conditions opérationnelles
Maintenance préventive de sécurité
Sauvegardes de vos applications
Supervision du cluster Kubernetes et des applications
Suivi et accompagnement personnalisé sur la migration des applications avec les technologies Docker et Kubernetes
CI est la partie où le workflow doit valider chaque commit des développeurs automatiquement.
Les test unitaires et fonctionnels automatique sont valider par la machine d’intégration par exemple le CI de GitLab ou CircleCi. Une fois que les tests sont passés une build/artefact est produite et sera déployer dans l’environement de TEST.
Pour arriver à une build/artefact
Le code est construit à chaque commit
Le code est automatiquement soumis à des tests unitaires à chaque commit
Tout le monde a accès au rapport de construction et de test
Les tests sont exécutés sur une version réduite de l’environnement de production
Les artefacts livrables sont stockés dans un dépôt d’artefacts contrôlé par version
Les artefacts livrables sont automatiquement déployés dans un environnement de test après une construction réussie
Si une des étapes échoue alors le développeur responsable du commit reçoit une notification pour corriger le plus rapidement possible.
La mise en place d’une CI et l’ensemble des processus à intégrer
Les différents type de tests
Les tests Unitaires sont la pour test les méthodes ou les fonctions de manière
Les tests d’intégration sont la pour s’assurer que plusieurs composants se comportent correctement ensemble, ils sont pour les régressions fonctionnelles
les tests d’acceptation similaire que l’intégration mais axés sur l’activité
les tests interface utilisateur sont la pour s’assurer que du point de vue utilisateur les actions de l’interface fonctionnent
plus les tests sont basés sur la couche UI plus ils prennent du temps à être implémenter et maintenir, ils sont donc coûteux.
Pour adopter l’intégration continue, vous devrez exécuter vos tests sur chaque branche poussé.
Pour cela quelques questions simple:
où le code est-il hébergé? Restriction…
de quel système d’exploitation et de quelles ressources avons-nous besoin pour l’application? Dépendances…
de combien de ressources avons-nous besoin pour vos tests?
l’application est elle monolithique ou micro-service?
utiliser vous des conteneurs? Docker…
La couverture de Test & complexité
Il est bon de viser une couverture supérieure à 80% mais attention à ne pas confondre un pourcentage élevé de couverture avec une bonne suite de tests. Un outil de couverture de code nous aide à trouver le code non testé. La qualité de vos tests fera la différence à la fin de la journée. Un outil comme SonarQube est là pour aider à prendre des décisions lorsque le code est complexe et non testé.
Duplication et code mort
Le code dupliqué sera le futur code mort ou le futur bug doublement corrigé ! Il est très important de vérifier votre code et de réduire les duplications maximum 5% de code dupliqué sur un gros projet ou un projet legacy est acceptable mais il faut essayer d’être en dessous de 2% pour tout projet commencer avec des métriques de code qualité.
Refactoring
Si vous êtes sur le point d’apporter des changements significatifs à votre application qui n’a pas de couverture de test suffisante, vous devriez commencer par écrire des tests d’acceptation autour des fonctionnalités qui pourraient être impactées. Cela vous fournira un filet de sécurité pour vous assurer que le comportement original n’a pas été affecté après le refactoring ou l’ajout de nouvelles fonctionnalités.
L’environment
Toute l’équipe informatique Dev/DevOps/Admin doit avoir à l’esprit de garder le même environnement partout. Le numéro de révision de tous les composants utilisés par l’application doit être le même dans Dev/Build/Test/Intégration/Prod. c’est là que les conteneurs (Docker) et les orchestrateur (Kubernetes) sont utiles.
L’état d’esprit
Si un développeur casse le workflow du CI, la réparation devient la priorité principale.
Pour écrire de bons tests, vous devrez vous assurer que les développeurs sont impliqués et on un accès à un outils d’analyse de code.
Que vous disposiez d’une base de code existante ou que vous débutiez, il est certain que des bogues surviendront dans le cadre de vos versions. Veillez à ajouter des tests lorsque vous les résolvez afin d’éviter qu’ils ne se reproduisent.
CD
Le déploiement de l’application est géré par le code. Le code décrit exactement ce dont l’application a besoin pour démarrer et s’exécuter. L’artefact et l’environnement seront les mêmes entre les systèmes Test/Intégration/Production car l’image est générée une seule fois par le CI.
Continuous Delivery
Après l’automatisation de la création et des tests unitaires et d’intégration dans le cadre de l’intégration continue, la continuous delivery automatise la publication du code validé dans un registry/repository. Aussi, pour garantir l’efficacité du processus de continuous delivery, il faut d’abord introduire le processus continuous delivery dans le pipeline de développement. La continuous delivery permet de disposer d’une base de code toujours prête à être déployée dans un environnement de production.
Dans le cadre de la continuous delivery, chaque étape (de la fusion des modifications de code jusqu’à la distribution des versions prêtes pour la production) implique l’automatisation des processus de test et de publication du code. À la fin de ce processus, l’équipe d’exploitation est en mesure de déployer facilement et rapidement une application dans un environnement de production.
Continuous Deployment
L’étape finale d’un pipeline CI/CD mature est le continuous deployment. En complément du processus de continuous delivery, qui automatise la publication d’une version prête pour la production dans un référentiel de code, le continuous deployment automatise le lancement d’une application dans un environnement de production. En l’absence de passerelle manuelle entre la production et l’étape précédente du pipeline, le déploiement continu dépend surtout de la conception de l’automatisation des processus de test.
Dans la pratique, dans le cadre du continuous deployment, une modification apportée par un développeur à une application pourrait être publiée quelques minutes seulement après la rédaction du code en question (en supposant qu’elle passe les tests automatisés). Il est ainsi beaucoup plus facile de recevoir et d’intégrer en continu les commentaires des utilisateurs. Ensemble, ces trois pratiques CI/CD réduisent les risques liés au déploiement des applications, puisqu’il est plus simple de publier des modifications par petites touches qu’en un seul bloc. Cette approche nécessite néanmoins un investissement de départ considérable, car les tests automatisés devront être rédigés de manière à s’adapter à un large éventail d’étapes de test et de lancement dans le pipeline CI/CD.
L’ingénieur DevOps possède un rôle transversal qui exige une bonne maîtrise des étapes de développement informatique, ainsi qu’une bonne compréhension des enjeux du déploiement continu et de production. Le métier de DevOps requiert la maîtrise de compétences diverses. Tout d’abord, il faut maîtriser les compétences techniques que le métier exige. Le consultant DevOps doit ainsi :
savoir développer des scripts et faire de l’intégration
utiliser les outils de construction et de virtualisation : Docker, Kubernetes, etc
savoir mettre en place des chaînes d’intégration continue (CI/CD)
connaître l’environnement des systèmes d’exploitation : systèmes Linux, Windows
maîtriser les outils de tests automatisés ou de monitoring des déploiements
être pointilleux sur la sécurité des données et posséder d’excellentes connaissances dans les systèmes de serveur
travailler aussi bien sur les plateformes cloud (AWS, Azure, GCP, etc) et autres que sur des plateformes On-Premises
En complémentarité des compétences techniques, l’ingénieur DevOps doit avoir la capacité d’évaluer le fonctionnement des applications, de procéder à des ajustements techniques et de mesurer la performance des solutions développées.
Si la maîtrise technique est capitale, les qualités humaines du consultant ou ingénieur DevOps représentent un atout majeur dans ses relations avec les autres équipes et la hiérarchie. En plus de l’esprit de management, il doit savoir écouter les demandes du client et des équipes. Il est donc essentiel qu’il possède un bon sens relationnel pour mieux appréhender les besoins et pour échanger plus facilement :
il doit être capable de gérer et diriger les équipes avec lesquelles il collabore
il doit toujours posséder un certain recul par rapport au projet pour le mener à bien et respecter les objectifs fixés
il doit être capable de formuler les demandes dans le langage technique
il doit être capable de fédérer tous les participants afin de développer une solution personnalisée et cohérente
Chaque ingénieur DevOps ne maîtrise pas tous les langages de programmation, notamment les novices. Un bon ingénieur doit donc avoir la capacité de se former rapidement à des outils ou à des technologies de déploiement pour que l’entreprise réussisse sa transformation digitale.
D’ailleurs, l’entreprise qui doit recruter un ingénieur DevOps ou faire appel à un consultant DevOps va se concentrer notamment sur les pratiques DevOps. En d’autres termes, elle va porter une attention particulière aux processus de travail de l’intervenant. Ce dernier devra connaître différents fournisseurs de solution de cloud computing. Enfin, un bon ingénieur DevOps doit régulièrement faire une veille technologique pour rester à la pointe dans son domaine. Il doit être à l’affût des nouveaux langages et des nouveaux outils digitaux.
We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept All”, you consent to the use of ALL the cookies. However, you may visit "Cookie Settings" to provide a controlled consent.
This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.