Les conteneurs ont transformé la manière dont nous déployons, redimensionnons et gérons les applications en empaquetant le code et les dépendances dans une unité standardisée qui peut s’exécuter de manière cohérente dans n’importe quel environnement. Lorsqu’ils sont utilisés dans des environnements cloud, les conteneurs offrent :
- Portabilité à travers le développement, les tests et la production.
- Scalabilité pour s’adapter rapidement au trafic et à la demande.
- Efficacité avec des frais généraux réduits par rapport aux machines virtuelles traditionnelles.
Dans ce tutoriel, nous passerons en revue la configuration complète d’une application conteneurisée hébergée dans le cloud, couvrant :
- Les bases des conteneurs et pourquoi ils sont idéaux pour le cloud.
- Configuration d’une application conteneurisée avec Docker.
- Déploiement du conteneur chez un fournisseur de cloud (en utilisant Google Cloud Platform comme exemple).
- Mise à l’échelle et gestion de votre conteneur dans le cloud.
Bases des conteneurs : Comment les conteneurs s’intègrent dans les flux de travail cloud
Les conteneurs encapsulent toutes les bibliothèques et dépendances nécessaires à l’exécution d’une application. Contrairement aux machines virtuelles traditionnelles, dans lesquelles chacune possède un système d’exploitation, les conteneurs partagent le système d’exploitation hôte, ce qui les rend légers et efficaces.
Pourquoi des conteneurs pour le cloud ?
- Des temps de démarrage rapides signifient une mise à l’échelle plus rapide pour gérer le trafic variable.
- La cohérence entre les environnements garantit que le code se comporte de la même manière des ordinateurs portables des développeurs à la production.
- L’efficacité des ressources permet un déploiement à haute densité sur la même infrastructure.
Composants essentiels de la conteneurisation cloud
- Moteur de conteneurs : Gère et exécute les conteneurs (par exemple, Docker, containerd).
- Orchestration : Garantit la fiabilité de l’application, son dimensionnement et l’équilibrage de la charge (par exemple, Kubernetes, ECS).
- Registre : Stocke les images de conteneurs pour un accès dans tous les environnements (par exemple, Docker Hub, GCR).
Configuration d’une application Dockerisée
Nous commencerons par conteneuriser une application Node.js simple.
Étape 1 : Créer l’application
1. Dans un dossier de projet, initialisez un projet Node.js :
mkdir cloud-container-app && cd cloud-container-app
npm init -y
2. Créez un fichier de serveur de base, app.js
:
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello, Cloud Container!');
});
app.listen(3000, () => {
console.log('App running on port 3000');
});
3. Ajoutez Express au projet :
npm install express
Étape 2 : Créer un Dockerfile
Ce Dockerfile spécifie comment empaqueter l’application dans un conteneur Docker.
# Use the Node.js image as a base
FROM node:14
# Set working directory
WORKDIR /app
# Copy files and install dependencies
COPY . .
RUN npm install
# Expose the app’s port
EXPOSE 3000
# Start the application
CMD ["node", "app.js"]
Étape 3 : Construire et tester l’image Docker localement
1. Construisez l’image Docker :
docker build -t cloud-container-app .
2. Exécutez le conteneur localement :
docker run -p 3000:3000 cloud-container-app
3. Visitez `http://localhost:3000` dans votre navigateur. Vous devriez voir « Bonjour, Cloud Container! » affiché.
Déploiement du conteneur sur la plateforme Google Cloud Platform (GCP)
Dans cette section, nous allons pousser l’image du conteneur vers le Registre de Conteneurs Google (GCR) et le déployer sur Google Kubernetes Engine (GKE).
Étape 1: Configuration d’un projet GCP
1. Créez un projet GCP. Accédez à la [Console Google Cloud] (https://console.cloud.google.com) et créez un nouveau projet.
2. Activez les API Kubernetes Engine et Container Registry pour votre projet.
Étape 2: Pousser l’image vers le Registre de Conteneurs Google
1. Taguez l’image Docker pour Google Cloud:
docker tag cloud-container-app gcr.io/<YOUR_PROJECT_ID>/cloud-container-app
2. Poussez l’image vers GCR:
docker push gcr.io/<YOUR_PROJECT_ID>/cloud-container-app
Étape 3: Créer un Cluster Kubernetes
1. Initialisez un Cluster GKE:
gcloud container clusters create cloud-container-cluster --num-nodes=2
2. Configurez kubectl
pour vous connecter à votre nouveau cluster:
gcloud container clusters get-credentials cloud-container-cluster
Étape 4: Déployer l’application conteneurisée sur GKE
1. Créez un fichier k8s-deployment.yaml
pour définir le déploiement et le service:
apiVersion apps/v1
kind Deployment
metadata
name cloud-container-app
spec
replicas2
selector
matchLabels
app cloud-container-app
template
metadata
labels
app cloud-container-app
spec
containers
name cloud-container-app
image gcr.io/<YOUR_PROJECT_ID>/cloud-container-app
ports
containerPort3000
---
apiVersion v1
kind Service
metadata
name cloud-container-service
spec
type LoadBalancer
selector
app cloud-container-app
ports
protocol TCP
port80
targetPort3000
2. Déployez l’application sur GKE:
kubectl apply -f k8s-deployment.yaml
3. Obtenez l’IP externe pour accéder à l’application:
kubectl get services
Redimensionnement et Gestion des Conteneurs dans GKE
Étape 1: Redimensionner le Déploiement
Pour ajuster le nombre de répliques (par exemple, pour gérer un trafic plus élevé), utilisez la commande suivante:
kubectl scale deployment cloud-container-app --replicas=5
GKE va automatiquement mettre à l’échelle l’application en ajoutant des répliques et en distribuant la charge.
Étape 2 : Surveiller et Gérer les journaux
1. Utilisez la commande ci-dessous pour afficher les journaux d’une pod spécifique dans Kubernetes :
kubectl logs <POD_NAME>
2. Activez le tableau de bord GKE pour surveiller l’état des pods, l’utilisation des ressources et gérer les déploiements de manière visuelle.
Conclusion : Exploiter les conteneurs pour des déploiements cloud évolutifs
Ce tutoriel a couvert :
- Containerisation d’une application Node.js en utilisant Docker.
- Déploiement sur Google Kubernetes Engine (GKE) pour un hébergement évolutif et géré.
- Gestion et mise à l’échelle efficaces des conteneurs dans le cloud.
Avec des conteneurs dans le cloud, vos applications gagnent en scalabilité, portabilité et efficacité, garantissant ainsi qu’elles sont prêtes à répondre à la demande, à s’adapter rapidement et à rester cohérentes sur tous les environnements.
Source:
https://dzone.com/articles/a-step-by-step-guide-to-deploying-containers-in-the-cloud