درحال مشاهده اسناد Apigee Edge هستید.
به
اسناد Apigee X بروید. اطلاعات
خطای Istio 404 (پیدا نشد)
عیبیابی خطای ۴۰۴ (پیدا نشد) در Istio میتواند ناامیدکننده باشد. امیدواریم این کار به شما کمک کند مکانهایی را که ممکن است مشکل داشته باشند پیدا کنید.
تداخل دروازه کارت جوکر
فقط یک تعریف «دروازه» میتواند از مقدار میزبان «*» کارت عام استفاده کند. اگر هر چیز دیگری را که شامل «دروازه» عام باشد مستقر کرده باشید، تماسهای مشتری با وضعیت ۴۰۴ ناموفق خواهد بود.
مثال:
$ istioctl get gateways GATEWAY NAME HOSTS NAMESPACE AGE bookinfo-gateway * default 20s httpbin-gateway * default 3s
اگر اینطور است، باید یکی از دروازههای متعارض را حذف یا تغییر دهید.
ردیابی کنید که مسیر در کجا با مشکل مواجه میشود
Istio مثل پیاز (یا شاید غول) لایهلایه است. روش سیستماتیک برای اشکالزدایی خطای ۴۰۴ این است که از هدف بهسمت بیرون کار کنید.
بار کاری زیرینه
تأیید کنید که میتوانید از سایدکار به حجم کار دسترسی داشته باشید:
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
تجزیهوتحلیلها وجود ندارد
اگر Analytics را در «میانای کاربری Analytics» نمیبینید، این دلایل احتمالی را درنظر بگیرید:
- دریافت Apigee ممکن است چند دقیقه تأخیر داشته باشد
- گزارش دسترسی Envoy gRPC بهدرستی پیکربندی نشده است
- Envoy نمیتواند به «سرویس از دور» دسترسی پیدا کند
- «سرویس از دور» درحال بارگذاری ناموفق است
کلید میانای برنامهسازی کاربردی ناموجود یا بد رد نمیشود
اگر اعتبارسنجی کلید API بهدرستی کار نمیکند، این دلایل احتمالی را درنظر بگیرید:
کارگزار نیابتی مستقیم
پیکربندی ext-authz را بررسی کنید.
- مطمئن شوید شنونده برای رهگیری پیکربندی شده باشد.
- پیکربندی
ext-authzرا بررسی کنید.
درحال بررسی و مجاز کردن درخواستهای نامعتبر
- «سرویس از دور» برای باز کردن درصورت خرابی پیکربندی شده است
- Envoy برای بررسیهای RBAC پیکربندی نشده است
برای کسب اطلاعات درباره نحوه رسیدگی به این مشکلات، به موضوع زیر در مستندات Envoy مراجعه کنید: صدور مجوز خارجی،
و به اطلاعات مربوط به دارایی failure_mode_allow مراجعه کنید. این دارایی
به شما امکان میدهد رفتار فیلتر را درصورت بروز خطا تغییر دهید.
JWT ناموجود یا بد رد نمیشود
علت احتمالی این است که فیلتر Envoy JWT پیکربندی نشده است.
کلید میانای برنامهسازی کاربردی معتبر ناموفق است
علل احتمالی
- Envoy نمیتواند به سرویس از دور دسترسی پیدا کند
- اطلاعات اعتباری شما معتبر نیست
- «محصول میانای برنامهسازی کاربردی Apigee» برای هدف و محیط پیکربندی نشده است
مراحل عیبیابی
«محصول API» خود را در Apigee بررسی کنید
- آیا برای محیط شما (آزمایشی دربرابر تولید) فعال است؟
محصول باید با محیط «خدمات از دور» شما یکسان باشد.
- آیا به هدفی که به آن دسترسی دارید محدود شده است؟
بخش هدفهای سرویس از دور Apigee را بررسی کنید. بهخاطر داشته باشید که نام سرویس باید نام میزبان کاملاً واجدشرایط باشد. اگر سرویس Istio باشد، نام آن چیزی شبیه به
helloworld.default.svc.cluster.localcode> خواهد بود - که نشاندهنده سرویسhelloworldدر فضای نامdefaultاست. - آیا «مسیر منبع» با درخواست شما مطابقت دارد؟
بهخاطر داشته باشید که مسیری مثل
/یا/**با هر مسیری مطابقت خواهد داشت. همچنین میتوانید از نویسههای عام «*» یا «**» برای مطابقت استفاده کنید. - آیا «برنامه توسعهدهنده» دارید؟
«محصول API» باید به «برنامه توسعهدهنده» پیوند داده شود تا کلیدهای آن بررسی شود.
بررسی درخواست
- آیا «کلید مصرفکننده» را در
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]