איך להגדיר Consul KV עם Docker

קדמה

Consul מלפנים HashiCorp הוא כלי גמיש שמשמש למספר תפקידים בסביבת DevOps מודרנית. הוא משמש בשימוש רחב לגילוי שרותים, בדיקות בריאות, שיווק עומס ובעיקר, כמחסנין מפוזר למפתח-ערך (KV). המחסן KV ב-Consul הוא מושלם לאחסן נתוני הגדרות דינמיים, דגלי תכונות, סודות ומידע מטה בדרך בהירה, עם זמינות גבוהה ועקבייתית ברשת התשתית שלך, כך שניתן לגשת אליהם באופן דינמי על ידי שרותים במערכת המפוזרת. שימוש ב-Docker כדי להגדיר את מחסני KV של Consul מאפשר עיצוב מהיר וסביבות מבודדות, מה שהופך אותו למתאים ביותר לבדיקות ופיתוח.

המדריך הזה ינחץ אתך דרך תהליך ההקמה וההגדרה של מחסן KV של Consul בעזרת Docker. בסוף, תהיה לך מופע Consul מוכן לשימוש ב-Docker, עם זוגות KV הוגדרים ונגישים. ההגדרה הזו היא מהותית להגדרה דינמית של שרותים וניהול מצב במערכות מפוזרות.

הנדסות קדם

לפני שתתחיל, וודא שיש לך את הדברים הבאים:

  • חשבון Cloud DigitalOcean.
  • שרת מופעל בעזרת Ubuntu ומשתמש לא-ראשי עם רשיונות sudo ומערך הגדלה פעיל. עבור הוראות על איך להגדיר את זה, בבקשה בחרו את ההפצה שלכם מרשימה זו ועבדו אחר הוראת ההגדרה הראשונית של השרת. תוודאו שתעבדו עם גירסה מסupported של Ubuntu.
  • Docker מותקן על השרת שלכם ב Ubuntu Droplet. בבקשה עבדו אחר הוראת הדיוק הזו על איך להתקין ולהשתמש ב Docker על Ubuntu.
  • מומחיות בשולחן הפקודות של Linux. עבור התחלה או השינוי הזה, תוכלו לבקר במדריך הזה על השולחן הפקודות של Linux.
  • ידע בסיסי על הפקודות של Docker וניהול התאים.

שלב 1 — משך התמונה של התא של Consul

בואו נמשך את התמונה הרשמית של Consul מ Docker Hub. התמונה הזו נשלטת על ידי HashiCorp וכוללת את כל מה שצריך להפעיל את Consul.

כנסו לקונסול של השרת שלכם והריצו:

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

שלב 2 — הרצת קונטיינר ה-Consul

עכשיו שהתמונה של Consul נוצרה, אתה יכול להתחיל קונטיינר חדש של Consul. קונטיינר זה ישרת כשרת Consul ויאפשר לך לתקשר עם KV האחסון.

כדי להתחיל את הקונטיינר, רץ:

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

זה מה שפקודה זו עושה:

  • -d מריץ את הקונטיינר במצב מנותק (ברקע).
  • --name=consul-server מקבל על הקונטיינר שם.
  • -e CONSUL_BIND_INTERFACE=eth0 מגדיר את המנשק הרשת שConsul יצטרך להכנס אליו. זה הכרחי לתקשורת רשת נכונה.
  • -p 8500:8500 ממפה את פורט ה-UI וה-API של Consul למארח.
  • -p 8600:8600/udp ממפה את פורט השרות DNS לגילוי שרותים.

שלב זה חשוב מאד כיוון שהוא מתקין את שרות ה-Consul המרכזי, שאתה תשתמש בו כדי להגדיר את KV האחסון.

שלב 3 — בדיקת התקנת Consul

כדי לוודא שConsul רץ כראוי, אתה צריך לוודא את מצב הקונטיינר ולגשת ל-UI של Consul.

ראשית, רץ docker ps כדי לרשום את כל העיסקאות המופעלים ולבדוק שהעיסקאות המופעלים של Consul מסתדרים.

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

עכשיו, בדוק אם Consul נגיש, פתח דפדפן אינטרנטי, ועבר לhttp://localhost:8500. אתה צריך לראות את המסך המשנה של Consul.

שלב זה חשוב לאמת שהמיקום שלך של Consul מסתדר ללא בעיות לפני שירים במאגר KV (שלב 5).

שלב 4 — הגדרת המחסה (באופציה)

אם המיקום שלך של Consul צריך להיות נגיש מבחוץ (לדוגמה, מן הנודדים במערכת קלט), עליך לשנות את הגדרות המחסה שלך כדי לאפשר תנועה בפורטים הנחוצים.

