تكوين Spring Cloud Config Server مدار في Azure Spring Apps

ملاحظة

يعد Azure Spring Apps هو الاسم الجديد الخاص بخدمة Azure Spring Cloud. وعلى الرغم من أن الخدمة تحمل اسماً جديداً، فسترى الاسم القديم في بعض الأماكن لفترة من الوقت بينما نعمل على تحديث الأصول مثل لقطات الشاشة ومقاطع الفيديو والرسوم التخطيطية.

تنطبق هذه المقالة على: ✔️ Java ✔️ C#‎

تنطبق هذه المقالة على: ✔️ المستوى الأساسي/القياسي ❌ مستوى المؤسسة

توضح لك هذه المقالة كيفية تكوين Spring Cloud Config Server مدار في خدمة Azure Spring Apps.

يوفر Spring Cloud Config Server الدعم من جانب الخادم والعميل لتكوين خارجي في نظام موزع. يوفر مثيل Config Server مكاناً مركزياً لإدارة الخصائص الخارجية للتطبيقات عبر جميع البيئات. لمزيد من المعلومات، راجع وثائق تكوين Spring Cloud.

المتطلبات الأساسية

تقييد

هناك بعض القيود عند استخدام Config Server مع واجهة Git الخلفية. يتم إدخال الخصائص التالية تلقائيا في بيئة التطبيق الخاصة بك للوصول إلى Config Server وService Discovery. إذا قمت أيضاً بتكوين هذه الخصائص من ملفات Config Server، فقد تواجه تعارضات وسلوكاً غير متوقع.

eureka.client.service-url.defaultZone
eureka.client.tls.keystore
eureka.instance.preferIpAddress
eureka.instance.instance-id
server.port
spring.cloud.config.tls.keystore
spring.application.name
spring.jmx.enabled

تنبيه

لا تضع هذه الخصائص في ملفات تطبيق Config Server.

إنشاء ملفات Config Server

Azure Spring Apps تدعم كلاً من Azure DevOps، وGitHub، وGitLab، وBitbucket لتخزين ملفات Config Server. عندما يكون المستودع الخاص بك جاهزا، يمكنك إنشاء ملفات التكوين وتخزينها هناك.

تتوفر بعض الخصائص القابلة للتكوين فقط لبعض الأنواع. تصف الأقسام التالية خصائص كل نوع مستودع.

ملاحظة

يأخذ master خادم التكوين (على Git) كتسمية افتراضية إذا لم تحدد واحدة. ومع ذلك، قام GitHub مؤخرا بتغيير الفرع الافتراضي من master إلى main. لتجنب فشل Config Server لـ Azure Spring Apps، تأكد من الانتباه إلى التسمية الافتراضية عند إعداد Config Server مع GitHub، خاصة للمستودعات التي تم إنشاؤها حديثاً.

Public repository

عند استخدام مستودع عام، تكون خصائصك القابلة للتكوين محدودة أكثر من المستودع الخاص.

يسرد الجدول التالي الخصائص القابلة للتكوين التي يمكنك استخدامها لإعداد مستودع Git عام.

ملاحظة

يعد استخدام واصلة (-) لفصل الكلمات بمثابة اصطلاح التسمية الوحيد المعتمد حالياً. على سبيل المثال، يمكنك استخدام default-label، ولكن ليس defaultLabel.

الخاصية مطلوب الميزة
uri نعم عنوان URI لمستودع Git المستخدم كواجهة خلفية لخادم التكوين. يجب أن تبدأ ب http://أو git@https://.ssh://
default-label لا التسمية الافتراضية لمستودع Git. يجب أن يكون اسم الفرع أو اسم العلامة أو معرف الالتزام للمستودع.
search-paths لا صفيف من السلاسل المستخدمة للبحث عن الدلائل الفرعية لمستودع Git.

مستودع خاص مع مصادقة SSH

يسرد الجدول التالي الخصائص القابلة للتكوين التي يمكنك استخدامها لإعداد مستودع Git خاص باستخدام SSH.

ملاحظة

يعد استخدام واصلة (-) لفصل الكلمات بمثابة اصطلاح التسمية الوحيد المعتمد حالياً. على سبيل المثال، يمكنك استخدام default-label، ولكن ليس defaultLabel.

