Cómo configurar Consul KV usando Docker

0 acciones
0
0
0
0

Introducción

Consul de HashiCorp es una herramienta versátil que realiza múltiples funciones en un entorno DevOps moderno. Se utiliza ampliamente para el descubrimiento de servicios, las comprobaciones de estado, el balanceo de carga y, sobre todo, como almacén de clave-valor (KV) distribuido. El almacén de KV de Consul es ideal para almacenar datos de configuración dinámicos, indicadores de características, secretos y metadatos de forma totalmente disponible y consistente en toda la infraestructura, de modo que los servicios de un sistema distribuido puedan acceder a ellos dinámicamente. Usar Docker para configurar el almacén de KV de Consul permite una implementación rápida y entornos aislados, lo que lo hace ideal para pruebas y desarrollo.

Este tutorial le guiará a través del proceso de configuración de un almacén de KV Consul con Docker. Al finalizar, tendrá una instancia de consola Docker completamente funcional con pares de KV configurados y disponibles. Esta configuración es esencial para la configuración dinámica de servicios y la gestión de estados en sistemas distribuidos.

Requisitos previos

Antes de comenzar, asegúrese de tener lo siguiente:

  • Una cuenta de DigitalOcean Cloud.
  • Un servidor que ejecuta Ubuntu y un usuario no root con privilegios de sudo y un firewall habilitado.
  • Docker está instalado en tu droplet de Ubuntu.
  • Introducción a la línea de comandos de Linux
  • Conocimientos básicos de comandos de Docker y gestión de contenedores.

Paso 1: Extraer la imagen Docker de Consul

Descarguemos la imagen oficial de la consola de Docker Hub. Esta imagen, mantenida por HashiCorp, incluye todo lo necesario para ejecutar la consola.

Inicie sesión en su consola Droplet de Ubuntu y ejecute:

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

Paso 2 – Ejecutar Consul Container

Ahora que la imagen de la consola está cargada, puede iniciar un nuevo contenedor de consola. Este contenedor actuará como su servidor de consola y le permitirá interactuar con la tienda KV.

Para iniciar el contenedor, ejecute:

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

Esto es lo que hace este comando:

  • -d ejecuta el contenedor en modo separado (en segundo plano).
  • --name=consul-server asigna un nombre al contenedor.
  • -e CONSUL_BIND_INTERFACE=eth0 Establece la interfaz de red a la que debe vincularse la consola. Esto es necesario para una comunicación de red adecuada.
  • -p 8500:8500 asigna la interfaz web de Consul y el puerto API al host.
  • -p 8600:8600/udp asigna el puerto del servicio DNS para el descubrimiento de servicios.

Este paso es muy importante porque inicia el servicio Consul, que utilizará para configurar el almacén KV.

Paso 3 – Confirmar la instalación de la consola

Para garantizar que la consola funcione correctamente, debe verificar el estado del contenedor y acceder a la interfaz de la consola.

Primero, ejecute docker ps para enumerar todos los contenedores en ejecución y verificar que el contenedor Consul se esté ejecutando.

❯ 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

Ahora, comprueba si la consola está disponible. Abre un navegador web y ve a http://localhost:8500. Deberías ver la interfaz de Consul.

Este paso de verificación es importante para confirmar que su instancia de consola se está ejecutando sin problemas antes de guardar datos en la tienda KV (paso 5).

Paso 4 – Configurar el firewall (opcional)

Si su instancia de consola requiere acceso externo (por ejemplo, desde otros nodos de un clúster), debe configurar los ajustes de su firewall para permitir el tráfico en los puertos necesarios.

Por ejemplo, si ejecuta Consul en una instancia en la nube, podría necesitar permitir el tráfico entrante a los puertos 8500 (API HTTP) y 8600 (DNS). Los comandos específicos variarán según su solución de firewall (UFW, iptables, etc.).

Este paso garantiza que su instancia de consola sea accesible desde otras máquinas, lo cual es esencial para configuraciones distribuidas.

Paso 5: Almacenamiento de pares clave-valor

Con Consul en ejecución, puede usar el almacén KV para almacenar datos de configuración. Puede agregar pares clave-valor mediante la CLI de Consul o la interfaz web.

Para almacenar un par clave-valor a través de CLI, ejecute:

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

Esto es lo que hace este comando:

  • -it – Lanza una terminal interactiva desde el sistema local al contenedor.
  • consul kv put – El comando kv put guarda datos en la ruta indicada.
  • config/db_host – La ruta para almacenar el valor.
  • 192.168.1.100 – valor.

Usando la interfaz web,

  1. Vaya a la interfaz de usuario de Consul (http://localhost:8500).
  2. Haga clic en la pestaña “Clave/Valor”.
  3. Cree una nueva clave haciendo clic en “Crear”.
  4. Ingrese la clave (por ejemplo, config/db_host) y el valor (por ejemplo, 192.168.1.100).

Estos comandos y acciones almacenan datos de configuración críticos a los que sus servicios pueden acceder dinámicamente en tiempo de ejecución.

Paso 6: Recuperar pares clave-valor

Una vez que haya guardado algunos pares KV, querrá restaurarlos para asegurarse de que se hayan guardado correctamente.

Usando la CLI, recupere un valor usando el siguiente comando:

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

Usando la interfaz web,

  1. Vaya a la pestaña "Clave/Valor" en la interfaz de usuario de Consul.
  2. Encuentra la clave que creaste y haz clic en ella para ver el valor almacenado.

Restaurar pares KV es un paso esencial para verificar que sus datos estén correctamente almacenados y sean accesibles.

Paso 7: Datos persistentes mediante volúmenes Docker

De forma predeterminada, los contenedores Docker son efímeros, lo que significa que cualquier dato almacenado en ellos se pierde si se elimina el contenedor. Para conservar los datos de Consul KV, debe usar volúmenes Docker.

Detener y salir del contenedor de la consola actual:

docker stop consul-server 
docker rm consul-server 

Ahora revisa los envases y notarás que el corrector ya no funciona.

docker ps 
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

Adjunte un nuevo contenedor de consola con el volumen Docker:

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

La opción -v consul_data:/consul/data monta un volumen Docker en el contenedor y garantiza que su almacenamiento KV se reinicie en el contenedor.

Paso 8 – Iniciar automáticamente la consola (opcional)

Para implementaciones de producción, puede automatizar la implementación de su contenedor Consul con Docker Compose. Docker Compose simplifica las aplicaciones Docker multicontenedor y facilita la gestión de servicios.

Cree un archivo docker-compose.yml con el siguiente contenido:

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:

Luego ejecuta:

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

Este comando inicia automáticamente Consul y garantiza que se reinicie en caso de falla, lo que lo hace más robusto para el uso en producción.

Paso 9 – Limpieza

Una vez que haya terminado con su instancia de consola, deberá limpiar su entorno de Docker para liberar recursos.

Detengámonos y eliminemos el contenedor de la consola:

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

Si terminaste con la consola, también puedes eliminar la imagen de 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

La limpieza ayuda a mantener el entorno de desarrollo ordenado y garantiza que los recursos de Docker no se consuman innecesariamente.

Resultado

En este tutorial, aprendiste a configurar el almacén KV de Consul con Docker. Abordaste la instalación de Docker, la ejecución del contenedor de Consul, la configuración del almacén KV, la persistencia de datos con volúmenes de Docker y la limpieza de tu entorno. Con estos pasos, ahora puedes usar Consul para gestionar dinámicamente los datos de configuración en tus sistemas distribuidos, aprovechando la potencia de Docker para una implementación y gestión sencillas.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

También te puede gustar