Nouveau : Datasets open source gratuits disponibles !Decouvrir →
☸️
Debutant 30 min Kubernetes

Kubernetes pour les debutants

Pourquoi Kubernetes pour les débutants ?

Kubernetes est un orchestrateur de conteneurs qui permet de déployer, exécuter et gérer des applications sur un cluster de machines virtuelles. Il offre une solution complète pour la mise en production d'applications modernes, en assurant la haute disponibilité, la scalabilité et la gestion des mises à jour.

Un cas d'usage concret : Vous travaillez chez une startup qui déploie une application web avec plusieurs services backend et frontend. Chaque service s'exécute sur une machine virtuelle différente. A chaque fois que vous faites un changement, vous devez manuellement redémarrer les services, vérifier leur disponibilité et appliquer les mises à jour une par une. Avec Kubernetes, ces tâches se font automatiquement grâce à des déploiements répétitifs et des états de santé.

Prerequis

  • Connaissances en programmation (JavaScript, Python, etc.)
  • Familiarité avec Docker
  • Un environnement d'édition texte comme Visual Studio Code
  • Kubernetes CLI installé (version 1.20+)
  • Minikube installé pour tester Kubernetes localement (version 1.20+)

Concepts fondamentaux

Déploiement (Deployment)

Un déploiement est une ressource Kubernetes qui définit comment déployer et mettre à jour des applications. Il garantit que le nombre spécifié de réplicas d'un service est en cours d'exécution.

## Définition d'un déploiement simple
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-container
        image: nginx:latest
        ports:
        - containerPort: 80

Service (Service)

Un service permet d'exposer une application en lui attribuant une adresse IP persistante. Il peut également gérer la distribution des trafic entre les réplicas de l'application.

## Définition d'un service pour un déploiement
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80

ConfigMap (ConfigMap)

Un configmap est une ressource Kubernetes qui stocke des données sous forme de clés-valeurs. Elles sont souvent utilisées pour passer des variables d'environnement ou des fichiers de configuration à l'intérieur des conteneurs.

## Définition d'un ConfigMap
apiVersion: v1
kind: ConfigMap
metadata:
  name: my-configmap
data:
  app-config.yaml: |
    apiUrl: "https://api.example.com"

Secret (Secret)

Un secret est similaire à un configmap, mais il est utilisé pour stocker des informations sensibles comme les mots de passe ou les clés API.

## Définition d'un Secret
apiVersion: v1
kind: Secret
metadata:
  name: my-secret
type: Opaque
data:
  username: YWRtaW4=  # base64 encoding of "admin"
  password: MWYyZDFlMmU2N2RjYzQzMDE0NTJlMDk=

Mise en pratique : projet fil rouge

Nous allons créer un simple application web déployée avec Kubernetes. L'application sera une page qui affiche "Bonjour, Kubernetes!".

Étape 1 : Créer le fichier HTML

Créons un fichier index.html dans un répertoire app.

<!-- app/index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Kubernetes App</title>
</head>
<body>
    <h1>Bonjour, Kubernetes!</h1>
</body>
</html>

Étape 2 : Créer le fichier Dockerfile

Créons un Dockerfile pour construire l'image Docker de notre application.

## app/Dockerfile
FROM nginx:alpine
COPY index.html /usr/share/nginx/html/index.html

Étape 3 : Construire et push l'image Docker

Utilisons Docker pour construire et push l'image sur un registry (Docker Hub, Google Container Registry, etc.).

## Build the Docker image
docker build -t my-kubernetes-app:latest .

## Push the Docker image to a registry
docker tag my-kubernetes-app:latest your-dockerhub-username/my-kubernetes-app:latest
docker push your-dockerhub-username/my-kubernetes-app:latest

Étape 4 : Créer le fichier de déploiement

Créons un fichier deployment.yaml pour définir notre déploiement Kubernetes.

## deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: kubernetes-app
  template:
    metadata:
      labels:
        app: kubernetes-app
    spec:
      containers:
      - name: my-container
        image: your-dockerhub-username/my-kubernetes-app:latest
        ports:
        - containerPort: 80

Étape 5 : Créer le fichier de service

Créons un fichier service.yaml pour définir notre service Kubernetes.

## service.yaml
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: kubernetes-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80

Étape 6 : Déployer les ressources

Utilisons kubectl pour déployer nos ressources sur Kubernetes.

## Apply the deployment and service configurations
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml

Erreurs frequentes et debugging

  1. Erreur : Service n'est pas accessible.

    • Cause : Le service n'est pas correctement configuré pour atteindre les pods.
    • Correction :
    # Corrected deployment.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: my-deployment
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: kubernetes-app
      template:
        metadata:
          labels:
            app: kubernetes-app
        spec:
          containers:
          - name: my-container
            image: your-dockerhub-username/my-kubernetes-app:latest
            ports:
            - containerPort: 80
    
    # Corrected service.yaml
    apiVersion: v1
    kind: Service
    metadata:
      name: my-service
    spec:
      selector:
        app: kubernetes-app
      ports:
        - protocol: TCP
          port: 80
          targetPort: 80
    
  2. Erreur : Pod ne s'exécute pas.

    • Cause : L'image Docker n'est pas trouvée ou est incorrecte.
    • Correction :
    # Check the pod status
    kubectl get pods
    
    # Correct the image name in deployment.yaml if needed
    
  3. Erreur : ConfigMap n'est pas correctement appliquée.

    • Cause : La clé ou la valeur dans le ConfigMap est incorrecte.
    • Correction :
    # Check the configmap
    kubectl get configmap my-configmap
    
    # Correct the configmap.yaml if needed
    

Pour aller plus loin

  1. Déploiement avec des volumes persistants : Explorez la façon de persister les données avec des volumes.
  2. Autoscaling : Utilisez l'autoscaler pour augmenter ou diminuer le nombre de réplicas en fonction du trafic.
  3. Mise à jour canary : Déployez une version de mise à jour sans affecter complètement les utilisateurs.

Défi pratique

Déployez une application Node.js simple sur Kubernetes qui affiche un message dynamique basé sur l'heure actuelle. Utilisez des ConfigMaps pour passer le message et des Services pour exposer l'application.

Indices :

  • Créez un fichier app.js pour votre application Node.js.
  • Utilisez une ConfigMap pour stocker le message.
  • Mettez en place une stratégie de déploiement canary.

Besoin d'aide sur Kubernetes ?

Besoin d'aide sur un projet technique ? Decrivez-le pour des conseils personnalises.

Recevoir des conseils

Questions frequentes

Qu'est-ce que Kubernetes ?
Kubernetes est un orchestrateur de conteneurs open-source qui automatisera le déploiement, la mise à l'échelle et la gestion des applications en conteneurs distribuées.
Comment installer Kubernetes sur mon ordinateur local ?
Pour installer Kubernetes sur votre ordinateur local, vous pouvez utiliser minikube ou Docker Desktop qui incluent une installation de Kubernetes locale pour les tests et le développement.
Quels sont les avantages de l'utilisation de Kubernetes ?
Kubernetes offre plusieurs avantages tels que la facilité d'orchestration, l'autoscale automatique, la mise à jour continue des applications, et une résilience accrue grâce à sa gestion des conteneurs distribués.

Pages liees

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.