Hoe Consul KV te Configureren Met Docker

Inleiding

Consul van HashiCorp is een flexibel hulpmiddel dat verschillende functies vervult in een moderne DevOps-omgeving. Het wordt breed gebruikt voor dienst ontdekking, gezondheidscontroles, loadbalancing en, in het bijzonder, als een verspreidings sleutel-waarde (KV) opslag. De KV-opslag in Consul is perfect voor het opslaan van dynamische configuratiegegevens, functievlaggen, geheimen en metadata in een hoog beschikbaar, consistente manier over uw infrastructuur, zodat deze door services in een verspreidingssysteem dynamisch kunnen worden aangevraagd. Het gebruik van Docker om de KV-opslag van Consul in te stellen biedt een snelle setup en geïsoleerde omgevingen, waardoor het ideaal is voor testen en ontwikkeling.

Dit handleiding zal u door de processen leiden om de KV-opslag van Consul te configureren en in te stellen met behulp van Docker. U zult aan het eind een volledig functionele Consul-instantie in Docker hebben die draait, met geconfigureerde KV-paren die toegankelijk zijn. Deze setup is essentieel voor dynamische dienstconfiguratie en -statusbeheer in verspreidingssystemen.

Vereisten

Als u beginne, zorg ervoor dat u het volgende hebt:

  • Een DigitalOcean Cloud account.
  • Een server die draait op Ubuntu en een niet-rootgebruiker met sudo-rechtenschema’s en een actieve brandmuur. Voor instructies over hoe dit in te stellen, kies uw distributie uit deze lijst en volg onze handleiding voor de eerste serverinstelling. Zorg ervoor dat u werkt met de ondersteunde versie van Ubuntu.
  • Docker geïnstalleerd op uw Ubuntu Droplet. Volg dit handleiding op Hoe docker te installeren en te gebruiken op Ubuntu.
  • Bekendheid met de Linux commandoregel. Voor een introductie of herinnering aan de commandoregel kunt u deze handleiding op Linux commandoregel primair bezoeken.
  • Basiskennis van Docker-commando’s en containerbeheer.

Stap 1 — De Consul Docker-image halen

Laat’s de officiële Consul-image halen van Docker Hub. Deze image wordt onderhouden door HashiCorp en bevat alles wat u nodig heeft om Consul te draaien.

Meld u aan bij de console van uw Ubuntu Droplet en voer uit:

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

Stap 2 — Starten van de Consul container

Nu de Consul-image is下载t, kunt u een nieuwe Consul-container starten. Deze container zal uw Consul-server zijn en u toelaten om te interageren met de KV-winkel.

Om de container te starten, voer uit:

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

Dit is wat deze opdracht doet:

  • -d draait de container in gedetacheerd modus (in de achtergrond).
  • --name=consul-server geeft de container een naam.
  • -e CONSUL_BIND_INTERFACE=eth0 stelt het netwerkinterface in dat Consul moet binden. Dit is nodig voor correcte netwerkcommunicatie.
  • -p 8500:8500 map de Consul web UI en API poort naar de host.
  • -p 8600:8600/udp map de DNS-dienstpoort voor service-ontdekking.

Dit stap is cruciaal omdat hij de kern Consul-dienst inricht, die u zult gebruiken om de KV-winkel te configureren.

Stap 3 — Controleren van de Consul-installatie

Om er voor te zorgen dat Consul correct draait, moet u de containerstatus controleren en de Consul-UI bereiken.

Eerst voer docker ps uit om alle draaiende containers te lijsten en controleer of de Consul-container actief is.

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

Nu kijk je of Consul bereikbaar is, open een web browser en navigeer naar http://localhost:8500. je zou de Consul UI moeten zien.

Deze controle stap is belangrijk om te bevestigen dat uw Consul-instantie zonder problemen draait voordat u gegevens in de KV-winkel ( stap 5 ) opslaat.

Stap 4 — Configureer de Firewall (Optioneel)

Als uw Consul-instantie extern moet worden aangesproken (bijvoorbeeld vanuit andere knooppunten in een cluster), moet u uw firewallinstellingen aanpassen om verkeer op de noodzakelijke poorten toe te staan.

Bijvoorbeeld, als u Consul op een cloud-instance draait, moet u binnenkomend verkeer op poorten 8500 (HTTP API) en 8600 (DNS) toestaan. De specifieke commando’s zijn afhankelijk van uw firewalloplossing (UFW, iptables, enz.).

