Comment configurer Consul KV à l’aide de Docker

Introduction

Consul de HashiCorp est un outil polyvalent utilisé dans un environnement DevOps moderne pour diverses fonctions. Il est largement utilisé pour la découverte de services, les vérifications de santé, le balancement de charge et, notamment, comme une base de données distribuée de clés et valeurs (KV). La banque de données KV de Consul est parfaite pour stocker des données de configuration dynamiques, des drapeaux de fonctionnalité, des secrets et des métadonnées de manière hautement disponible et cohérente sur votre infrastructure, ce qui permet leur accès dynamique par les services dans un système distribué. L’utilisation de Docker pour configurer la banque de données KV de Consul permet un installation rapide et des environnements isolés, ce qui est idéal pour la testation et le développement.

Ce tutoriel vous guidera à travers le processus de configuration de la banque de données KV de Consul en utilisant Docker. À la fin, vous aurez une instance de Consul complète fonctionnelle en cours d’exécution sous Docker, avec des couples KV configurés et accessibles. Cette configuration est essentielle pour la configuration dynamique des services et la gestion de l’état dans les systèmes distribués.

Prérequis

Avant de commencer, veuillez s’assurer de disposer des éléments suivants :

  • Un compte DigitalOcean Cloud..
  • Un serveur exécutant Ubuntu et un utilisateur non-root avec des privilèges de sudo et une pare-feu active. Pour des instructions sur la configuration, veuillez choisir votre distribution à partir de cette liste et suivez notre guide de configuration initiale du serveur. Veuillez vous assurer de travailler avec une version supportée d’Ubuntu.
  • Docker installé sur votre Droplet Ubuntu. Veuillez suivre ce tutoriel sur Comment installer et utiliser Docker sous Ubuntu.
  • Familiarité avec la ligne de commande Linux. Pour une introduction ou un rappel à la ligne de commande, vous pouvez visiter ce guide sur Préliminaires de la ligne de commande Linux.
  • Connaissances de base sur les commandes Docker et la gestion des conteneurs.

Étape 1 — Extraction de l’image Consul Docker

Allons extraire l’image officielle de Consul à partir de Docker Hub. Cette image est maintenue par HashiCorp et inclut tout ce dont vous avez besoin pour exécuter Consul.

Connectez-vous à la console de votre Droplet Ubuntu et exécutez :

docker pull hashicorp/consul:latest
Output
latest: Pulling from hashicorp/consul c8bcd218a73d: Pull complete 5f1ac8227c2a: Pull complete c51fd79d429a: Pull complete 91eff479bde6: Pull complete 4dfcc18e51db: Pull complete 3e2a8bf39bf9: Pull complete bd9ddc54bea9: Pull complete 2054d291fb84: Pull complete Digest: sha256:e244c64df77ab3586f177f1692e98575086eb40343dc82a6320f5e79543490eb Status: Downloaded newer image for hashicorp/consul:latest docker.io/hashicorp/consul:latest

Étape 2 – Exécution du conteneur Consul

Maintenant que l’image Consul est téléchargée, vous pouvez démarrer un nouveau conteneur Consul. Ce conteneur servira de serveur Consul et vous permettra d’interagir avec la base de données KV.

Pour démarrer le conteneur, exécutez la commande suivante :

docker run -d --name=consul-server -e 
Output
CONSUL_BIND_INTERFACE
=eth0 -p 8500:8500 -p 8600:8600/udp hashicorp/consul c893b6707686bce8434213975a75c936b834cf25fc84d10b407a11c4fa8ca8ba

Ceci est ce que cette commande fait :

  • -d permet de démarrer le conteneur en mode détaché (en arrière-plan).
  • --name=consul-server assigne un nom au conteneur.
  • -e CONSUL_BIND_INTERFACE=eth0 définit l’interface réseau à laquelle Consul doit se lier. Cela est nécessaire pour une communication réseau correcte.
  • -p 8500:8500 relie le port Web UI et l’API de Consul au hôte.
  • -p 8600:8600/udp relie le port du service DNS pour la découverte de services.

Cette étape est cruciale car elle configure le service central de Consul, que vous utiliserez pour configurer la base de données KV.

Étape 3 – Vérification de l’installation de Consul

Pour s’assurer que Consul fonctionne correctement, vous devez vérifier l’état du conteneur et accéder à l’interface utilisateur de Consul.

Premièrement, exécutez docker ps pour lister tous les conteneurs en cours d’exécution et vérifiez que le conteneur Consul est en cours d’exécution.

