Come configurare Consul KV usando Docker

Introduzione

Consul di HashiCorp è uno strumento versatile che svolge funzioni multiple in un ambiente moderno DevOps. È ampiamente utilizzato per la scoperta di servizi, i check-up della salute, il balancing del carico e, in particolar modo, come un key-value (KV) store distribuito. Il KV store in Consul è perfetto per la memorizzazione di dati di configurazione dinamici, degli indicatori di funzione, segreti e metadati in un modo altamente disponibile e coerente attraverso l’infrastruttura in modo che possa essere accessibile in maniera dinamica dai servizi in un sistema distribuito. L’utilizzo di Docker per configurare il KV store di Consul consente una configurazione rapida e ambienti isolati, rendendolo ideale per test e sviluppo.

Questo tutorial vi guiderà attraverso il processo di impostazione e configurazione del KV store di Consul usando Docker. By the end, you will have a fully functional Consul instance running in Docker, with KV pairs configured and accessible. Questa configurazione è essenziale per la configurazione dinamica del servizio e la gestione dello stato in sistemi distribuiti.

Prerequisiti

Prima di iniziare, assicuratevi di avere i seguenti elementi:

  • Un account DigitalOcean Cloud..
  • Un server in esecuzione su Ubuntu con un utente non root che ha privilegi di sudo e un firewall attivo. Per istruzioni su come impostare questa configurazione, scegli la tua distribuzione dalla questa lista e segui il nostro guide di configurazione iniziale del server. Assicurati di lavorare con una versione supportata di Ubuntu.
  • Docker installato sul tuo droplet Ubuntu. Segui questo tutorial su Come installare e usare Docker su Ubuntu.
  • Famigliarità con la riga di comando di Linux. Per una introduzione o un aggiornamento alle linee di comando, puoi visitare questo guide sulla principianti della riga di comando Linux.
  • Conoscenze di base riguardanti i comandi di Docker e la gestione dei container.

Step 1 — Estrarre l’immagine Consul Docker

Prendiamo l’immagine ufficiale di Consul da Docker Hub. Questa immagine è mantenuta da HashiCorp e include tutto ciò che serve per eseguire Consul.

Accedi alla console del tuo droplet Ubuntu e esegui:

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

Passo 2 – Esecuzione del contenitore di Consul

Ora che l’immagine di Consul è stata scaricata, è possibile avviare un nuovo contenitore di Consul. Questo contenitore fungerà da server di Consul e permetterà di interagire con il KV store.

Per avviare il contenitore, eseguire:

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

Questo è ciò che questo comando fa:

  • -d avvia il contenitore in modalità distaccata (in background).
  • --name=consul-server assegna un nome al contenitore.
  • -e CONSUL_BIND_INTERFACE=eth0 imposta l’interfaccia di rete a cui Consul deve essere collegato. Questo è necessario per la corretta comunicazione di rete.
  • -p 8500:8500 mappa il porto Web UI e API di Consul sul host.
  • -p 8600:8600/udp mappa il porto del servizio DNS per la scoperta del servizio.

Questo passo è cruciale in quanto imposta il servizio di base di Consul, che userai per configurare il KV store.

Passo 3 – Verifica dell’installazione di Consul

Per assicurarti che Consul sia in corretto funzionamento, devi verificare lo stato del contenitore e accedere all’interfaccia utente di Consul.

Prima di tutto, esegui docker ps per elencare tutti i container in esecuzione e verificare che il container Consul sia in funzione.

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

Adesso, controlla se Consul è accessibile, apri un browser web e naviga a http://localhost:8500. Dovresti vedere l’interfaccia utente di Consul.

Questo step di verifica è importante per confermare che la tua istanza di Consul sia in funzione senza problemi prima di memorizzare dati nel KV store (Step 5).

Step 4 — Configurazione del Firewall (Opzionale)

Se la tua istanza di Consul deve essere accessibile esternamente (ad esempio, da altri nodi in un cluster), devi modificare le impostazioni del firewall per consentire il traffico sulle porte necessarie.

