أنت تعرض مستندات 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
.
- تأكد من ضبط المستمع للاعتراض.
- تحقَّق من إعدادات
ext-authz
.
يتم التحقّق من الطلبات غير الصالحة والسماح بها
- تم ضبط الخدمة عن بُعد على عدم الفتح
- لم يتم ضبط Envoy لعمليات تحقّق RBAC
للحصول على معلومات عن كيفية معالجة هذه المشاكل، راجِع مستندات Envoy التالية.
topic: تفويض خارجي،
وارجع إلى المعلومات المتعلقة بالسمة failure_mode_allow
. هذا الموقع
تغيير طريقة عمل الفلتر في حال الأخطاء
عدم رفض JWT مفقود أو غير صالح
السبب المحتمل هو عدم تهيئة فلتر Envoy JWT.
تعذُّر استخدام مفتاح واجهة برمجة تطبيقات صالح
الأسباب المحتملة
- يتعذّر على Envoy الوصول إلى الخدمة البعيدة.
- بيانات الاعتماد غير صالحة
- لم يتم إعداد منتج Apigee API للاستخدام في بيئة الاستهداف والبيئة.
خطوات تحديد المشاكل وحلّها
التحقّق من منتج واجهة برمجة التطبيقات على Apigee
- هل هي متوافقة مع بيئتك (الاختبار مقابل الإنتاج)؟
يجب ربط المنتج بالبيئة نفسها التي تتصل بها الخدمة عن بُعد.
- هل مرتبطة بالهدف الذي تصل إليه؟
راجِع قسم أهداف خدمة Apigee عن بُعد. تذكر أن اسم الخدمة يجب أن يكون اسم مضيف مؤهل بالكامل. إذا كانت خدمة Istio، سيظهر الاسم على النحو التالي:
helloworld.default.svc.cluster.local
code> - الذي يمثّل خدمةhelloworld
في مساحة الاسمdefault
. - هل يتطابق مسار المورد مع طلبك؟
تجدر الإشارة إلى أنّ مسارًا مثل
/
أو/**
سيطابق أي مسار. يمكنك أيضًا استخدام "*" أو "**" أحرف البدل للمطابقة. - هل لديك تطبيق مطوِّر؟
يجب ربط منتج واجهة برمجة التطبيقات بأحد "تطبيقات المطوّرين" للتحقّق من مفاتيحه.
التحقّق من طلبك
- هل تم استخدام مفتاح العميل في
x-api-key header
؟مثال:
curl http://localhost/hello -H "x-api-key: wwTcvmHvQ7Dui2qwj43GlKJAOwmo"
- هل تستخدم مفتاح عميل جيدًا؟
تأكَّد من أنّ بيانات الاعتماد من التطبيق الذي تستخدمه موافَق عليها لمنتج واجهة برمجة التطبيقات الخاص بك.
التحقّق من سجلّات "الخدمة عن بُعد"
- بدء الخدمة عن بُعد من خلال تسجيل الدخول في
debug level
. راجِع ضبط مستويات سجلّ الخدمة عن بُعد.استخدِم الخيار
-l debug
في سطر الأوامر. على سبيل المثال:apigee-remote-service-envoy -l debug
- محاولة الوصول إلى هدفك والتحقّق من السجلات
تحقق من السجلات بحثًا عن سطر يبدو على النحو التالي:
Resolve api: helloworld.default.svc.cluster.local, path: /hello, scopes: [] Selected: [helloworld] Eliminated: [helloworld2 doesn't match path: /hello]
debug
- وضع التسجيل الأكثر تفصيلاًinfo
- الإعداد التلقائيwarn
error
- وضع التسجيل الأقل تفصيلاً
إعداد مستويات سجل الخدمة عن بُعد
باستخدام علامة سطر الأوامر، يمكنك بدء الخدمة عن بُعد في إحدى خطوات تصحيح الأخطاء التالية:
الأوضاع، بترتيب الإسهاب، حيث يكون debug
بأكبر قدر من الإسهاب وerror
أقل:
على سبيل المثال، لبدء الخدمة على مستوى debug
:
apigee-remote-service-envoy -l debug