לדוגמה, אם אתה מפעיל את Consul על מיקום סייבר מערכת על, אתה עלול להיות צריך לאפשר תנועה קדם בפורט 8500 (API HTTP) ו8600 (DNS). הפקטים הספציפיים ישנים בהתאם לפתרונות המחסה שלך (UFW, iptables וכדומה).

השלב הזה מובטח שהמיקום שלך של Consul נגיש ממכשירים אחרים, שהוא קריטי לתצפיות מורחבות.

שלב 5 — אחסון פעמים-מפתח

עם Consul פעיל, ניתן כעת להשתמש באוסף KV כדי לאחסן מידע תצורה. ניתן להוסיף זוגות מפתח-ערך באמצעות שורת הפקודה Consul או איזור המשתמש האינטרנטי.

כדי לאחסן זוג מפתח-ערך באמצעות הCLI, רץ:

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

זה מה שפקודה זו עושה:

  • -it – משגרת את המסוף האינטראקטיבי מהמערכת המקומית לתיבת ההרכבה.
  • consul kv put – פקודת kv put כותבת את המידע לנתיב הKV הנתון.
  • config/db_host – הנתיב לאחסן הערך.
  • 192.168.1.100 – הערך.

בשימוש באיזור המשתמש האינטרנטי,

  1. ניווט לאיזור המשתמש של Consul (http://localhost:8500).
  2. לחיצה על הלשונית “Key/Value”.
  3. יצירת מפתח חדש על ידי לחיצה על “Create”.
  4. הזנת המפתח (לדוגמה, config/db_host) והערך (לדוגמה, 192.168.1.100).

פקודות אלה ופעולות אלה מאחסנות מידע תצורה קריטי ששירותים יכולים לגשת אליו באופן דינמי בזמן הריצה.

שלב 6 — השליפה של זוגות מפתח-ערך

לאחר שאחסנת זוגות KV, תרצה להשיג אותם כדי לוודא שהם נשמרו כראוי.

באמצעות הCLI, השליפת ערך באמצעות הפקודה הבאה:

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

בשימוש באיזור המשתמש האינטרנטי,

  1. עבור הגשה ל“מפתן מפתח/ערך” במסך של קונסול.
  2. מצא את המפתן שהכינית ולחץ עליו כדי לראות את הערך האחסן.

שימור הזנים KV הוא שלב הכרחי על מנת לוודא שהמידע שלך נאחסן ונגיש בצורה נכונה.

שלב 7 — שימור מידע בעזרת תוך גודלים Docker

בהגדרה, התאים Docker הם זמניים, משמע שכל המידע שנאחסן בתוכם יאבד אם התא יוסל. כדי לשמר את המידע הקיים בקונסול KV, צריך להשתמש בגודלים Docker.

  1. עצור והסר את התא הקיים של הקונסול:
docker stop consul-server 
docker rm consul-server 

עכשיו, בחנה את התאים ותוכל להבחין שהתא של הקונסול כבר אינו ממונע.

docker ps 
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

2.בואו תא חדש של הקונסול עם גודל 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

האפשרות -v consul_data:/consul/data מותקן גודל Docker אצל התא, וזה מובטח שהמאגר הזה מידע ממשיך להישאר בעזרת התחילות התא מחדש.

שלב 8 — אוטומציית ההתחלה של הקונסול (אופציonal)

שבשימושים משלוחים, ייתכן שתרצה לאוטומט את ההפעלה של הקונטיינר של Consul באמצעות Docker Compose. Docker Compose מפשט אפליקציות דוקר מרובות קונטיינרים ומקל על ניהול שרותים.

צור קובץ docker-compose.yml עם התוכן הבא:

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:

לאחר מכן, רץ:

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

הפקודה הזו מתחילה את Consul באופן אוטומטי ומבטיחה שהוא יורץ מחדש אם הוא כשלה, כך שהוא יהיה יותר חזק לשימושים ייצוריים.

שלב 9 — הניקוי

לאחר שסיימת לעבוד עם המופע של Consul, יש לנקות את סביבת Docker שלך כדי לשחרר משאבים.

בואו נעצור ונסיר את הקונטיינר של Consul:

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

אם סיימת עם Consul, ניתן גם למחוק את הדימות של 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

הניקוי עוזר לשמור על סביבת פיתוח נקיה ולוודא שמשאבי Docker לא נצרכים בלתי צורך.

מסקנה

בהדרכה זו, למדת איך להגדיר ולהגדיר את המאגר KV של Consul בעזרת Docker. עבדת את התקנת Docker, הרצת האחריות של Consul, הגדרת המאגר KV, השמרת המידע בעזרת תאי גדלה של Docker, וניקוי הסביבה שלך. עם השלבים האלה, אתה יכול עכשיו להשתמש בConsul כדי לנהל מאגר נתונים פולי דיספקציה במערכות המופלאות שלך, מנצלת את הכוח של Docker עבור הגדלה וניהול קל.

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