إذا كنت مثل معظم الأشخاص، فمن المحتمل أنك تستخدم الموارد التي تعمل خارج مجموعتك. ربما تستخدم Taleo API لإرسال رسائل نصية أو تحليل الصور باستخدام Google Cloud Vision API.
إذا كنت تستخدم نفس نقطة نهاية الطلب من جانب الخادم في جميع البيئات الخاصة بك ولا تخطط لترحيل خوادمك إلى Kubernetes، فمن الجيد أن يكون لديك نقطة نهاية خدمة مباشرة في التعليمات البرمجية الخاصة بك. ومع ذلك، هناك العديد من السيناريوهات الأخرى لتطور الأحداث. في سلسلة أفضل ممارسات Kubernetes، ستتعلم كيفية استخدام الآليات المضمنة في Kubernetes لاكتشاف الخدمات داخل المجموعة وخارجها.
مثال على خدمة خارجية مشتركة هو قاعدة بيانات تعمل خارج مجموعة Kubernetes. على عكس قواعد البيانات السحابية مثل Google Cloud Data Store أو Google Cloud Spanner، التي تستخدم نقطة نهاية واحدة لجميع عمليات الوصول، فإن معظم قواعد البيانات لها نقاط نهاية منفصلة لظروف مختلفة.
أفضل الممارسات لاستخدام قواعد البيانات التقليدية مثل MySQL وMongoDB تعني عادةً أنك تتصل بمكونات مختلفة لبيئات مختلفة. يمكنك الحصول على جهاز كبير لبيانات الإنتاج وجهاز أصغر لبيئة الاختبار. سيكون لكل واحد منهم عنوان IP أو اسم المجال الخاص به، ولكنك ربما لن ترغب في تغيير التعليمات البرمجية الخاصة بك عند الانتقال من بيئة إلى أخرى. لذا، بدلًا من تشفير هذه العناوين بشكل صارم، يمكنك استخدام اكتشاف الخدمة الخارجية المضمنة والمعتمدة على نظام أسماء النطاقات في Kubernetes بنفس طريقة استخدام خدمات Kubernetes الأصلية.
لنفترض أنك تقوم بتشغيل قاعدة بيانات MongoDB على Google Compute Engine. سوف تظل عالقًا في هذا العالم المختلط حتى تتمكن من نقله إلى المجموعة.
لحسن الحظ، يمكنك استخدام خدمات Kubernetes الثابتة لتجعل حياتك أسهل قليلاً. في هذا المثال، قمت بإنشاء خادم MongoDB باستخدام Google Cloud Launcher. وبما أنه تم إنشاؤه على نفس الشبكة (أو مجموعة Kubernetes VPC)، فيمكن الوصول إليه باستخدام عنوان IP داخلي عالي الأداء.
هذا هو الإعداد الافتراضي على Google Cloud، لذا لا يتعين عليك تكوين أي شيء. الآن بعد أن أصبح لديك عنوان IP، فإن الخطوة الأولى هي إنشاء خدمة. قد تلاحظ أنه لا يوجد محددات قرنة لهذه الخدمة. أي أننا أنشأنا خدمة لن تعرف إلى أين نرسل حركة المرور. سيسمح لك هذا بإنشاء كائن نقطة نهاية يدويًا سيستقبل حركة المرور من هذه الخدمة.
يوضح مثال التعليمات البرمجية التالي أن نقاط النهاية تحدد عنوان IP لقاعدة البيانات باستخدام نفس اسم mongo كالخدمة.
سيستخدم Kubernetes جميع عناوين IP للعثور على نقاط النهاية كما لو كانت Kubernetes Pods عادية، لذا يمكنك الآن الوصول إلى قاعدة البيانات باستخدام سلسلة اتصال بسيطة بالاسم أعلاه mongodb://mongo. ليست هناك حاجة لاستخدام عناوين IP في التعليمات البرمجية الخاصة بك على الإطلاق.
إذا تغيرت عناوين IP في المستقبل، فيمكنك ببساطة تحديث نقاط النهاية الخاصة بك بعنوان IP الجديد ولن تحتاج تطبيقاتك إلى التعديل بأي طريقة إضافية.
إذا كنت تستخدم قاعدة بيانات مستضافة على مضيف جهة خارجية، فمن المحتمل أن يكون مالكو المضيف قد زودوك بمعرف الموارد المنتظم (URI) لمعرف الموارد الموحد للاتصال به. لذا، إذا تم إعطاؤك عنوان IP، فيمكنك ببساطة استخدام الطريقة السابقة. يوضح هذا المثال أن لدي قاعدتي بيانات MongoDB مستضافتين على مضيف mLab.
إحداهما هي قاعدة بيانات المطورين والأخرى هي قاعدة بيانات الإنتاج. تبدو سلاسل الاتصال لقواعد البيانات هذه كما يلي - يوفر لك mLab عنوان URI ديناميكيًا ومنفذًا ديناميكيًا. كما ترون، فهي مختلفة.
لاستخلاص هذا الأمر، دعنا نستخدم Kubernetes ونتصل بقاعدة بيانات المطورين. يمكنك إنشاء اسم خدمة Kubernetes خارجي، والذي سيمنحك خدمة ثابتة تقوم بإعادة توجيه حركة المرور إلى الخدمة الخارجية.
ستقوم هذه الخدمة بإجراء إعادة توجيه CNAME بسيطة على مستوى kernel بأقل تأثير على الأداء. وبفضل هذا يمكنك استخدام سلسلة اتصال أبسط.
ولكن نظرًا لأن الاسم الخارجي يستخدم إعادة توجيه CNAME، فلا يمكنه إجراء إعادة توجيه المنفذ. ولذلك، فإن هذا الحل ينطبق فقط على المنافذ الثابتة ولا يمكن استخدامه مع المنافذ الديناميكية. لكن mLab Free Tier يمنح المستخدم رقم منفذ ديناميكي افتراضيًا ولا يمكنك تغييره. هذا يعني أنك تحتاج إلى أسطر أوامر اتصال مختلفة لكل من dev وprod. الشيء السيئ هو أن هذا سيتطلب منك ترميز رقم المنفذ. إذًا كيف يمكنك تشغيل إعادة توجيه المنفذ؟
الخطوة الأولى هي الحصول على عنوان IP من URI. إذا قمت بتشغيل nslookup، أو اسم المضيف، أو اختبار اتصال URI، فيمكنك الحصول على عنوان IP لقاعدة البيانات. إذا قامت الخدمة بإرجاع عدة عناوين IP إليك، فيمكن استخدام كل هذه العناوين عند نقاط نهاية الكائن.
هناك شيء واحد يجب أخذه في الاعتبار وهو أن عناوين URI لـ IP يمكن أن تتغير دون سابق إنذار، مما يجعل استخدامها محفوفًا بالمخاطر للغاية. باستخدام عنوان IP هذا، يمكنك الاتصال بقاعدة بيانات بعيدة دون تحديد منفذ. وبالتالي، فإن خدمة Kubernetes تقوم بإعادة توجيه المنفذ بشفافية تامة.
يمنحك تعيين الموارد الخارجية أو تعيين الموارد الداخلية المرونة اللازمة لاستخدام هذه الخدمات داخل المجموعة في المستقبل مع تقليل جهود إعادة الهيكلة. كما أنه يسهل إدارة وتقديم نظرة ثاقبة للخدمات الخارجية التي تستخدمها شركتك.
على أن تستمر قريبا جدا ...
بعض الاعلانات 🙂
أشكركم على البقاء معنا. هل تحب مقالاتنا؟ تريد أن ترى المزيد من المحتوى المثير للاهتمام؟ ادعمنا عن طريق تقديم طلب أو التوصية للأصدقاء ،
Dell R730xd أرخص مرتين في مركز بيانات Equinix Tier IV في أمستردام؟ هنا فقط
المصدر: www.habr.com