هذا المقال متوفر ايضا على مجتمع أسس هنا
السلام عليكم ورحمة الله وبركاته. اغلب المهتمين بالحوسبة السحابية قد سمعو سابقا بمصطلح Gitops, وكيف انه يعدّ نقله نوعية بإدارة الحاويات, بدلا من ادارتها يدويا. لكن عندما نبحث عن مصطلح Gitops نجد اغلب المصادر تستخدم عن Kubernetes. لكن ماذا عن Compose؟ الذي مازال ابسط بمراحل ويكفي في العديد من الاستخدامات؟
لذلك قمت بعمل مشروع docker-compose-gitops-action, وهو Github Action يقوم بتشغيل الحاويات على الخادم عن بعد, ويسمح لك بإدارتها من داخل مستودع Git على Github. وهو يدعم استخدامات متقدمه, مثل Swarm أو رفع ملفات مرافقه للحاويه. وحتى يمكن استخدامه على خادم منزلي دون فتح منافذ بواسطة Tailscale SSH.
هل Tailscale مفتوح المصدر؟ واجهه وخادم Tailscale الرسمي ليس مفتوح المصدر, لكن كل تطبيقاتهم مفتوحة, والآن اصبحُ يدعمون تطوير Headscale بشكل رسمي, وهو خادم مهندس بشكل عكسي ليقدم كامل خِدْمَات Tailscale لكنه مفتوح المصدر و يمكن استضافته محليا, و سيدعم Tailscale SSH قريبا
تجهيز الخادم
الaction يدعم وضعين للوصول, اما SSH عادي, او Tailscale SSH فائدة Tailscale SSH الأساسية هي عدم الحاجه لفتح منافذ للوصول للخادم, بالإضافة لعدم الحاجه لإدارة مفاتيح يدويا.
ستحتاج لمستخدم له وصول لDocker دون Sudo, قد يكون مستخدم غير المستخدم الأساسي على الخادم.
تجهيز المستودع
هناك طريقتين لاستخدام الAction
مجلد لكل مشروع
يعني سيكون هناك مجلد لكل مشروع/خدمة, داخله يكون Docker-compose.yml بالإضافة الى أي ملفات إضافية مثل ملفات للإعدادات, وسيتم تشغيل الAction في حاله حصول اي تعديل داخل هذا المجلد. ولن تحتاج لتحديث كل شيء اذا تعديل لمشروع محدد فقط.
مِلَفّ واحد لكل المستودع
هذا الخِيار يناسب الخوادم صغيره. مِلَفّ Compose واحد في نصف المستودع, يحتوي كل الحاويات والشبكات المستخدمة.
استخدام الAction
أولا يجب اضافه معلومات الوصول للخادم, سواءا مفتاح SSH بصيغة PEM أو مفتاح Tailscale لاستخدامات مؤقته “ephemeral”.
ماهو مفتاح لاستخدامات مؤقته “ephemeral key” في حاله actions, عندما يتم تشغيله كل مره, يعدّ جهاز جديد وفقط يعمل مره واحد ثم يحذف. لذلك يعتبر جهاز مؤقت “ephermal node” واستخدام مفتاح مؤقت, يجعل اي جهاز يستخدم مؤقت ويحذف بعد توقفه بفترة قصيرة.
|
|
عند تعديل ملف داخل .github
او تعديل شيء داخل project
سيتم تشغيل الaction.
بما أنني فعلت upload_directory
سيقوم برفع الملفات في project
الى الخادم ثم تشغيل الحاويات من docker-compose.yml
.
اذا تريد استخدام SSH العادي, فقط استبدل tailscale_ssh: true
:
|
|
وعين القيم في صفحه القيم السرية في Github.
اذا تحتاج لإصلاح الصلاحيات الخاصة بالملفات قبل تشغيل الحاوية, بإمكانك استخدام post_upload_command
, لكن تغيير صلاحيات الملفات معظم الوقت يحتاج لsudo
.
أدارة كلمات المرور والقيم السرية في ملفات compose
عندما يحتوي مِلَفّ docker-compose.yml على قيم سرية مثل كلمة مرور قاعدة بيانات, يجب عدم رفعها لمستودع git لعدم كشفها. الحل بهذه الحالة استخدام متغيرات النظام, و اخذ قيمها من خزينه اسرار github.
لا تحدد قيمة للمتغير داخل مِلَفّ compose
|
|
حدد القيمة في github actions
|
|
والآن من المفترض ان يصبح كل شيء جاهز!, اصبح لديك Gitops مع Docker-compose!