docker ps                                                                                                      
CONTAINER ID   IMAGE              COMMAND                  CREATED          STATUS          PORTS                                                                                    NAMES
c893b6707686   hashicorp/consul   "docker-entrypoint.s…"   51 seconds ago   Up 50 seconds   8300-8302/tcp, 8600/tcp, 8301-8302/udp, 0.0.0.0:8500->8500/tcp, 0.0.0.0:8600->8600/udp   consul-server

Maintenant, vérifiez si Consul est accessible, ouvrez un navigateur web et naviguez vers http://localhost:8500. Vous devraitz voir l’interface utilisateur de Consul.

Cette étape de vérification est importante pour confirmer que votre instance Consul fonctionne sans problème avant d’enregistrer des données dans le magasin KV (étape 5).

Étape 4 — Configurer le Pare-Feu (Facultatif)

Si votre instance Consul doit être accessible externe (par exemple, depuis d’autres nœuds dans un cluster), vous devez ajuster vos paramètres de pare-feu pour autoriser le trafic sur les ports nécessaires.

Par exemple, si vous exécutez Consul sur une instance cloud, vous devriez autoriser le trafic entrant sur les ports 8500 (API HTTP) et 8600 (DNS). Les commandes spécifiques varieront selon votre solution de pare-feu (UFW, iptables, etc.).

Cette étape vous permet de vous assurer que votre instance Consul est accessible depuis d’autres machines, ce qui est essentiel pour les configurations distribuées.

Étape 5 — Enregistrer des Paires Clé-Valeur

Avec Consul en cours d’exécution, vous pouvez désormais utiliser le magasin KV pour stocker des données de configuration. Vous pouvez ajouter des paires clé-valeur en utilisant la CLI de Consul ou l’interface Web.

Pour stocker une paire clé-valeur via la CLI, exécutez la commande suivante :

docker exec -it consul-server consul kv put config/db_host 
192.168.1.100
Success! Data written to: config/db_host
docker exec -it consul-server consul kv put config/db_port 3306         
Success! Data written to: config/db_port

Voici ce que cette commande fait :

  • -it – Lance l’interface interactive depuis le système local vers le conteneur.
  • consul kv put – La commande kv put écrit les données dans le magasin KV donné.
  • config/db_host – Chemin pour stocker la valeur.
  • 192.168.1.100 – Valeur.

