التحقق قبل التثبيت

تحقق من اتصال النماذج، وبيانات الاعتماد، والشهادات، وإعدادات التكوين قبل التثبيت لتحديد مشكلات بوابة النماذج (Model Gateway) وحلها قبل نشر Bob المحلي.

قبل تثبيت Bob المحلي، تحقق من أن نقاط نهاية النماذج الخاصة بك، وبيانات اعتماد المصادقة، وشهادات TLS، وتكوين بوابة النماذج مهيأة بشكل صحيح ويمكن الوصول إليها من مجموعة OpenShift المستهدفة. يساعد إجراء عمليات التحقق هذه في تحديد مشكلات الاتصال، وبيانات الاعتماد غير الصالحة، ومشكلات الثقة في الشهادات، وأخطاء التكوين قبل النشر، مما يقلل من حالات فشل التثبيت وجهود استكشاف الأخطاء وإصلاحها.

راجع قائمة التحقق هذه قبل تنفيذ bobctl install لاكتشاف أي تكوينات مفقودة مبكرًا.

اختبار الاتصال بنقاط نهاية النماذج

تأكد من أن مجموعة OpenShift يمكنها الوصول إلى كل نقطة نهاية نموذج قبل نشر أي مكون من مكونات Bob. أنشئ pod تصحيح أخطاء مؤقتًا في فضاء الاسم المستهدف واختبر إمكانية الوصول عبر HTTPS مباشرةً:

# openai_compatible
oc run curl-test --image=curlimages/curl --restart=Never --rm -it -- \
  curl -v https://<model-endpoint>/v1/models

# bedrock
oc run curl-test --image=curlimages/curl --restart=Never --rm -it -- \
  curl -k https://bedrock.<AWS_REGION>.amazonaws.com/foundation-models \
  --aws-sigv4 "aws:amz:${REGION}:bedrock" \
  --user "$AWS_ACCESS_KEY_ID:$AWS_SECRET_ACCESS_KEY"

بالنسبة لنقاط نهاية openai_compatible، اختبر مقابل قيمة base_url من تكوين بوابة النماذج لديك. بالنسبة للبنية التحتية المعزولة عن الشبكة أو الخاصة، هذه هي الطريقة الوحيدة للتحقق من الاتصال نظرًا لعدم وجود إمكانية وصول خارجية بحكم التصميم.

التحقق من المصادقة

تحقق من صحة بيانات الاعتماد قبل تشفيرها كأسرار في config.yaml. تؤدي بيانات الاعتماد غير الصالحة إلى فشل بدء تشغيل خدمة الاستدلال (Inference Service)، غالبًا مع رسالة سجل مبهمة.

  • openai_compatible — اختبر مفتاح API مباشرةً من pod تصحيح الأخطاء:

    curl -s https://<base_url>/v1/models \
      -H "Authorization: Bearer <api_key>" | jq '.data[].id'
  • bedrock — تحقق من قيم AWS_ACCESS_KEY وAWS_SECRET_ACCESS_KEY باستخدام AWS CLI قبل إضافتها إلى config.yaml:

    aws bedrock list-foundation-models --region us-east-1
  • vertex — فك تشفير قيمة GEMINI_CREDENTIALS المشفرة بـ base64 وتأكد من أنها JSON صالح لحساب الخدمة قبل توفيرها:

    base64 -d <<< "$GEMINI_CREDENTIALS" | jq '.type'
    # Expected output: "service_account"

التحقق من شهادات TLS

في حال استخدام ca_cert_pem مع نقطة نهاية openai_compatible، تحقق من صحة الشهادة قبل توفيرها كسر.

تحقق من أن الشهادة مشفرة بصيغة PEM وغير منتهية الصلاحية:

echo "<cert content>" | openssl x509 -noout -dates

تأكد من مطابقة الشهادة لسلسلة CA الخاصة بنقطة النهاية:

openssl s_client -connect <host>:<port> -CAfile ca.pem
تحذير:

يمكن استخدام insecure_skip_verify: true مؤقتًا أثناء تصحيح أخطاء الاتصال الأولي فقط. أزله قبل الانتقال إلى بيئة الإنتاج الفعلية. إذا كان ca_cert_pem يشير إلى متغير بيئة غير موجود في bob.modelGateway.secrets، فستبدأ خدمة الاستدلال بنجاح ولكن سيفشل TLS في وقت الاستدلال.

التحقق من اكتشاف النماذج

تأكد من أن معرف model في كتلة الموفر يتطابق تمامًا مع ما يعرضه الموفر. يؤدي عدم التطابق إلى خطأ 404 أو عدم العثور على النموذج في وقت الاستدلال، وليس عند بدء التشغيل.

بالنسبة لنقاط نهاية openai_compatible، تحقق من معرفات النماذج المتاحة قبل التثبيت:

curl -s https://<base_url>/v1/models \
  -H "Authorization: Bearer <api_key>" | jq '.data[].id'

فحوصات أخطاء التكوين الشائعة

خطأ التكوينالعَرَضالفحص
اسم السر في تكوين النموذج لا يطابق المفتاح في كتلة secrets في config.yamlتفشل المصادقة في وقت الطلب، وليس عند بدء التشغيلقارن كل مرجع env.* في تكوين النموذج بمفاتيح bob.modelGateway.secrets
GEMINI_CREDENTIALS غير مشفر بـ base64يفشل موفر Vertex في تحليل بيانات الاعتماد عند بدء التشغيلشغّل base64 -d <<< "$VALUE" وتأكد من أنه JSON صالح يحتوي على "type": "service_account"
base_url يتضمن / في النهاية أو لاحقة مساريرجع الموفر خطأ 404أزل الشرطات المائلة اللاحقة — تضيف البوابة مسارات مثل /v1/chat/completions بنفسها
تكرار قيم model_name في قائمة modelsسلوك توجيه غير محددتأكد من أن جميع قيم model_name فريدة عبر التكوين
تشغيل bobctl install بدون --model-configبوابة فارغة، لا يوجد استدلالتأكد من تمرير --model-config وإمكانية قراءة الملف في المسار المحدد
متغير البيئة ca_cert_pem محدد في تكوين النموذج ولكنه مفقود من secretsفشل TLS في وقت الاستدلالراجع كل مرجع env.* في تكوين النموذج مقابل كتلة secrets
ما رأيك في هذا الموضوع؟