Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Istio 404 (Bulunamadı) hatası
Istio'da 404 (Bulunamadı) hatasını ayıklamak sinir bozucu olabilir. Bu bilgiler, nerede yanlışlık olabileceğini bulmaya başlamanız için size bir yol gösterecektir.
Joker karakter ağ geçidi çakışması
Joker karakter "*" ana makine değerini kullanan yalnızca bir ağ geçidi tanımı olabilir. Joker karakterli bir ağ geçidi içeren başka bir şey dağıttıysanız istemci çağrıları 404 durumuyla başarısız olur.
Örnek:
$ istioctl get gateways GATEWAY NAME HOSTS NAMESPACE AGE bookinfo-gateway * default 20s httpbin-gateway * default 3s
Bu durumda, çakışan ağ geçitelerinden birini silmeniz veya değiştirmeniz gerekir.
Rotanın başarısız olduğu yeri izleme
Istio, katmanları olan bir soğan (veya belki de bir dev) gibidir. 404 hatasında hata ayıklamanın sistematik bir yolu, hedefle başlayıp dışa doğru çalışmaktır.
Arka uç iş yükü
İş yüküne sidecar'dan erişebildiğinizi doğrulayın:
kubectl exec $WORKLOAD_POD -c istio-proxy -- curl localhost:80/headers
Arka uç yardımcı kapsayıcısı
Hizmet adresinizi ayarlayın ve iş yükü pod'unun IP adresini alın.
SERVICE=httpbin.default.svc.cluster.local:80
POD_IP=$(kubectl get pod $WORKLOAD_POD -o jsonpath='{.status.podIP}')Sidecar üzerinden iş yüküne erişme:
kubectl exec $WORKLOAD_POD -c istio-proxy -- curl -v http://$SERVICE/headers --resolve "$SERVICE:$POD_IP"
Alternatif olarak, Istio mTLS etkinse:
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
Ağ geçidi (veya bir ön uç yardımcı kapsayıcısı)
Hizmete ağ geçidinden erişme:
kubectl -n istio-system exec $GATEWAY_POD -- curl -v http://$SERVICE/header
Alternatif olarak, Istio mTLS etkinse:
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
Eksik analizler
Analytics kullanıcı arayüzünde analizleri görmüyorsanız bunun olası nedenleri şunlar olabilir:
- Apigee alımı birkaç dakika gecikebilir.
- Envoy gRPC erişim günlüğü doğru şekilde yapılandırılmamış
- Envoy, uzak hizmete erişemiyor
- Uzaktan Servis yükleme işlemi başarısız oluyor
Eksik veya hatalı API anahtarı reddedilmiyor
API anahtarı doğrulama işlemi düzgün çalışmıyorsa olası nedenler şunlar olabilir:
Doğrudan proxy
ext-authz yapılandırmasını kontrol edin.
- Dinleyicinin yakalama için yapılandırıldığından emin olun.
-
ext-authzyapılandırmasını kontrol edin.
Geçersiz istekler kontrol ediliyor ve izin veriliyor
- Uzaktan hizmet, açık başarısızlık için yapılandırılmış
- Envoy, RBAC kontrolleri için yapılandırılmamış
Bu sorunları nasıl gidereceğiniz hakkında bilgi edinmek için aşağıdaki Envoy dokümanı konusuna bakın: Harici Yetkilendirme ve failure_mode_allow özelliği hakkında bilgi edinin. Bu özellik, hatalar üzerinde filtrenin davranışını değiştirmenize olanak tanır.
Eksik veya hatalı JWT'nin reddedilmemesi
Bunun olası nedeni, Envoy JWT filtresinin yapılandırılmamış olmasıdır.
Geçerli API anahtarı başarısız oluyor
Olası nedenler
- Envoy, uzak hizmete erişemiyor
- Kimlik bilgileriniz geçerli değil
- Apigee API ürünü hedef ve ortam için yapılandırılmamış
Sorun giderme adımları
Apigee'de API ürününüzü kontrol etme
- Ortamınızda (test ve üretim) etkin mi?
Ürün, Uzak Servisinizle aynı ortama bağlı olmalıdır.
- Erişmek istediğiniz hedefle ilişkili mi?
Apigee uzak hizmet hedefleri bölümünü kontrol edin. Hizmet adının tam nitelikli bir ana makine adı olması gerektiğini unutmayın. Bu bir Istio hizmetiyse ad,
helloworld.default.svc.cluster.localcode> gibi bir şey olur. Bu,defaultad alanındakihelloworldhizmetini temsil eder. - Kaynak yolu, isteğinizle eşleşiyor mu?
/veya/**gibi bir yolun herhangi bir yolla eşleşeceğini unutmayın. Eşleştirme için "*" veya "**" joker karakterlerini de kullanabilirsiniz. - Geliştirici uygulamanız var mı?
API ürününün anahtarlarını kontrol etmek için bir geliştirici uygulamasına bağlı olması gerekir.
İsteğinizi kontrol edin
-
x-api-key headerÖrnek:
curl http://localhost/hello -H "x-api-key: wwTcvmHvQ7Dui2qwj43GlKJAOwmo"
- İyi bir tüketici anahtarı mı kullanıyorsunuz?
Kullandığınız uygulamadaki kimlik bilgilerinin API ürününüz için onaylandığından emin olun.
Uzaktan hizmet günlüklerini kontrol etme
-
debug levelkonumunda günlüğe kaydetme ile Uzak Hizmet'i başlatınKomut satırında
-l debugseçeneğini kullanın. - Hedefinize erişmeyi deneyin ve günlükleri kontrol edin
Günlüklerde aşağıdaki gibi bir satır olup olmadığını kontrol edin:
Resolve api: helloworld.default.svc.cluster.local, path: /hello, scopes: [] Selected: [helloworld] Eliminated: [helloworld2 doesn't match path: /hello]