Configurer des applications avec des ConfigMaps

KubernetesBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire (lab), vous apprendrez à utiliser les ConfigMaps dans Kubernetes pour configurer vos applications. Les ConfigMaps offrent un moyen de séparer les données de configuration du code de votre application, facilitant ainsi la gestion et la mise à jour de la configuration de votre application sans modifier l'application elle-même.

Démarrer le cluster Minikube

Avant de créer des ressources, vous avez besoin d'un cluster Kubernetes en cours d'exécution. Minikube est un environnement Kubernetes léger qui s'exécute sur votre machine locale.

  1. Accédez à votre répertoire de travail :

    Ouvrez le terminal et accédez au dossier de projet par défaut :

    cd /home/labex/project
    
  2. Démarrez Minikube :

    Démarrez Minikube pour initialiser un cluster Kubernetes :

    minikube start
    
    • Cette commande configure un cluster Kubernetes mono - noeud sur votre machine locale.
    • Minikube peut prendre quelques minutes à démarrer en fonction des performances de votre système.
  3. Vérifiez que Minikube est en cours d'exécution :

    Vérifiez l'état du cluster Minikube :

    minikube status
    
    • Recherchez des composants tels que kubelet et apiserver listés comme Running (en cours d'exécution).
    • Si le cluster n'est pas en cours d'exécution, relancez la commande minikube start.

Si vous rencontrez des problèmes lors du démarrage de Minikube, utilisez minikube delete pour réinitialiser l'environnement si nécessaire.

Créer un ConfigMap

Dans cette étape, vous allez créer un ConfigMap contenant les données de configuration de votre application.

Créez un fichier nommé configmap.yaml dans le répertoire /home/labex/project/ avec le contenu suivant :

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config
data:
  DATABASE_URL: postgres://user:password@host:port/dbname

Ce ConfigMap contient une seule paire clé - valeur, où la clé est DATABASE_URL et la valeur est une chaîne de connexion à une base de données PostgreSQL.

Pour créer le ConfigMap, exécutez la commande suivante :

kubectl apply -f configmap.yaml

Utiliser le ConfigMap dans votre application

Dans cette étape, vous allez utiliser le ConfigMap dans votre application.

Créez un fichier nommé deployment.yaml dans le répertoire /home/labex/project/ avec le contenu suivant :

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
        - name: my-app
          image: nginx:latest
          env:
            - name: DATABASE_URL
              valueFrom:
                configMapKeyRef:
                  name: my-config
                  key: DATABASE_URL

Ce déploiement (deployment) spécifie un seul conteneur exécutant votre application, qui utilise la variable d'environnement DATABASE_URL pour se connecter à une base de données PostgreSQL. La valeur de DATABASE_URL est obtenue à partir du ConfigMap my-config.

Pour créer le déploiement, exécutez la commande suivante :

kubectl apply -f deployment.yaml

Vérifier la configuration

Dans cette étape, vous allez vérifier que la configuration a été appliquée à votre application.

Tout d'abord, trouvez le nom du pod (conteneur logique dans Kubernetes) exécutant votre application en exécutant la commande suivante :

kubectl get pods -l app=my-app

Vous devriez voir un seul pod exécutant votre application. Notez le nom du pod.

Ensuite, exécutez la commande suivante pour ouvrir une session shell dans le conteneur exécutant votre application :

kubectl exec -it pod-name -- /bin/sh

Remplacez <pod-name> par le nom du pod que vous avez noté précédemment.

Une fois que vous êtes dans la session shell, exécutez la commande suivante pour afficher la valeur de la variable d'environnement DATABASE_URL :

echo $DATABASE_URL

Vous devriez voir la chaîne de connexion à la base de données que vous avez définie dans le ConfigMap.

Mettre à jour le ConfigMap

Dans cette étape, vous allez mettre à jour le ConfigMap et voir comment cela affecte votre application.

Mettez à jour le fichier configmap.yaml avec une nouvelle valeur pour la clé DATABASE_URL :

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config
data:
  DATABASE_URL: postgres://newuser:newpassword@newhost:newport/newdbname

Cela met à jour la clé DATABASE_URL avec une nouvelle valeur.

Pour mettre à jour le ConfigMap, exécutez la commande suivante :

kubectl apply -f configmap.yaml

Vérifier la mise à jour

Dans cette étape, vous allez vérifier que la mise à jour du ConfigMap a été appliquée à votre application.

Tout d'abord, trouvez le nom du pod (conteneur logique dans Kubernetes) exécutant votre application en exécutant la commande suivante :

kubectl get pods -l app=my-app

Vous devriez voir un seul pod exécutant votre application. Notez le nom du pod.

Ensuite, exécutez la commande suivante pour ouvrir une session shell dans le conteneur exécutant votre application :

kubectl exec -it pod-name -- /bin/sh

Remplacez <pod-name> par le nom du pod que vous avez noté précédemment.

Une fois que vous êtes dans la session shell, exécutez la commande suivante pour afficher la valeur de la variable d'environnement DATABASE_URL :

echo $DATABASE_URL

Vous pouvez constater que la configuration n'a pas pris effet, il s'agit toujours des mêmes données qu'avant. Vous devez redémarrer le déploiement (Deployment) avec la commande suivante.

kubectl rollout restart deployment my-app

Une fois le redémarrage terminé, accédez de nouveau à l'intérieur du conteneur et utilisez la commande ci-dessus pour vérifier la configuration.

Vous devriez voir la chaîne de connexion à la base de données mise à jour.

Résumé

Dans ce laboratoire (lab), vous avez appris à utiliser les ConfigMaps dans Kubernetes pour configurer vos applications. Vous avez créé un ConfigMap contenant des données de configuration, utilisé le ConfigMap dans votre application et mis à jour le ConfigMap pour voir comment cela affecte votre application. Vous avez également appris à vérifier que la configuration a été appliquée à votre application et à nettoyer les ressources créées dans le laboratoire.