Configuration d'applications avec des secrets

KubernetesKubernetesBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce lab, vous apprendrez à utiliser les Secrets Kubernetes pour gérer en toute sécurité les informations sensibles telles que les mots de passe, les clés API et autres données confidentielles. Vous créerez un secret, l'utiliserez dans votre application et vérifierez que l'application est correctement configurée. Chaque étape s'appuie sur la précédente, assurez-vous donc de suivre attentivement.

Ceci est un Guided Lab, qui fournit des instructions étape par étape pour vous aider à apprendre et à pratiquer. Suivez attentivement les instructions pour compléter chaque étape et acquérir une expérience pratique. Les données historiques montrent que c'est un laboratoire de niveau débutant avec un taux de réussite de 97%. Il a reçu un taux d'avis positifs de 95% de la part des apprenants.

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. Naviguez vers votre répertoire de travail :

    Ouvrez le terminal et naviguez vers le dossier de projet par défaut :

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

    Démarrez Minikube pour initialiser un cluster Kubernetes :

    minikube start
    • Cette commande configure un cluster Kubernetes à un seul nœud sur votre machine locale.
    • Le démarrage de Minikube peut prendre quelques minutes en fonction des performances de votre système.
  3. Vérifier 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 répertoriés comme Running.
    • Si le cluster n'est pas en cours d'exécution, réexécutez 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 Secret

Dans cette étape, vous allez créer un Secret Kubernetes qui contient un mot de passe de base de données.

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

apiVersion: v1
kind: Secret
metadata:
  name: my-secret
type: Opaque
data:
  password: dXNlcm5hbWU6cGFzc3dvcmQ=

Dans ce fichier, nous spécifions le nom du Secret (my-secret), le type de données qu'il contient (Opaque) et les données réelles au format encodé en Base64.

Appliquez le Secret à votre cluster en exécutant la commande suivante :

kubectl apply -f my-secret.yaml

Vérifiez que le Secret a été créé en exécutant la commande suivante :

kubectl get secrets

Vous devriez voir le Secret my-secret listé.

Utiliser le Secret dans votre application

Dans cette étape, vous allez modifier votre application pour utiliser le Secret my-secret afin de récupérer le mot de passe de la base de données.

Créez un fichier nommé my-app.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_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: my-secret
                  key: password

Dans ce fichier, nous spécifions le nom du Déploiement (my-app), l'image à utiliser (my-image) et la variable d'environnement à définir (DATABASE_PASSWORD). Nous utilisons également un secretKeyRef pour récupérer la clé password du Secret my-secret.

Appliquez le Déploiement à votre cluster en exécutant la commande suivante :

kubectl apply -f my-app.yaml

Vérifiez que le Déploiement a été créé en exécutant la commande suivante :

kubectl get deployments

Vous devriez voir le Déploiement my-app listé.

Vérifier la configuration

Dans cette étape, vous allez vérifier que votre application est correctement configurée avec le mot de passe de la base de données provenant du Secret my-secret.

Trouvez le nom du pod 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 réel du pod que vous avez noté précédemment.

Une fois dans la session shell, exécutez la commande suivante pour afficher la valeur de la variable d'environnement DATABASE_PASSWORD :

echo $DATABASE_PASSWORD

Vous devriez voir le mot de passe de la base de données qui a été récupéré à partir du Secret my-secret.

Monter le Secret en tant que Volume dans un Pod

Maintenant que nous avons créé le secret, nous pouvons le monter en tant que volume dans un pod. Nous allons créer un pod simple qui lit la valeur du secret à partir du volume monté et l'affiche dans la console.

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

apiVersion: v1
kind: Pod
metadata:
  name: secret-pod
spec:
  containers:
    - name: secret-container
      image: nginx
      volumeMounts:
        - name: secret-volume
          mountPath: /etc/secret-volume
  volumes:
    - name: secret-volume
      secret:
        secretName: my-secret

Appliquez la configuration du pod :

kubectl apply -f pod.yaml

Vérifier le Secret en tant que Volume dans un Pod

Dans cette étape, vous allez vérifier que votre application est correctement configurée avec le mot de passe de la base de données provenant du Secret my-secret.

Tout d'abord, exécutez la commande suivante pour ouvrir une session shell dans le conteneur exécutant votre application :

kubectl exec -it secret-pod -- sh

Une fois dans la session shell, exécutez la commande suivante pour afficher la valeur :

cat /etc/secret-volume/password

La sortie devrait être la valeur du secret.

Résumé

Dans ce lab, nous avons appris comment utiliser les secrets Kubernetes pour stocker des informations sensibles et comment les utiliser dans un pod. Les secrets offrent un moyen sécurisé de gérer les informations sensibles et doivent être utilisés autant que possible pour éviter d'exposer les secrets en clair.