Ad esempio, se stai correggendo Consul su una macchina cloud, potresti aver bisogno di consentire il traffico in entrata sulle porte 8500 (API HTTP) e 8600 (DNS). I comandi specifici varieranno in base alla soluzione firewall che utilizzi (UFW, iptables, ecc.).

Questo step assicura che la tua istanza di Consul sia accessibile da altre macchine, cosa essenziale per le configurazioni distribuite.

Step 5 — Memorizzazione di Coppie Chiave-Valore

Con Consul in esecuzione, ora puoi utilizzare il KV store per memorizzare dati di configurazione. È possibile aggiungere coppie chiave-valore usando il Consul CLI o la web UI.

Per memorizzare una coppia chiave-valore tramite il CLI, esegui:

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

Questo è ciò che questo comando fa:

  • -it – Avvia il terminale interattivo dalla piattaforma locale verso il contenitore.
  • consul kv put – Il comando kv put scrive i dati nella posizione KV store fornita.
  • config/db_host – Percorso per memorizzare il valore.
  • 192.168.1.100 – Valore.

Utilizzando la Web UI,

  1. Navigare alla UI Consul (http://localhost:8500).
  2. Cliccare sulla scheda “Key/Value”.
  3. Creare una nuova chiave facendo clic su “Create”.
  4. Inserire la chiave (ad esempio, config/db_host) e il valore (ad esempio, 192.168.1.100).

Questi comandi e azioni memorizzano dati di configurazione critici che i tuoi servizi possono accessare in maniera dinamica in runtime.

Step 6 — Recuperando Coppie Chiave-Valore

Una volta memorizzate alcune coppie KV, vorrai recuperarle per assicurarti che siano state memorizzate correttamente.

Utilizzando il CLI, recupera un valore usando il seguente comando:

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

Utilizzando la Web UI,

  1. Vai alla scheda “Key/Value” nella interfaccia utente di Consul.
  2. Trova la chiave che hai creato e clicca su di essa per vedere il valore memorizzato.

Ricercare i coppie KV è un passo necessario per verificare che i tuoi dati siano correttamente memorizzati e accessibili.

Step 7 — Persistenza dati utilizzando volumi Docker

Per default, i container Docker sono transitori, il che significa che qualsiasi dato memorizzato all’interno di essi sarà perso se il container viene rimosso. Per persistere i tuoi dati KV di Consul, dovresti usare i volumi Docker.

  1. Interrompi e rimuovi il container Consul corrente:
docker stop consul-server 
docker rm consul-server 

Ora, controlla i container e dovresti notare che il container Consul non è più in esecuzione.

docker ps 
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

2.Esegui un nuovo container Consul con un volume Docker collegato:

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’opzione -v consul_data:/consul/data monta un volume Docker sul container, garantendo che il tuo KV store persista tra i riavvii del container.

Step 8 — Automazione avvio Consul (Opzionale)

Per deployments di produzione, potreste automatizzare l’avvio del contenitore di Consul utilizzando Docker Compose. Docker Compose semplifica le applicazioni multi-contenitore di Docker e rende facile la gestione dei servizi.

Creare un file docker-compose.yml con il seguente contenuto:

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:

Quindi, eseguire:

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

Questo comando avvia automaticamente Consul e assicura il suo riavvio in caso di fallimento, rendendolo più robusto per l’utilizzo in produzione.

Step 9 — Pulizia

Appena hai finito di lavorare all’istanza di Consul, dovresti pulire il tuo ambiente Docker per liberare le risorse.

Fermiamo e rimuoviamo il contenitore di Consul:

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

Se hai finito con Consul, puoi anche rimuovere l’immagine 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 pulizia aiuta a mantenere un ambiente di sviluppo ordinato e assicura che le risorse di Docker non siano inutilizzate in modo indesiderato.

Conclusione

In questo tutorial, hai imparato come impostare e configurare il KV store di Consul usando Docker. Hai coperto l’installazione di Docker, l’esecuzione del contenitore di Consul, la configurazione del KV store, il salvataggio dei dati con i volumi di Docker e la pulizia dell’ambiente. Con questi passaggi, ora puoi utilizzare Consul per gestire dinamicamente i dati di configurazione nei tuoi sistemi distribuiti, sfruttando il potere di Docker per una facile distribuzione e gestione.

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