En utilisant l’interface Web,

  1. Naviguez vers l’interface Consul (http://localhost:8500).
  2. Cliquez sur l’onglet “Key/Value”.
  3. Créez une nouvelle clé en cliquant sur “Create”.
  4. Entrez la clé (par exemple, config/db_host) et la valeur (par exemple, 192.168.1.100).

Ces commandes et actions stockent des données de configuration critique que vos services peuvent accéder dynamiquement à runtime.

Étape 6 — Récupération des Paires Clé-Valeur

Une fois que vous avez stocké quelques paires KV, vous voudrez les récupérer pour vous assurer qu’elles ont été correctement stockées.

En utilisant la CLI, récupérez une valeur en utilisant la commande suivante :

docker exec -it consul-server consul kv get config/db_host     
192.168.1.100

En utilisant l’interface Web,

  1. Accéder à l’onglet “Key/Value” dans l’interface utilisateur de Consul.
  2. Trouver la clé que vous avez créée et cliquer dessus pour voir la valeur enregistrée.

Récupérer les paires KV est une étape nécessaire pour vérifier que vos données sont correctement stockées et accessibles.

Étape 7 — Persister des Données en Utilisant des Volumes Docker

Par défaut, les conteneurs Docker sont éphémères, ce qui signifie que toutes les données stockées à l’intérieur d’eux seront perdues si le conteneur est supprimé. Pour persister vos données KV de Consul, vous devez utiliser des volumes Docker.

  1. Arrêter et supprimer le conteneur Consul actuel :
docker stop consul-server 
docker rm consul-server 

Maintenant, vérifiez les conteneurs et vous devriez remarquer que le conteneur Consul n’est plus en cours d’exécution.

docker ps 
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

2.Exécuter un nouveau conteneur Consul avec un volume Docker attaché :

docker run -d --name=consul-server -e 
Output
CONSUL_BIND_INTERFACE
=eth0 -p 8500:8500 -p 8600:8600/udp -v consul_data:/consul/data hashicorp/consul 2d2a7d3ff1911c2283e70506d68391a5cbf9c935a2ae447bfb8fa21481989ef1
docker ps 
Output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2d2a7d3ff191 hashicorp/consul "docker-entrypoint.s…" 5 seconds ago Up 4 seconds 8300-8302/tcp, 8600/tcp, 8301-8302/udp, 0.0.0.0:8500->8500/tcp, 0.0.0.0:8600->8600/udp consul-server

L’option -v consul_data:/consul/data monte un volume Docker sur le conteneur, garantissant que votre magasin KV persiste lors de la reprise de l’exécution du conteneur.

Étape 8 — Automatiser le Démarrage de Consul (Facultatif)

Pour les déploiements de production, vous souhaitez peut-être automatiser le démarrage du conteneur Consul en utilisant Docker Compose. Docker Compose simplifie les applications Docker multi-conteneurs et facilite la gestion des services.

Créez un fichier docker-compose.yml avec le contenu suivant :

docker-compose,yml
services:
  consul:
    image: hashicorp/consul:latest
    environment:
      - CONSUL_BIND_INTERFACE=eth0
    volumes:
      - consul_data:/consul/data 
    ports:
      - "8500:8500"
      - "8600:8600/udp"
    restart: always
volumes:
  consul_data:

Ensuite, exécutez :

docker-compose up -d
Output
[+] Running 2/2 ✔ Network work_default Created 0.0s ✔ Container consul-server Started 0.1s
docker ps
Output
WARN[0000] /Users/anandhkumar/work/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS work-consul-1 hashicorp/consul:latest "docker-entrypoint.s…" consul 40 seconds ago Up 11 seconds 8300-8302/tcp, 8600/tcp, 8301-8302/udp, 0.0.0.0:8500->8500/tcp, 0.0.0.0:8600->8600/udp

Cette commande démarre automatiquement Consul et s’assure de le redémarrer si elle échoue, ce qui la rend plus robuste pour l’utilisation en production.

Étape 9 — Nettoyage

Lorsque vous avez terminé votre instance Consul, vous devez nettoyer votre environnement Docker pour libérer des ressources.

Arrêtez et supprimez le conteneur Consul :

docker stop consul-server   
docker rm consul-server
docker ps
output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

Si vous n’utilisez plus Consul, vous pouvez également supprimer l’image Docker :

docker rmi hashicorp/consul  
output
hashicorp/consul@sha256:e244c64df77ab3586f177f1692e98575086eb40343dc82a6320f5e79543490eb Deleted: sha256:eff8ccb509560987755a70df8d6c0b9410538d503d99498ae1ea9f48066b0439 Deleted: sha256:b5e6402bbb78eb061d538505a30300ef7f612104eaf0f11b17839a9b29bc5603 Deleted: sha256:1c61ada2ad8074615120d13bd805260d766ae8424cafbda4bded529d6a204d6f Deleted: sha256:9b36da670e2a59f1d81c6e3c9d55906c576b384df51272977e5a9caea7131e74 Deleted: sha256:8c6e52c441c246f60ca146b71204b7d6511df75fa87a0dc0a0f91141964e8fd9 Deleted: sha256:1fce18208235de2be3c419764ec1d469229af5387447d21649c841632c653cef Deleted: sha256:68e0a114c9c35b9aa8cac31fa32b27f886361bc85fcc63f34e882e9128f33a14 Deleted: sha256:3da5b888208a9b19694bfeaf8c74a432b50f44542d717c9e1f3ab273e505855a Deleted: sha256:dea73e9287e6e2f3b7f9fcac4f20767d7badeefa24e52f990f1674e98abfa1a3 Deleted: sha256:201fa22d1f4c7d6e7ec43135c63b2260f303f4864f5eb43569faaa1731628799

Le nettoyage aide à maintenir un environnement de développement propre et s’assure que les ressources Docker ne sont pas consommées de manière inutile.

Conclusion

Dans ce tutoriel, vous avez appris comment installer et configurer le magasin KV de Consul en utilisant Docker. Vous avez couvert l’installation de Docker, l’exécution du conteneur Consul, la configuration du magasin KV, la persistance des données avec les volumes Docker et la nettoyage de votre environnement. Avec ces étapes, vous pouvez désormais utiliser Consul pour gérer dynamiquement les données de configuration dans vos systèmes distribués, en exploitant les puissances de Docker pour une installation et une gestion faciles.

Source:
https://www.digitalocean.com/community/tutorials/how-to-configure-consul-kv-using-docker