كيفية تكوين Consul KV باستخدام Docker

التقديم

Consul من HashiCorp هو أداة متنوعة تقوم بمجموعة من الوظائف في بيئة DevOps حديثة. يتم استخدامها بشكل واسع لإيجاد الخدمات، والفحوصات الصحيحة، والتوزيع المتوزع، وعلى وجه الخصوص ، كمتجر توزيعي للمفاتيح (KV). قاعدة المفاتيح KV في Consul مناسبة لتخزين البيانات التعريفية الحالية، والعلامات التجارية، والأسرار، والمعلومات الوصفية بطريقة متاحة بالغة ومتوافرة عبر بنية التحكم التي يمكن أن يتم الوصول إليها بالفعل من خلال الخدمات في نظام توزيعي. إستخدام Docker لتكوين قاعدة KV في Consul يتيح إنشاء وإعداد سريع وبيئات منعزلة، مما يجعله مناسبًا للاختبار والتطوير.

سيقوم هذا الدرس التعليمي بتوجيهك خلال عملية تكوين وتكوين KV في Consul بواسطة Docker. وبناءً على هذا، سيكون لديك نسخة تشتغل بالكامل من Consul التي تعمل في Docker، مع أزواج KV المضمنة وقابلة للوصول. هذه ال configuración أساسية للتكوين الخام الخاص بالخدمات وإدارة الحالة في أنظمة توزيعية.

المقادير المطلوبة

قبل بدء العملية، تأكد من وجود التالي:

  • حساب مع DigitalOcean Cloud.
  • خوادم تشتمل على أوبونتو ومستخدم غير رئيسي بموارد التفويض المرشحة وجهاز إحتواء ناجم. لتوجيهات عن كيفية إنشاء هذا، رجاء إختيار توزيعك من هذه القائمة وتتبع دراسة بدائلك الأولية للخوادم الجديدة. يمكنك أيضًا أن تتأكد من أن تعمل بالنسخة المدعومة المناسبة من Ubuntu.
  • تثبيت Docker على دولتك الخاصة بأوبونتو. يرجى تتبع دراسة هذه الدراسة التعليمية عن كيفية تثبيت واستخدام Docker في Ubuntu.
  • معرفة جيدة بخطوات الشريط الأولي لللينكس. إذا كان لديك توعية أو تجديد للشريط الأولي، يمكنك الذهاب إلى هذه الدليلة التعليمية عن معرفة الخطوات الأولي لللينكس.
  • معرفة بدرجة أولية عن أوامر Docker وإدارة البحوث.

خطوة 1 — سحب صورة Consul Docker الرسمية

دعونا نسحب صورة المُدير الرسمي ل 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 الويب للConsul وقناة الAPI إلى الماحول.
  • -p 8600:8600/udp يربط قناة خدمة التحكم في التعرف الخاصة.

هذه الخطوة أساسية لأنها توفر خدمة الConsul الجوهرية التي ستستخدم لتكوين متجر الـKV.

خطوة 3 — تحقيق التثبيت المتعلق بتثبيت الConsul

لضمان أن الConsul يجري بالطريقة الصحيحة، يتوجب عليك تحقيق حالة الحاجز والوصول إلى الUI الخاص بالConsul.

أولاً، قم بتشغيل docker ps لتعرف على جميع الcontainers التي تعمل وتأكد من أن الcontainer المتعلق ب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.

هذه الخطوة التحقيقية مهمة للتأكد من أن نسخ الحالة الخاصة بinstance الخاصة بConsul تعمل بدون أي مشاكل قبل تخزين البيانات في المتجر الرئيسي (خطوة 5).

خطوة 4 — تكوين النانو (إختياري)

إذا كان يتوجب عليك توفير الوصول إلى instance الخاصة بConsul من خارج (مثلاً، من أعضاء المجموعات في مجموعة), يتوجب عليك تغيير إعدادات قواعد الحواسيب لتسمح للمرور في الأنقاب الضرورية.

على سبيل المثال، إذا كنت تجري Consul في تطبيق سحابي، قد تحتاج إلى تسمية المرور الداخلي على الأنقاب 8500 (API HTTP) و8600 (DNS). ستختلف الأوامر الخاصة وفقاً لحلول القواعد التي تستخدم (UFW، iptables وهلم جرا).

هذه الخطوة تتأكد من أن نسخ instance الخاصة بConsul قابل للوصول من آلاف الآلات، وهو أمر ضروري للتكوينات المتوزعة.

خطوة 5 — تخزين أزواج المفاتيح

بعد تشغيل Consul، يمكنك الآن استخدام مخزن KV لتخزين بيانات الإعدادات. يمكنك إضافة أزواج الключ-القيمة باستخدام Consul CLI أو الواجهة الويب.

لتخزين جفرة الключ-القيمة عن طريق 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. انقر على تبويب “المفتاح/القيمة”.
  3. أنشئ مفتاح جديد بالنقر على “إنشاء”.
  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. اذهب الى لوحة التحكم في Consul الإفتراضية إلى لوحة “المفاتيح/القيم”.
  2. ابحث عن المفتاح الذي قمت بإنشائه وانقر عليه لرؤية القيمة المتخزنة.

جمع مقارنات KV التي هي خطوة ضرورية لتأكد من أن بياناتك تتخزن بشكل صحيح وقابلة للAcces.

خطوة 7 — إبقاء البيانات باستخدام قاعدات Docker

بشكل افتراضي، قارورات Docker مؤقتة، مما يعني أن أي بيانات تتخزن فيها ستخسر إذا تم إزالة القارورة. لتأمين بيانات Consul KV المتخزنة، يجب أن تستخدم قواعد Docker.

  1. أوقف وأزل القارورة الحالية للConsul:
docker stop consul-server 
docker rm consul-server 

الآن ، قم بتفقد القارورات ويجب أن تلاحظ أن قارورة Consul لم تعد تعمل.

docker ps 
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

2. قم بتشغيل قارورة Consul جديدة مع قاعدة 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 إلى القارورة ، متأكدًا من أن ستون KV تبقى متخزنة عبر إعادات بدء القارورة.

خطوة 8 — تلقيح بدء الConsul تلقائيًا (خياري)

للتنمية المواجهة قد ترغب في تلبية البدء بجهاز ال Consul باستخدام Docker Compose. يجعل Docker Compose التطبيقات المتعددة الحزم ب Docker أبسط ويسهل إدارة الخدمات.

قم بإنشاء ملف 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 لا تستهلك بشكل غير ضروري.

الختام

في هذا التورية، تعلمت كيفية إعداء وإعداد متجر المعايير Consul باستخدام Docker. قمت بتثبيت Docker، تشغيل الحاجز الخاص بConsul، تكوين المتجر المتفاعل، توفير البيانات مع Docker الأجسام، وتنظيف بيئتك. مع هذه الخطوات، يمكنك أن تستخدم الConsul الآن لإدارة بيانات الإعدادات في أنظمتك الموزعة بشكل ديناميكي، تسخر من قوة Docker للتنفيذ السهل وإدارة.

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