الخاصية مطلوب الميزة
uri نعم عنوان URI لمستودع Git المستخدم كواجهة خلفية لخادم التكوين. يجب أن تبدأ ب http://أو git@https://.ssh://
default-label لا التسمية الافتراضية لمستودع Git. يجب أن يكون اسم الفرع أو اسم العلامة أو معرف الالتزام للمستودع.
search-paths لا صفيف من السلاسل المستخدمة للبحث عن الدلائل الفرعية لمستودع Git.
private-key لا المفتاح الخاص SSH للوصول إلى مستودع Git. مطلوب عند بدء URI ب git@ أو ssh://.
host-key لا مفتاح المضيف لخادم مستودع Git. يجب ألا تتضمن بادئة الخوارزمية كما يغطيها host-key-algorithm.
host-key-algorithm لا خوارزمية مفتاح المضيف. يجب أن يكون ssh-dss أو ssh-rsa أو ecdsa-sha2-nistp256 أو ecdsa-sha2-nistp384 أو ecdsa-sha2-nistp521. مطلوب فقط إذا كان host-key موجوداً.
strict-host-key-checking لا يشير إلى ما إذا كان مثيل Config Server سيفشل في البدء عند استخدام host-key الخاص. يجب أن يكون true (قيمة افتراضية) أو false.

ملاحظة

لا يدعم خادم التكوين توقيعات SHA-2 حتى الآن. حتى تتم إضافة الدعم، استخدم توقيعات SHA-1 أو المصادقة الأساسية بدلا من ذلك.

مستودع خاص مع المصادقة الأساسية

يسرد الجدول التالي الخصائص القابلة للتكوين التي يمكنك استخدامها لإعداد مستودع Git خاص مع المصادقة الأساسية.

ملاحظة

يعد استخدام واصلة (-) لفصل الكلمات بمثابة اصطلاح التسمية الوحيد المعتمد حالياً. على سبيل المثال، استخدم default-label، وليس defaultLabel.

الخاصية مطلوب الميزة
uri نعم عنوان URI لمستودع Git المستخدم كواجهة خلفية لخادم التكوين. يجب أن تبدأ ب http://أو git@https://.ssh://
default-label لا التسمية الافتراضية لمستودع Git. يجب أن يكون اسم الفرع أو اسم العلامة أو معرف الالتزام للمستودع.
search-paths لا صفيف من السلاسل المستخدمة للبحث عن الدلائل الفرعية لمستودع Git.
username لا اسم المستخدم المستخدم للوصول إلى خادم مستودع Git. مطلوب عندما يدعم خادم مستودع Git مصادقة HTTP الأساسية.
password لا كلمة المرور أو رمز الوصول الشخصي المستخدم للوصول إلى خادم مستودع Git. مطلوب عندما يدعم خادم مستودع Git مصادقة HTTP الأساسية.

ملاحظة

تدعم العديد من خوادم مستودع Git استخدام الرموز المميزة بدلا من كلمات المرور لمصادقة HTTP الأساسية. تسمح بعض المستودعات بالاحتفاظ بالرموز المميزة إلى أجل غير مسمى. ومع ذلك، تفرض بعض خوادم مستودع Git، بما في ذلك Azure DevOps Server، صلاحية الرموز المميزة في غضون ساعات قليلة. يجب ألا تستخدم المستودعات التي تتسبب في انتهاء صلاحية الرموز المميزة المصادقة المستندة إلى الرمز المميز مع Azure Spring Apps.

قام GitHub بإزالة دعم مصادقة كلمة المرور، لذلك ستحتاج إلى استخدام رمز وصول شخصي مميز بدلاً من مصادقة كلمة المرور لـ GitHub. لمزيد من المعلومات، راجع متطلبات مصادقة الرمز المميز لعمليات Git.

مستودعات Git الأخرى

يسرد الجدول التالي الخصائص القابلة للتكوين التي يمكنك استخدامها لإعداد مستودعات Git باستخدام نمط.

ملاحظة

يعد استخدام واصلة (-) لفصل الكلمات بمثابة اصطلاح التسمية الوحيد المعتمد حالياً. على سبيل المثال، استخدم default-label، وليس defaultLabel.

