Comment configurer Consul KV à l'aide de Docker
Introduction
Consul de HashiCorp est un outil polyvalent qui remplit plusieurs fonctions dans un environnement DevOps moderne. Il est largement utilisé pour la découverte de services, les contrôles d’état, l’équilibrage de charge et, notamment, comme magasin clé-valeur (KV) distribué. Le magasin KV de Consul est parfait pour stocker des données de configuration dynamiques, des indicateurs de fonctionnalités, des secrets et des métadonnées de manière hautement disponible et cohérente dans votre infrastructure, de sorte qu'ils puissent être consultés dynamiquement par les services d'un système distribué. L'utilisation de Docker pour configurer le magasin KV de Consul permet une configuration rapide et des environnements isolés, ce qui le rend idéal pour les tests et le développement.
Ce didacticiel vous guidera tout au long du processus d'installation et de configuration du magasin KV de Consul à l'aide de Docker. À la fin, vous disposerez d'une instance Consul entièrement fonctionnelle exécutée dans Docker, avec des paires KV configurées et accessibles. Cette configuration est essentielle pour la configuration dynamique des services et la gestion de l'état dans les systèmes distribués.
Conditions préalables
Avant de commencer, assurez-vous d'avoir les éléments suivants :
- Un compte DigitalOcean Cloud.
- Un serveur exécutant Ubuntu et un utilisateur non root avec des privilèges sudo et un pare-feu actif. Pour obtenir des conseils sur la configuration, veuillez choisir votre distribution dans cette liste et suivre notre guide de configuration initiale du serveur. Veuillez vous assurer de travailler avec une version prise en charge d'Ubuntu.
- Docker installé sur votre Droplet Ubuntu. Veuillez suivre ce tutoriel sur Comment installer et utiliser Docker sur Ubuntu.
- Familiarité avec la ligne de commande Linux. Pour une introduction ou un rappel à la ligne de commande, vous pouvez consulter ce guide sur l'introduction à la ligne de commande Linux.
- Connaissance de base des commandes Docker et de la gestion des conteneurs.
Étape 1 - Extraire l'image Docker du Consul
Tirons l'image officielle du Consul de Docker Hub. Cette image est maintenue par HashiCorp et comprend tout ce dont vous avez besoin pour exécuter Consul.
Connectez-vous à la console de votre Ubuntu Droplet et exécutez :
docker pull hashicorp/consul:latest
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 vous servira de serveur Consul et vous permettra d'interagir avec la boutique KV.
Pour démarrer le conteneur, exécutez :
docker run -d --name=consul-server -e
CONSUL_BIND_INTERFACE=eth0 -p 8500:8500 -p 8600:8600/udp hashicorp/consul
c893b6707686bce8434213975a75c936b834cf25fc84d10b407a11c4fa8ca8ba
Voici ce que fait cette commande :
-d
exécute le conteneur en mode détaché (en arrière-plan).--name=consul-server
attribue un nom au conteneur.-e CONSUL_BIND_INTERFACE=eth0
définit l'interface réseau à laquelle Consul doit se lier. Ceci est nécessaire pour une bonne communication réseau.-p 8500:8500
mappe l'interface utilisateur Web et le port API de Consul à l'hôte.-p 8600:8600/udp
mappe le port du service DNS pour la découverte de services.
Cette étape est cruciale car elle configure le service principal Consul, que vous utiliserez pour configurer le magasin KV.
Étape 3 — Vérification de l'installation du Consul
Pour vous assurer que Consul fonctionne correctement, vous devez vérifier l'état du conteneur et accéder à l'interface utilisateur de Consul.
Tout d'abord, exécutez docker ps
pour répertorier tous les conteneurs en cours d'exécution et vérifier 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 le Consul est accessible, ouvrez un navigateur Web et accédez à http://localhost:8500
. Vous devriez voir l'interface utilisateur du consul.
Cette étape de vérification est importante pour confirmer que votre instance Consul fonctionne sans aucun problème avant de stocker les données dans le magasin KV (étape 5).
Étape 4 — Configuration du pare-feu (facultatif)
Si votre instance Consul doit être accessible de l'extérieur (par exemple, à partir d'autres nœuds d'un cluster), vous devez ajuster les paramètres de votre pare-feu pour autoriser le trafic sur les ports nécessaires.
Par exemple, si vous exécutez Consul sur une instance cloud, vous devrez peut-être autoriser le trafic entrant sur les ports 8500 (API HTTP) et 8600 (DNS). Les commandes spécifiques varient en fonction de votre solution de pare-feu (UFW, iptables, etc.).
Cette étape garantit que votre instance Consul est accessible depuis d'autres machines, ce qui est essentiel pour les configurations distribuées.
Étape 5 - Stockage des paires clé-valeur
Avec Consul en cours d'exécution, vous pouvez désormais utiliser le magasin KV pour stocker les données de configuration. Vous pouvez ajouter des paires clé-valeur à l'aide de la CLI Consul ou de l'interface utilisateur Web.
Pour stocker une paire clé-valeur via la CLI, exécutez :
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 fait cette commande :
-it
- Lance le terminal interactif du système local vers le conteneur.consul kv put
- La commande kv put écrit les données dans le magasin KV du chemin donné.config/db_host
- chemin pour stocker la valeur.192.168.1.100
- Valeur.
À l'aide de l'interface utilisateur Web,
- Accédez à l'interface utilisateur de Consul (
http://localhost:8500
). - Cliquez sur l'onglet « Clé/Valeur ».
- Créez une nouvelle clé en cliquant sur « Créer ».
- 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 critiques auxquelles vos services peuvent accéder dynamiquement au moment de l'exécution.
Étape 6 — Récupération des paires clé-valeur
Une fois que vous avez stocké certaines paires KV, vous souhaiterez les récupérer pour vous assurer qu’elles ont été correctement stockées.
À l'aide de la CLI, récupérez une valeur à l'aide de la commande suivante :
docker exec -it consul-server consul kv get config/db_host
192.168.1.100
À l'aide de l'interface utilisateur Web,
- Accédez à l'onglet « Clé/Valeur » dans l'interface utilisateur de Consul.
- Recherchez la clé que vous avez créée et cliquez dessus pour voir la valeur stockée.
La récupération des paires KV est une étape nécessaire pour vérifier que vos données sont correctement stockées et accessibles.
Étape 7 — Persistance des données à l'aide de volumes Docker
Par défaut, les conteneurs Docker sont éphémères, ce qui signifie que toutes les données qui y sont stockées seront perdues si le conteneur est supprimé. Pour conserver vos données Consul KV, vous devez utiliser des volumes Docker.
- Arrêtez et supprimez 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 ne fonctionne plus.
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2.Exécutez un nouveau conteneur Consul avec un volume Docker attaché :
docker run -d --name=consul-server -e
CONSUL_BIND_INTERFACE=eth0 -p 8500:8500 -p 8600:8600/udp -v consul_data:/consul/data hashicorp/consul
2d2a7d3ff1911c2283e70506d68391a5cbf9c935a2ae447bfb8fa21481989ef1
docker ps
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 ainsi la persistance de votre magasin KV lors des redémarrages du conteneur.
Étape 8 — Automatisation du démarrage de Consul (facultatif)
Pour les déploiements de production, vous souhaiterez peut-être automatiser le démarrage de votre conteneur Consul à l'aide de 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 :
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
[+] Running 2/2
✔ Network work_default Created 0.0s
✔ Container consul-server Started 0.1s
docker ps
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 Consul automatiquement et garantit son redémarrage en cas d'échec, ce qui le rend plus robuste pour une utilisation en production.
Étape 9 - Nettoyage
Une fois que vous avez fini de travailler avec votre instance Consul, vous devez nettoyer votre environnement Docker pour libérer des ressources.
Arrêtons et supprimons le conteneur Consul :
docker stop consul-server
docker rm consul-server
docker ps
outputCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Si vous en avez terminé avec Consul, vous pouvez également supprimer l'image Docker :
docker rmi hashicorp/consul
outputhashicorp/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 permet de maintenir un environnement de développement ordonné et garantit que les ressources Docker ne sont pas inutilement consommées.
Conclusion
Dans ce didacticiel, vous avez appris à installer et configurer le magasin KV de Consul à l'aide de Docker. Vous avez couvert l'installation de Docker, l'exécution du conteneur Consul, la configuration du magasin KV, la conservation des données avec les volumes Docker et le 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 tirant parti de la puissance de Docker pour un déploiement et une gestion faciles.