Comment migrer un flux de travail Docker Compose vers Kubernetes

introduction

Https://www.digitalocean.com/community/tutorials/architecting-applications-for-kubernetes#containerizing-application-components[containerizing les composants de votre application] est la première étape du déploiement et de la mise à l’échelle des applications distribuées. plates-formes. Si vous avez utilisé Docker Compose en cours de développement, vous aurez modernisé et conteneurisé votre application en:

  • Extraire les informations de configuration nécessaires à partir de votre code.

  • Déchargement de l’état de votre application.

  • Emballage de votre application pour une utilisation répétée.

Vous aurez également des définitions de service écrites qui spécifient comment vos images de conteneur doivent être exécutées.

Pour exécuter vos services sur une plate-forme distribuée telle que Kubernetes, vous devez traduire vos définitions de service Compose en objets Kubernetes. Cela vous permettra de dimensionner votre application avec résilience. Un outil permettant d’accélérer le processus de traduction vers Kubernetes est kompose, un outil de conversion qui aide les développeurs à déplacer les workflows Compose vers des orchestrateurs de conteneurs tels que Kubernetes ou https://www.openshift.com/ [ OpenShift].

Dans ce didacticiel, vous allez traduire les services Compose en Kubernetes objects à l’aide de kompose. Vous utiliserez les définitions d’objet fournies par kompose comme point de départ et apporterez des modifications pour vous assurer que votre configuration utilisera Secrets, https://kubernetes.io / docs / concepts / services-networking / service / [Services], et PersistentVolumeClaims de la manière attendue par Kubernetes. À la fin du didacticiel, vous aurez une application Node.js à instance unique avec une base de données MongoDB s’exécutant sur un cluster Kubernetes. Cette configuration reflétera les fonctionnalités du code décrit dans Containerizing a Node.js Application avec Docker Compose et constituera un bon point de départ pour créer une solution prête à la production qui s’adapte à vos besoins.

Conditions préalables

  • Un cluster Kubernetes 1.10+ avec le contrôle d’accès basé sur les rôles (RBAC) activé. Cette configuration utilisera un cluster DigitalOcean Kubernetes, mais vous êtes libre de https://www.digitalocean.com/community/tutorials/how-to-create- a-kubernetes-1-11-cluster-using-kubeadm-on-ubuntu-18-04 [créer un cluster à l’aide d’une autre méthode].

  • L’outil de ligne de commande + kubectl + installé sur votre ordinateur local ou sur votre serveur de développement et configuré pour se connecter à votre cluster. Vous pouvez en savoir plus sur l’installation de + kubectl + dans la official documentation.

  • Docker installé sur votre ordinateur local ou votre serveur de développement. Si vous travaillez avec Ubuntu 18.04, suivez les étapes 1 et 2 de How To Installer et utiliser Docker sur Ubuntu 18.04; sinon, suivez la official documentation pour plus d’informations sur l’installation sur d’autres systèmes d’exploitation. Assurez-vous d’ajouter votre utilisateur non root au groupe + docker +, comme décrit à l’étape 2 du tutoriel lié.

  • Un compte Docker Hub. Pour obtenir un aperçu de la configuration, reportez-vous à la page his introduction de Docker Hub.

Étape 1 - Installation de Kompose

Pour commencer à utiliser kompose, accédez à la page GitHub * Releases * du projet * project et copiez le lien vers la version actuelle (version à ce jour). Collez ce lien dans la commande + curl + suivante pour télécharger la dernière version de kompose:

curl -L https://github.com/kubernetes/kompose/releases/download/v/kompose-linux-amd64 -o kompose

Pour plus de détails sur l’installation sur des systèmes autres que Linux, veuillez consulter les instructions installation.

Rendre le binaire exécutable:

chmod +x kompose

Déplacez-le sur votre + PATH:

sudo mv ./kompose /usr/local/bin/kompose

Pour vérifier qu’il a été installé correctement, vous pouvez effectuer une vérification de version:

kompose version

Si l’installation a réussi, vous verrez une sortie comme suit:

Output

Avec + kompose + installé et prêt à être utilisé, vous pouvez maintenant cloner le code du projet Node.js que vous allez traduire en Kubernetes.

Étape 2 - Clonage et conditionnement de l’application

Pour utiliser notre application avec Kubernetes, nous devons cloner le code du projet et la conditionner de sorte que le service + kubelet + puisse extraire l’image.

Notre première étape consistera à cloner le dépôt node-mongo-docker-dev à partir du https://github.com/do. -community [Compte GitHub DigitalOcean Community]. Ce référentiel inclut le code de la configuration décrite dans Containerizing une application Node.js for Development With Docker Compose, qui utilise une application de démonstration Node.js pour montrer comment configurer un environnement de développement à l’aide de Docker Compose. Vous trouverez plus d’informations sur l’application dans la série de Containers to Kubernetes with Node.js.

Clonez le référentiel dans un répertoire appelé ++:

git clone https://github.com/do-community/node-mongo-docker-dev.git

Accédez au répertoire ++:

cd

Le répertoire ++ contient les fichiers et les répertoires d’une application d’informations sur les requins fonctionnant avec une entrée utilisateur. Il a été modernisé pour fonctionner avec les conteneurs: les informations de configuration sensibles et spécifiques ont été supprimées du code de l’application et refactorisées pour être injectées au moment de l’exécution, et l’état de l’application a été transféré dans une base de données MongoDB.

Pour plus d’informations sur la conception d’applications modernes sans état, consultez les sites Architecting Applications for Kubernetes et https://www.digitalocean.com/. communauté / tutoriels / modernizing-applications-for-kubernetes [Moderniser les applications pour Kubernetes].

Le répertoire du projet inclut un + Dockerfile + avec des instructions pour la construction de l’image d’application. Construisons l’image maintenant pour pouvoir la transférer sur votre compte Docker Hub et l’utiliser dans votre configuration Kubernetes.

A l’aide de la commande +docker build + `, construisez l’image avec l’indicateur