الخاصية مطلوب الميزة
repos لا خريطة تتكون من إعدادات مستودع Git باسم معين.
repos."uri" نعم في repos URI لمستودع Git المستخدم كواجهة خلفية لخادم التكوين. يجب أن تبدأ ب http://أو https://أو git@أو .ssh://
repos."name" نعم في repos اسم لتعريف المستودع؛ على سبيل المثال، team-A أو team-B. مطلوب فقط إذا كان repos موجوداً.
repos."pattern" لا صفيف من السلاسل المستخدمة لمطابقة اسم التطبيق. لكل نمط، استخدم تنسيق {application}/{profile} مع أحرف البدل.
repos."default-label" لا التسمية الافتراضية لمستودع Git. يجب أن يكون اسم الفرع أو اسم العلامة أو تثبيت IOD للمستودع.
repos."search-paths" لا صفيف من السلاسل المستخدمة للبحث عن الدلائل الفرعية لمستودع Git.
repos."username" لا اسم المستخدم المستخدم للوصول إلى خادم مستودع Git. مطلوب عندما يدعم خادم مستودع Git مصادقة HTTP الأساسية.
repos."password" لا كلمة المرور أو رمز الوصول الشخصي المستخدم للوصول إلى خادم مستودع Git. مطلوب عندما يدعم خادم مستودع Git مصادقة HTTP الأساسية.
repos."private-key" لا المفتاح الخاص SSH للوصول إلى مستودع Git. مطلوب عند بدء URI ب git@ أو ssh://.
repos."host-key" لا مفتاح المضيف لخادم مستودع Git. يجب ألا تتضمن بادئة الخوارزمية كما يغطيها host-key-algorithm.
repos."host-key-algorithm" لا خوارزمية مفتاح المضيف. يجب أن يكون ssh-dss أو ssh-rsa أو ecdsa-sha2-nistp256 أو ecdsa-sha2-nistp384 أو ecdsa-sha2-nistp521. مطلوب فقط إذا كان host-key موجوداً.
repos."strict-host-key-checking" لا يشير إلى ما إذا كان مثيل Config Server سيفشل في البدء عند استخدام host-key الخاص. يجب أن يكون true (قيمة افتراضية) أو false.

يعرض الجدول التالي بعض الأمثلة على أنماط تكوين الخدمة باستخدام مستودع إضافي اختياري. لمزيد من المعلومات، راجع قسم المستودعات الإضافية وقسممطابقة الأنماط والمستودعات المتعددة في وثائق Spring.