Deze stap zorgt ervoor dat uw Consul-instantie vanuit andere machines kan worden aangesproken, wat essentieel is voor gedistribueerde configuraties.

Stap 5 — Opslaan van sleutel-waardeparen

Met Consul draaiend, kun je nu de KV-opslag gebruiken om configuratiegegevens op te slaan. Je kunt key-value-paren toevoegen met de Consul CLI of de web-UI.

Om een key-value-paar op te slaan via de CLI, voer je de volgende commando uit:

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

Dit is wat deze opdracht doet:

  • -it – Start een interactieve terminal vanaf het lokale systeem naar de container.
  • consul kv put – Het kv put-commando schrijft de gegevens naar de opgegeven KV-opslagpad.
  • config/db_host – Pad om de waarde op te slaan.
  • 192.168.1.100 – Waarde.

Met de Web UI,

  1. Ga naar de Consul-UI (http://localhost:8500).
  2. Klik op de tab “Key/Value”.
  3. Maak een nieuwe sleutel aan door op “Create” te klikken.
  4. Voer de sleutel (bijv. config/db_host) en de waarde (bijv. 192.168.1.100) in.

Deze commando’s en acties slaan kritieke configuratiegegevens op die uw services dynamisch kunnen accessen tijdens runtime.

Stap 6 — Ophalen van Key-Value Paren

Als je enkele KV-paren hebt opgeslagen, wil je ze ophalen om te controleren of ze correct zijn opgeslagen.

Met de CLI, ophalen een waarde met het volgende commando:

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

Met de Web UI,

  1. Ga naar de “Key/Value”-tab in de Consul UI.
  2. Vind de sleutel die u heeft aangemaakt en klik op deze om het opgeslagen waarden te zien.

Het ophalen van de KV-paren is een noodzakelijke stap om te verifiëren dat uw data correct wordt opgeslagen en toegankelijk is.

Stap 7 — Persisteren van gegevens met behulp van Docker volumes

Standaard zijn Docker containers tijdelijk, wat betekent dat elke gegevens die binnenin ze worden opgeslagen verloren gaat als de container wordt verwijderd. Om uw Consul KV-gegevens aan te houden, moet u Docker volumes gebruiken.

  1. Stop en verwijder het huidige Consul-container:
docker stop consul-server 
docker rm consul-server 

Controleer nu de containers en u zou kunnen opmerken dat het Consul-container niet meer actief is.

docker ps 
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

2.Start een nieuw Consul-container met een aangekoppeld Docker volume:

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

De optie -v consul_data:/consul/data monteert een Docker volume op het container, waardoor uw KV-opslag over containerherstarten blijft bestaan.

Stap 9 — Automatiseren van Consul opstarten (optioneel)

Voor productie-uitvoeringen zou je misschien willen automatiseren het opstarten van uw Consul-container met Docker Compose. Docker Compose simplificeert multi-container Docker-toepassingen en maakt het gemakkelijker om services te beheren.

Maak een bestand docker-compose.yml met het volgende inhoud:

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:

Voer dan de volgende opdracht uit:

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

Deze opdracht start Consul automatisch en zorgt ervoor dat het herstart als het mislukt, waardoor het geschikter is voor productiegebruik.

Stap 9 — Opschonen

Eens je klaar bent met je Consul-instantie, moet je uw Docker-omgeving opschonen om resources vrij te maken.

Laat ons de Consul-container stoppen en verwijderen:

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

Als je klaar bent met Consul, kun je ook de Docker-afbeelding verwijderen:

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

Opschonen helpt bij het behoud van een schoon ontwikkelingsomgeving en zorgt ervoor dat Docker-bronnen niet onnodig worden verbruikt.

Conclusie

In deze handleiding heb je geleerd hoe je Consul’s KV-store kunt instellen en configureren met Docker. Je hebt de installatie van Docker doorgebracht, de Consul-container running gelaten, de KV-store geconfigureerd, gegevens met Docker-volumes bewaard en uw omgeving opgeschoond. Met deze stappen kun je nu Consul gebruiken om configuratiegegevens dynamisch te beheren in uw gedistribueerde systemen, door de kracht van Docker te laten werken voor gemakkelijke deployments en beheer.

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