تحديد المشاكل وحلّها

أنت تعرض مستندات Apigee Edge.
انتقل إلى مستندات Apigee X.
معلومات

خطأ Istio 404 (لم يتم العثور عليه)

قد يكون تصحيح الأخطاء المتعلّقة بالخطأ 404 (لم يتم العثور عليها) على Istio محبطًا. نأمل أن يمنحك هذا لبدء تعقب الأخطاء التي قد تحدث.

تعارض مدخل أحرف البدل

يمكن أن يكون هناك تعريف واحد فقط للمدخل يستخدم حرف بدل "*". القيمة المضيفة. إذا كنت ونشر أي شيء آخر يتضمن مدخل حرف البدل، فستفشل مكالمات العميل مع حالة 404.

مثال:

$ istioctl get gateways
GATEWAY NAME         HOSTS     NAMESPACE   AGE
bookinfo-gateway     *         default     20s
httpbin-gateway      *         default     3s

في هذه الحالة، يجب حذف أو تغيير إحدى المداخل المتعارضة.

تتبُّع أماكن تعذُّر المسار

يشبه الإستواء البصل (أو ربما الغول)، ويحتوي على طبقات. طريقة منهجية لتصحيح الأخطاء الرمز 404 هو العمل بعيدًا عن الهدف.

عبء العمل في الخلفية

تأكَّد من إمكانية وصولك إلى عبء العمل من السيارة الجانبية:

kubectl exec $WORKLOAD_POD -c istio-proxy -- curl localhost:80/headers

السيارة الخلفية

يمكنك ضبط عنوان الخدمة والحصول على عنوان IP للوحة أحمال العمل.

SERVICE=httpbin.default.svc.cluster.local:80
  POD_IP=$(kubectl get pod $WORKLOAD_POD -o jsonpath='{.status.podIP}')

الوصول إلى عبء العمل من خلال السيارة الجانبية:

kubectl exec $WORKLOAD_POD -c istio-proxy -- curl -v http://$SERVICE/headers --resolve "$SERVICE:$POD_IP"

أو في حال تفعيل Istio mTLS:

kubectl exec $WORKLOAD_POD -c istio-proxy -- curl -v https://$SERVICE/headers --resolve "$SERVICE:$POD_IP" --key /etc/certs/key.pem --cert /etc/certs/cert-chain.pem --cacert /etc/certs/root-cert.pem --insecure

البوابة (أو واجهة أمامية جانبية)

الوصول إلى الخدمة من البوابة:

kubectl -n istio-system exec $GATEWAY_POD -- curl -v http://$SERVICE/header

أو في حال تفعيل Istio mTLS:

kubectl -n istio-system exec $GATEWAY_POD -- curl -v https://$SERVICE/headers --key /etc/certs/key.pem --cert /etc/certs/cert-chain.pem --cacert /etc/certs/root-cert.pem --insecure

الإحصاءات غير متوفرة

إذا لم تظهر لك الإحصاءات في واجهة مستخدم "إحصاءات Google"، ننصحك بالاطّلاع على الأسباب المحتملة التالية:

  • يمكن أن يتأخر استهلاك Apigee لبضع دقائق
  • لم يتم إعداد سجلّ الوصول إلى gRPC في Envoy بشكل صحيح
  • لا يمكن لـ Envoy الوصول إلى الخدمة عن بُعد
  • تعذُّر التحميل من خلال الخدمة عن بُعد

عدم رفض مفتاح واجهة برمجة تطبيقات مفقود أو غير صالح

إذا لم يتم التحقّق من صحة مفتاح واجهة برمجة التطبيقات بشكل صحيح، ننصحك بأخذ الأسباب التالية في الاعتبار:

الخادم الوكيل المباشر

تحقَّق من إعدادات ext-authz.

Sidecar
  • تأكد من ضبط المستمع للاعتراض.
  • تحقَّق من إعدادات ext-authz.

يتم التحقّق من الطلبات غير الصالحة والسماح بها

  • تم ضبط الخدمة عن بُعد على عدم الفتح
  • لم يتم ضبط Envoy لعمليات تحقّق RBAC

للحصول على معلومات عن كيفية معالجة هذه المشاكل، راجِع مستندات Envoy التالية. topic: تفويض خارجي، وارجع إلى المعلومات المتعلقة بالسمة failure_mode_allow. هذا الموقع تغيير طريقة عمل الفلتر في حال الأخطاء

عدم رفض JWT مفقود أو غير صالح

السبب المحتمل هو عدم تهيئة فلتر Envoy JWT.

تعذُّر استخدام مفتاح واجهة برمجة تطبيقات صالح

الأسباب المحتملة

  • يتعذّر على Envoy الوصول إلى الخدمة البعيدة.
  • بيانات الاعتماد غير صالحة
  • لم يتم إعداد منتج Apigee API للاستخدام في بيئة الاستهداف والبيئة.

خطوات تحديد المشاكل وحلّها

التحقّق من منتج واجهة برمجة التطبيقات على Apigee

  • هل هي متوافقة مع بيئتك (الاختبار مقابل الإنتاج)؟

    يجب ربط المنتج بالبيئة نفسها التي تتوفّر فيها الخدمة عن بُعد.

  • هل مرتبطة بالهدف الذي تصل إليه؟

    راجِع قسم أهداف خدمة Apigee عن بُعد. تذكر أن اسم الخدمة يجب أن يكون اسم مضيف مؤهل بالكامل. إذا كانت خدمة Istio، سيظهر الاسم على النحو التالي: helloworld.default.svc.cluster.localcode> - الذي يمثّل خدمة helloworld في مساحة الاسم default.

  • هل يتطابق مسار المورد مع طلبك؟

    تجدر الإشارة إلى أنّ مسارًا مثل / أو /** سيطابق أي مسار. يمكنك أيضًا استخدام "*" أو "**" أحرف البدل للمطابقة.

  • هل لديك تطبيق مطوِّر؟

    يجب ربط منتج واجهة برمجة التطبيقات بأحد "تطبيقات المطوّرين" للتحقّق من مفاتيحه.

التحقّق من طلبك

  • هل تم استخدام مفتاح العميل في x-api-key header؟

    مثال:

    curl http://localhost/hello -H "x-api-key: wwTcvmHvQ7Dui2qwj43GlKJAOwmo"
  • هل تستخدم مفتاح عميل جيدًا؟

    تأكَّد من أنّ بيانات الاعتماد من التطبيق الذي تستخدمه موافَق عليها لمنتج واجهة برمجة التطبيقات الخاص بك.

التحقّق من سجلّات "الخدمة عن بُعد"

  • بدء الخدمة عن بُعد من خلال التسجيل في debug level

    استخدِم الخيار -l debug في سطر الأوامر.

  • محاولة الوصول إلى هدفك والتحقّق من السجلات

    تحقق من السجلات بحثًا عن سطر يبدو على النحو التالي:

    Resolve api: helloworld.default.svc.cluster.local, path: /hello, scopes: []
    Selected: [helloworld]
    Eliminated: [helloworld2 doesn't match path: /hello]