الأنماط الوصف
test-config-server-app-0/* يطابق نمط ومستودع URI تطبيق Spring boot المسمى test-config-server-app-0 مع أي ملف تعريف.
test-config-server-app-1/dev يطابق نمط ومستودع URI تطبيق Spring boot المسمى test-config-server-app-1 بملف تعريف التطوير.
test-config-server-app-2/prod يطابق نمط ومستودع URI تطبيق Spring boot المسمى test-config-server-app-2 بملف تعريف prod.

لقطة شاشة لمدخل Microsoft Azure تعرض صفحة خادم التكوين مع تمييز عمود الأنماط في جدول

إرفاق مستودع Config Server بـ Azure Spring Apps

الآن بعد أن تم حفظ ملفات التكوين الخاصة بك في مستودع، استخدم الخطوات التالية لتوصيل Azure Spring Apps بالمستودع.

  1. تسجيل الدخول إلى ⁧⁩مدخل Microsoft Azure⁧⁩.

  2. انتقل إلى صفحة Azure Spring Apps نظرة عامة.

  3. حدد Config Server في جزء التنقل الأيمن.

  4. في قسم المخزن الافتراضي، قم بتعيين محدد موقع الويب لـ https://github.com/Azure-Samples/piggymetrics-config.

  5. حدِّد تحقق من الصحة.

    لقطة شاشة لمدخل Microsoft Azure تعرض صفحة خادم التكوين.

  6. عند اكتمال عملية التحقق، حدد التطبيق لحفظ التغييرات.

    لقطة شاشة لمدخل Microsoft Azure تعرض صفحة خادم التكوين مع تمييز الزر Apply.

يمكن أن تأخذ عملية تحديث التكوين بضع دقائق. يجب أن تتلقى إعلاماً عند اكتمال التكوين.

أدخل معلومات المستودع مباشرة إلى مدخل Azure

يمكنك إدخال معلومات المستودع للمستودع الافتراضي، واختياريا، للمستودعات الإضافية.

المستودع الافتراضي

استخدم الخطوات الواردة في هذا القسم لإدخال معلومات المستودع لمستودع عام أو خاص.

  • المستودع العام: في قسم المستودع الافتراضي، في المربع عنوان Uri، الصق عنوان URI للمستودع. أدخل التكوين لإعداد التسمية . تأكد من أن إعداد المصادقةعام، ثم حدد تطبيق.

  • المستودع الخاص: تدعم Azure Spring Apps المصادقة الأساسية المستندة إلى كلمة المرور/الرمز المميز وSSH.

    • المصادقة الأساسية: في قسم المستودع الافتراضي ، في مربع Uri ، الصق URI للمستودع، ثم حدد الإعداد ضمن المصادقة لفتح جزء تحرير المصادقة . في القائمة المنسدلة نوع المصادقة ، حدد HTTP Basic، ثم أدخل اسم المستخدم وكلمة المرور/الرمز المميز لمنح حق الوصول إلى Azure Spring Apps. حدد موافق، ثم حدد تطبيق لإنهاء إعداد مثيل Config Server.

    لقطة شاشة لقسم المستودع الافتراضي تعرض إعدادات المصادقة للمصادقة الأساسية.

    ملاحظة

    تدعم العديد من خوادم مستودع Git استخدام الرموز المميزة بدلا من كلمات المرور لمصادقة HTTP الأساسية. تسمح بعض المستودعات بالاحتفاظ بالرموز المميزة إلى أجل غير مسمى. ومع ذلك، تفرض بعض خوادم مستودع Git، بما في ذلك Azure DevOps Server، صلاحية الرموز المميزة في غضون ساعات قليلة. يجب ألا تستخدم المستودعات التي تتسبب في انتهاء صلاحية الرموز المميزة المصادقة المستندة إلى الرمز المميز مع Azure Spring Apps.

    قام GitHub بإزالة دعم مصادقة كلمة المرور، لذلك ستحتاج إلى استخدام رمز وصول شخصي مميز بدلاً من مصادقة كلمة المرور لـ GitHub. لمزيد من المعلومات، راجع متطلبات مصادقة الرمز المميز لعمليات Git.

    • SSH: في قسم المستودع الافتراضي ، في مربع Uri ، الصق URI للمستودع، ثم حدد الإعداد ضمن المصادقة لفتح جزء تحرير المصادقة . في جزء تحرير المصادقة ، في القائمة المنسدلة نوع المصادقة ، حدد SSH، ثم أدخل المفتاح الخاص بك. اختياريا، حدد مفتاح المضيف وخوارزمية مفتاح المضيف. قم بتضمين المفتاح العام في مستودع Config Server. حدد موافق، ثم حدد تطبيق لإنهاء إعداد مثيل Config Server.

    لقطة شاشة لقسم المستودع الافتراضي تعرض إعدادات المصادقة لمصادقة SSH.

مستودعات إضافية

إذا كنت ترغب في تكوين الخدمة باستخدام مستودع إضافي اختياري، فحدد إعدادات Uriوالمصادقة كما فعلت للمستودع الافتراضي. تأكد من تضمين إعداد الاسم للنمط الخاص بك، ثم حدد تطبيق لإرفاقه إلى المثيل الخاص بك.

إدخال معلومات المستودع في ملف YAML

إذا كتبت ملف YAML مع إعدادات المستودع، يمكنك استيراد الملف مباشرة من جهازك المحلي إلى Azure Spring Apps. يوضح المثال التالي ملف YAML بسيطا لمستودع خاص مع مصادقة أساسية.

spring:
    cloud:
        config:
            server:
                git:
                    uri: https://github.com/azure-spring-cloud-samples/config-server-repository.git
                    username: <username>
                    password: <password/token>

حدد الزر استيراد الإعدادات، ثم حدد ملف YAML من دليل المشروع. حدد "Import".

لقطة شاشة لجزء إعدادات استيراد خادم التكوين.

تعرض asyncالإعلامات عملية. يجب أن يبلغ خادم التكوين عن النجاح بعد 1-2 دقيقة. يتم عرض المعلومات من ملف YAML في مدخل Microsoft Azure. حدد تطبيق لإنهاء الاستيراد.

استخدام Azure Repos لتكوين Azure Spring Apps

يمكن لـ Azure Spring Cloud الوصول إلى مستودعات Git العامة، أو التي تم تأمينها بواسطة SSH، أو التي تم تأمينها باستخدام المصادقة الأساسية لـ HTTP. مصادقة HTTP الأساسية هي أسهل الخيارات لإنشاء وإدارة المستودعات باستخدام Azure Repos.

الحصول على عنوان URL وبيانات اعتماد المستودع

استخدم الخطوات التالية للحصول على عنوان URL وبيانات اعتماد المستودع.

  1. في «مدخل مستودع Azure» لمشروعك، حدد الزر استنساخ:

  2. انسخ عنوان URL المستنسخ من مربع النص. سيكون عنوان URL هذا عادة في النموذج التالي:

    https://<organization name>@dev.azure.com/<organization name>/<project name>/_git/<repository name>
    

    قم بإزالة كل شيء بعد https:// وقبل dev.azure.com، بما في @ ذلك الرمز. يجب أن يكون عنوان URL الناتج في النموذج التالي:

    https://dev.azure.com/<organization name>/<project name>/_git/<repository name>
    

    احفظ عنوان URL هذا للاستخدام في القسم التالي.

  3. حدد Generate Git Credentials لعرض اسم مستخدم وكلمة مرور، والتي يجب حفظها للاستخدام في القسم التالي.

تكوين Azure Spring Apps للوصول إلى مستودع Git

  1. تسجيل الدخول إلى ⁧⁩مدخل Azure⁧⁩.

  2. انتقل إلى صفحة Azure Spring Apps نظرة عامة.

  3. حدد الخدمة المراد تكوينها.

  4. في الجزء الأيمن من صفحة الخدمة ضمن Settings، حدد علامة التبويب Config Server . تكوين المستودع الذي أنشأته، كما يلي:

    • أضف URI للمستودع الذي حفظته في القسم السابق.
    • حدد الإعداد ضمن المصادقة لفتح جزء تحرير المصادقة .
    • بالنسبة لنوع المصادقة، حدد HTTP Basic.
    • بالنسبة إلى اسم المستخدم، حدد اسم المستخدم الذي حفظته في القسم السابق.
    • بالنسبة إلى كلمة المرور، حدد كلمة المرور التي حفظتها في القسم السابق.
    • حدد موافق، ثم انتظر حتى تكتمل العملية.

    لقطة شاشة لإعدادات تكوين المستودع.

حذف التكوين

حدد إعادة تعيين في علامة التبويب خادم التكوين لمسح الإعدادات الموجودة. احذف إعدادات خادم التكوين إذا كنت تريد توصيل مثيل خادم التكوين بمصدر آخر، مثل عندما تنتقل من GitHub إلى Azure DevOps.

تحديث Config Server

عند تغيير الخصائص، يجب إعلام الخدمات التي تستهلك هذه الخصائص قبل إجراء التغييرات. الحل الافتراضي لخادم تكوين Spring Cloud هو تشغيل حدث التحديث يدويا، والذي قد لا يكون ممكنا إذا كان هناك العديد من مثيلات التطبيق. لمزيد من المعلومات، راجع التكوين المركزي

بدلا من ذلك، يمكنك تحديث القيم تلقائيا من خادم التكوين عن طريق السماح لاستطلاع عميل التكوين للتغييرات استنادا إلى تحديث داخلي. استخدم الخطوات التالية لتحديث القيم تلقائيا من خادم التكوين.

  1. سجل مهمة مجدولة لتحديث السياق في فاصل زمني معين، كما هو موضح في المثال التالي.

    @ConditionalOnBean({RefreshEndpoint.class})
    @Configuration
    @AutoConfigureAfter({RefreshAutoConfiguration.class, RefreshEndpointAutoConfiguration.class})
    @EnableScheduling
    public class ConfigClientAutoRefreshConfiguration implements SchedulingConfigurer {
        @Value("${spring.cloud.config.refresh-interval:60}")
        private long refreshInterval;
        @Value("${spring.cloud.config.auto-refresh:false}")
        private boolean autoRefresh;
        private RefreshEndpoint refreshEndpoint;
        public ConfigClientAutoRefreshConfiguration(RefreshEndpoint refreshEndpoint) {
            this.refreshEndpoint = refreshEndpoint;
        }
        @Override
        public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
            if (autoRefresh) {
                // set minimal refresh interval to 5 seconds
                refreshInterval = Math.max(refreshInterval, 5);
                scheduledTaskRegistrar.addFixedRateTask(() -> refreshEndpoint.refresh(), refreshInterval * 1000);
            }
        }
    }
    
  2. تمكين التحديث التلقائي وتعيين الفاصل الزمني للتحديث المناسب في ملف application.yml الخاص بك. في المثال التالي، يتم استقصاء العميل للتهيئة كل 60 ثانية، وهو الحد الأدنى للقيمة التي يمكنك تعيينها للفاصل الزمني للتحديث.

    بشكل افتراضي، يتم تعيين التحديث التلقائي إلى خطأ ويتم تعيين الفاصل الزمني للتحديث إلى 60 ثانية.

    spring:
        cloud:
             config:
              auto-refresh: true
              refresh-interval: 60
    management:
        endpoints:
             web:
              exposure:
                include:
                  - refresh
    
  3. أضف @RefreshScope في التعليمات البرمجية لديك. في المثال التالي، يتم تحديث المتغير connectTimeout تلقائيا كل 60 ثانية.

    @RestController
    @RefreshScope
    public class HelloController {
        @Value("${timeout:4000}")
        private String connectTimeout;
    }
    

لمزيد من المعلومات، راجع عينة config-client-polling.

الخطوات التالية

في هذه المقالة، تعلمت كيفية تمكين وتكوين مثيل Spring Cloud Config Server. لمعرفة المزيد حول إدارة تطبيقك، راجع توسيع نطاق تطبيق في Azure Spring Apps.